簡體   English   中英

PostgreSQL 9.1上的SELECT性能問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM