2
我正在一个速度较慢的旧计算机上运行postgres服务器,该计算机具有一个快速SSD磁盘,2,4 GHz i5处理器和8 GB的RAM。电脑不是速度怪物,但我对这个表现感到惊讶。在具有40,000,000行的表中创建索引需要大约半个小时。我的设置如下:Postgres:CPU绑定创建索引
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绑定...你可以调整的不多。 – joanolo
是一个计算成本很高的索引?这将解释它。也许你可以显示CREATE INDEX语句。如果增加'maintenance_work_mem',它会变得更快吗? –
我会用'maintenance_work_mem'来检查。创建很简单,'CREATE INDEX index_name on name(varcharField);' – wczekalski