postgresql优化和维护.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
postgresql优化和维护

1. 硬件数据库最重要的就是 I/O了。所以一切从I/O开始。RAID: 这个基本不用说,数据库放RAID10上面,只读的备份数据库可以放RAID0,反正挂了没关系。谨记:数据库是Random Read注意的是硬盘外圈要比内圈快,所以跟linux 建立swap的原理一样,尽力把数据库的东西放在硬盘的外圈(前端)直接在fdisk的时候就做好。同时有个省钱方法,因为硬盘的外围速度远远快于内圈的 速度,所以选择一个1 T的SATA硬盘,然后只用外圈的100G,其他的不用,这样的话,速度要比单买一个100G的SAS还快。RAID卡的选择:RAID卡一定要带电池的才可以(BBU)有电源的才能做到东西写进 CACHE,RAID就返回硬盘写成功(不用等)1. Areca2. 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个coreRAM: 最少4G。通常根据具体需求,用16-64G的RAM2. OS (系统)可用系统:1. Debian Stable2. CentOS3. Ubuntu LTS4. Red Hat5. SUSE Enterprise如果准备付费(服务),那么就是 Canonical, Novell 跟 Redhat这三家选择而已如果准备不买任何服务,可以用Debian, CentOS, Ubuntu LTS这里还是觉得系统用Red Hat (不付费就CentOS)毕竟人家是企业级的老大哥,错不了。* 现在CentOS也可以买到服务了。不可用系统: 例如 fedora (redhat QA) ubuntu (non-LTS)Scheduler:Grub 增加: elevator=deadlineredhat 的图标可以看出,deadline是数据库的最佳选择文件系统 (Filesystem)这里的选择是:ext2,ext3 跟 ext4。 为什么只考虑这几个呢?因为数据库还是稳定第一,内核开发人员所做的文件系统,理论上说出问题的情况会少点。WAL: 放ext2?因为WAL本身自己有Journal了,不需要用ext3 (ext2快很多)data: ext3Block Size: postgres自己是8k的block size。所以文件系统也用8k的 block size。这样才能最佳的提高系统的效能。ext4:出来时间还 不够长,不考虑。分区 (Partitioning)Postgres 跟系统 OS 应该在不同分区系统(OS):系统应该放独立的RAID1数据库 (Postgres Data):数据库应该放独立的RAID10上。 如果RAID是带电池的,mount 的时候给 data=writeback的选项独立的数据库分区,就不许要记录文件时间了(都是放数据的)所以mount的时候要给noatime的 选项,这样可以节约更新时间(timestamp)的I/O了。WAL日志(xlogs): 独立的RAID1上 (EXT2 系统)日志是 Sequential write,所以普通的硬盘(SATA)速度就足够了,没有必要浪费SAS在log上Postgresql 日志(logs):直接丢给syslog就可以。最好在syslog.conf中设定单独的文件名. 这里 例如用local2来做postgresqllocal2.* -/var/log/postgres/postgres.log记得log要给Async,这样才不会等卡在log的I/O上, 同时记得设定logrotate以及创建路径(path)ext2 VS ext3 性能测试:HP DL5854 Dual Core 8222 processors64GB RAM(2) MSA70 direct attached storage arrays.25 spindles in each array (RAID 10)HP P800 Controller6 Disk in RAID 10 on embedded controllerxlog with ext

您可能关注的文档

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档