postgresql效能最佳化外掛程式——pgfincore

來源:互聯網
上載者:User

本文來自:http://blog.csdn.net/lengzijian/article/details/8252270

 

這不想過多講解pgfincore的安裝和使用,只想記錄下使用心得,如果讀者向讀到更多內容,請查看一下內容:

use posix_fadvise pre-cache frequency data

http://blog.163.com/digoal@126/blog/static/163877040201062944945126/

a powerful upgrade from pgfincore 1.0

http://blog.163.com/digoal@126/blog/static/1638770402011630102117658/

實際使用

http://blog.163.com/digoal@126/blog/static/163877040201221382150858/

 

就像德哥說的一樣,當資料庫啟動時,資料庫是冷資料,開始的每一次查詢都要到磁碟去讀取,然後寫入資料庫緩衝。如果當資料庫啟動時,就有大量的資料庫訪問,可能造成資料庫堵死。

這時,我們就需要一種工具能夠直接把磁碟內容刷到記憶體,而記憶體又不佔用pg的buffer,pgfincore剛好做到這這一點,它不依賴於pg設定檔中對buffer的限制,因為它使用的記憶體是OS記憶體。

 

看了很多人的文章,據說是使用該工具,使整個系統的效能提高了幾十倍,包括在德哥的blog中寫道,查詢速度從12.96毫秒降到0.45毫秒。

 

看到這裡可能會心花怒放,恨不得趕快把這工具應用於自己的系統當中,我也是這樣;

 

在我的系統中遇見一個問題,語句的查詢速度最佳化後也停留在50ms左右(需求問題),本以為問題能夠得到解決,但是後來才發現,我誤解了其中的很多道理。

 

至今一直不理解這樣的問題,把所有資料寫到記憶體中,有沒有類似的索引查詢,還是在記憶體中順序尋找?

在我的系統中,我把表和索引都通過pgfadvise_willneed函數,添加到記憶體當中,但是執行效率沒有任何提升。

也許是我哪裡用錯的緣故,後來想了想,可能我的語句中大部分是>=和 <=這類操作導致的。

 

於是我自己建了一張表,只有一個id和一個日期,其中有100萬資料;

當不建索引時,首次查詢時間為460ms,當用pgfincore時,首次查詢耗時182ms。

當建立索引,首次查詢11ms,當用pgfincore時,同樣11ms。

這裡先留空,等有空測試多進程

 

首先用pgbench壓了下資料庫

使用和不適用pgfincore時,查詢速度都是11ms左右。

 

後來想了想原因,可能是資料庫本身緩衝的資訊,所以用重啟資料庫的方式繼續測了一遍:

不用pgfincore時,查詢速度是38ms;

使用pgfincore時,查詢速度是11ms;

 

這進一步印證的我的猜想。

 

可以說明一點,pgfincore並不是所有情況下都會提高資料庫讀效能,目前,我所理解的是:當資料庫重啟時,或者資料庫記憶體中還沒有大量快取資料時,用pgfincore可以提高几倍的效能。希望不要盲目使用。

 

還有一點pgfincore寫入記憶體並非永久寫入,如果讀寫頻率較大,os記憶體也是會被替換掉的。(所以某些情境反而不適合用pgfincore)

如果想要永久寫入記憶體請參考德哥文章:把檔案永久cache到記憶體的工具filecache

 

 

http://blog.163.com/digoal@126/blog/static/16387704020122198214650/

 

 

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.