我有一台Windows Server 2003机器,我将用作Postgres数据库服务器,该机器是双核3.0Ghz Xeon,带有4 GB ECC内存和4 x 120GB 10K RPM SAS驱动器,全部剥离。
我已经读过默认的Postgres安装配置为在具有32MB RAM的486上运行良好,我已经阅读了几个关于配置优化的网页 - 但希望我的Stackoverflow窥视更具体的东西。
一般情况下,它只服务于1个数据库(可能一个或两个以上),但问题是数据库有1个表,特别是大规模的(数以亿计的记录只有一个几个coloumn)。目前,使用默认配置它并不慢,但我认为它可能更快。
有人可以给我一些指导和建议,以便配置设置你将用于此类服务器。
答案 0 :(得分:5)
4 *剥离驱动器是一个坏主意 - 如果任何此驱动器将失败,那么您将丢失所有数据,甚至SAS驱动器有时会失败 - 使用4个驱动程序它比使用1个驱动器的可能性高4倍;你应该去RAID 1+0。
立即使用最新版本的Postgres,8.3.7;每个主要版本都有许多性能改进。
将shared_buffers
中的postgresql.conf
参数设置为内存的1/4左右。
将effective_cache_size
设置为大约1/2的内存。
将checkpoint_segments
设置为约32(检查点每512MB)和checkpoint_completion_target
设置为约0.8。
将default_statistics_target
设置为约100。
迁移到Enterprise Linux或FreeBSD:Postgres在Unix类型系统上运行得更好 - Windows支持是最近添加的,不是很成熟。
您可以在此页面上阅读更多内容:Tuning Your PostgreSQL Server — PostgreSQL Wiki
答案 1 :(得分:0)
我的经验表明(在极限范围内)硬件通常是数据库性能中最不重要的因素。
假设您有足够的内存来保存缓存中常用的数据,那么您的CPU速度可能会在顶级机器与普通或花园盒之间变化10-50%。
但是,重要搜索中缺少索引或写入错误的递归触发器很容易在响应时间内产生1,000%或10,000%或更多的差异。
如果不确切知道您的表结构和行数,我想任何人都会建议您的硬件看起来足够充分。只有你的数据库结构会杀了你。 :)
更新:
在不知道特定查询和索引详细信息的情况下,我们无法做更多事情。一般来说,即使知道查询,在没有实际安装和运行具有真实数据集的查询的情况下进行优化通常也非常困难。
鉴于服务器的成本以及您的时间成本,我认为您需要在一本书中投入30美元。然后使用测试数据安装数据库,运行查询,看看运行良好以及运行情况如何。修复,冲洗并重复。
这两本书都是特定于SQL Server的,并且都有很高的评分:
http://www.amazon.com/Inside-Microsoft%C2%AE-SQL-Server-2005/dp/0735621969/ref=sr_1_1
http://www.amazon.com/Server-Performance-Tuning-Distilled-Second/dp/B001GAQ53E/ref=sr_1_5