PostgreSQL 性能优化 1. 硬件 数据库最重要的就是 I/O 了。所以一切从 I/O 开始。 RAID: 这个基本不用说,数据库放 RAID10 上面,只读的备份数据库可以放 RAID0,反正挂了没关系。谨记:数据库是Random Read RAID 卡的选择: RAID 卡一定要带电池的才可以(BBU)有电源的才能做到东西写进 CACHE,RAID 就返回硬盘写成功(不用等) 1. Areca 2. LSI (真正的LSI,re-brand 不要) 3. HP P400 以上系列 硬盘选择: 首选是SAS: 15K RPM 每个 SAS 大约能提供 25MB/s 的Random Write。也就是说在RAID10 的设定下,如果需要50MB/s 的Random Write 就需要4个硬盘 节俭选择是: SATA 可以多用几个硬盘(SAS 一倍数量)达到在 RAID10 中接近 SAS 的速度。就算 SATA 买 SAS 一倍的数量,价格仍然比 SAS 便宜。 也可以买 产品: 例如 Compaq 的 MSA 70 (P800 Battery backed RAID control) CPU:64 位 Cache:越大越好 (现在个人电脑都 3M 的cache 了) CORE:越多 越好 (postgresql 毕竟是跑 cpu 的)建议最少 4 个 core RAM: 最少 4G。通常根据具体需求,用 16-64G 的RAM 2. OS (系统) 可用系统: 1. Debian Stable 2. CentOS 3. Ubuntu LTS 4. Red Hat 5. SUSE Enterprise 如果准备付费(服务),那么就是 Canonical, Novell 跟 Redhat 这三家选择而已 如果准备不买任何服务,可以用Debian, CentOS, Ubuntu LTS 这里还是觉得系统用Red Hat (不付费就CentOS)毕竟人家是企业级的老大哥,错不了。 * 现在 CentOS 也可以买到服务了。 不可用系统: 例如 fedora (redhat QA) ubuntu (non-LTS) Scheduler: Grub 增加: elevator=deadline redhat 的图标可以看出,deadline 是数据库的最佳选择 文件系统 (Filesystem) 这里的选择是:ext2,ext3 跟 ext4。 为什么只考虑这几个呢?因为数据库还是稳定第一,内核开发人员所做的文件系统,理论上说出问题的情况会少点。 WAL: 放 ext2 因为 WAL 本身自己有 Journal 了,不需要用ext3 (ext2 快很多) data: ext3 Block Size: postgres 自己是8k 的block size。所以文件系统也用8k 的 block size。这样才能最佳的提高系统的效能。 ext4:出来时间还 不够长,不考虑。 分区 (Partitioning) Postgres 跟系统 OS 应该在不...