2017-02-27 64 views
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,我希望它使用更多。

我將在首次數據導入期間爲每個表只創建一次索引。有沒有我可以調整的設置來加速此操作?

+0

如果你是CPU綁定...你可以調整的不多。 – joanolo

+1

是一個計算成本很高的索引?這將解釋它。也許你可以顯示CREATE INDEX語句。如果增加'maintenance_work_mem',它會變得更快嗎? –

+0

我會用'maintenance_work_mem'來檢查。創建很簡單,'CREATE INDEX index_name on name(varcharField);' – wczekalski

回答

1

在將maintenance_work_mem增加到1GB並使用C區域設置初始化數據庫羣集(而不是我的系統上的一個默認值)後,只花了2分鐘。