[英]SELECT performance issues on postgresql 9.1
我正在ubuntu 12.04上建立一個大型的postgres 9.1數據庫,其中一個表可容納約8000萬行。 每當我運行SELECT語句時:
SELECT * FROM db WHERE ID=1;
執行查詢僅需2.5分鍾,查詢僅返回幾千行。 在磁盤I / O上運行了一些診斷程序之后,我認為這不是問題,但以防萬一,下面是診斷程序的輸出。 (我有2GB的RAM)我不確定在這里有什么好輸出,但是考慮到互聯網上其他服務器的統計數據,這似乎是個難題。
time sh -c "dd if=/dev/zero of=bigfile bs=8k count=500000 && sync"
500000+0 records in
500000+0 records out
4096000000 bytes (4.1 GB) copied, 106.969 s, 38.3 MB/s
real 1m49.091s
user 0m0.248s
sys 0m9.369s
我已經對postgresql.conf進行了相當大的修改,將有效緩存提高到ram的75%,將共享緩沖區提高到25%,將checkpoint_segments提升到15,將work_mem提升到256MB,在內核上增加了autovacuum,SHMMAX,等等。我的性能有所提高,但不超過好5%。 網絡不應該是一個問題,因為即使在本地主機上運行仍然需要很長時間。 我計划添加更多數據,並且查詢時間似乎隨着行數的增長而迅速增長。
看來我應該能夠在幾秒鍾而不是幾分鍾內運行這些SELECT語句。 關於此瓶頸可能存在的任何建議?
很抱歉,如果這是不可避免的,但是您在ID列上有索引嗎?
同樣,盡管我沒有責怪磁盤,但是您僅測試了順序帶寬,這幾乎沒有告訴您延遲。 盡管我不得不說38 MB / s的速度仍然不盡人意...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.