当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > PostgreSQL Hardware Performance Tuning

Unix/Linux
linux查看内存的大小
在linux下写的代码,用的是utf-8,结果拿到XP下运行的时候,所有的中文都成乱码
linux su和sudo命令的区别
linux cron 下的定时执行工具使用技巧
linux 查找进程及终止进程操作的相关命令
redhat linux 安装 gcc编译器
Linux Mplayer播放各种格式的电影
一起回顾一下linux常用命令
Linux 网站项目发布要做哪些配置
linux SSH配合SecureCRT的密匙完美使用方法
GD 编译出错解决方法
Facebook Open Platform编译FAQ
Linux 系统硬盘 优化
linux 挂载详解
linux crontab定时命令
Linux 系统中确保访问三级域名畅通的方法
Linux 特权帐号VS普通帐号
确保Linux系统安全的前提条件 漏洞防护
Linux 监视系统资源使用率
Red Hat Linux上使用BIND建立DNS服务器

Unix/Linux 中的 PostgreSQL Hardware Performance Tuning


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 44 ::
收藏到网摘: n/a

本文转自 CU 论坛PostgreSQL Hardware Performance Tuning ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1: Postgresql Shared Buffer Cache postgresql.conf --> shared_buffers pg默认配置申请 1000 个 shared buffers, 每个 8k . postgresql 并不直接修改硬盘上的数据,需要的数据被读到 shared buffer cache 中,后台程序修改这些块,最后刷新到硬盘上。 后台程序刷新数据到硬盘的操作其实是请求系统内核来完成对硬盘的修改操作,而 内核对于硬盘的操作其实是先到 kernel disk buffer cache 中的。
2: 多大是太大 将所有的内存都给 shared_buffers 将导致没有内存来运行程序。 unix 管理内存使用 swap, 当没有内存可用的时候,内核会将长时间不用的内存 挪到 swap 去,这个叫:swap pageout,当你再次使用它的时候内核又会将其挪 回来,这个叫:swap pagein,这个操作有很大的不好,因为它会导致你的程序 挂起直到操作完成。 3: cache size 的影响 4: 正确的 Shared Buffer Cache 大小 (1) 它应该足够大来应付通常的表访问操作。 (2) 它应该足够小来避免 swap pagein 的发生。 5:Sort Memory Batch Size postgresql.conf --> sort_mem 当对一个大表或记录集进行排序时,pg将对它们进行部分排序,中间数据结果会 被放在临时文件中。当所有的行都被排序完了后,这些临时文件会被合起来进行 再次排序。增加 batch 的大小可以减少临时文件并且加快排序的速度。如果 sort batch 太大将导致 pagein 。这种情况下,较少的 sort batch 和更多的临 时文件将会使排序更快。这个主要是对 order by, create index, merge join. 6: Cache Size and Sort Size cache size 和 sort size 都影响内存的使用。 记住, cache size 是在 postmaster 启动的时候就申请好的,sort size 的改变是依赖于执行多少个排序。 通常,cache size 比 sort size 更有效果。 一开始调整, 如果你只有一些大的session而有更多的小session: 10% of RAM for cache size 2-4% of RAM for sort size 还有一个很有价值的参数: effective_cache_size。 优化器用这个参数来预估 内核的硬盘 buffer cache. 当内核有 unified buffer cache (统一缓冲), 这个 值将是没被使用的内存的平均值,因为这种内核会使用所有没有使用的内存来作 最近硬盘访问的缓存的;当内核用 fixed-sized disk buffer cache 时,这个参 数应该设成一样的,通常是内存的 10%. 7: Disk Locality (硬盘分区的物理分布位置) 分布在头上的数据的读取很快,连续分布的块的读取比不连贯的快。 8:多个硬盘 设计你的数据库文件如何在硬盘上分布。有点复杂........ 9: 硬盘的缓存 关掉的好,要不突然停电就惨了。当然,你的硬盘有备用电源就不用关了。 hdparm -W0, sysctl hw.ata.wc = 0 10:SCSI vs. IDE 当然是 scsi 好了。 11: 文件系统格式 推荐 BSD 的 UFS/FFS, Linux 就比较惨了,虽然有很多中文件系统,但没有一个 适合的。 12: 多个 CPU 当然好了。但如果只有一个连接,则有点浪费。 13:Ceckpoints postgresql.conf --> checkpoint_segments = 3 如果发现太频繁了,加大。 14: 结论 幸运的是,postgresql不需要太多的调整。很多参数都会被优化器自动调整的。 Cache size 和 sort size 是管理员需要调整的以便更好的使用内存。硬盘访问 可以同交叉分布数据到不同的硬盘上来改善性能,当然,还有scsi 。_________________^^^^^^^^^^^^^^^^^^^^^^^^^^ ============ == 个人观点 == == 权作废话 == ============ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV