【发布时间】:2017-02-27 22:56:26
【问题描述】:
我在一台速度较慢的旧计算机上运行 postgres 服务器,该计算机具有快速 SSD 磁盘、2.4 GHz i5 处理器和 8 GB 内存。计算机不是速度怪物,但我对性能感到惊讶。在具有 40,000,000 行的表中创建索引大约需要半小时。我的设置如下:
max_connections = 2
shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 1GB
maintenance_work_mem = 512MB
min_wal_size = 1GB
max_wal_size = 2GB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
当我查看top 的输出时,看起来我受 CPU 限制(100% CPU),尽管数据库使用的内存约为 500 MB,我希望它会使用更多。
我将在第一次数据导入期间为每个表创建一次索引。我可以调整任何设置来加快此操作吗?
【问题讨论】:
-
如果您受 CPU 限制...没有什么可以调整的了。
-
是一个计算量大的索引吗?这样就可以解释了。也许您可以显示
CREATE INDEX声明。增加maintenance_work_mem会不会变快? -
我会与
maintenance_work_mem核实。创建很简单,CREATE INDEX index_name on name (varcharField); -
@LaurenzAlbe 我应该增加多少
maintenance_work_mem?时间也“无论如何正常”?第一次遇到进步,所以我很难说。
标签: sql performance postgresql