[url]
測試工具
工具名稱 pgbench
資料量 200w(整個資料庫大小約為300m)
模擬客戶端數 4
執行緒數 4
測試時間 60秒
準備命令:pgbench -i -s 20 pgbenchdb
測試命令:pgbench -r -j4 -c4 -t60 testdb
配置檔案
預設的配置配置檔案是儲存在/etc/postgresql/version/main目錄下的postgresql.conf檔案
如果想檢視引數修改是否生效,可以用psql連線到資料庫後,用managing kernel resources
主要選項
選項 預設值 說明 是否優化 原因
max_connections 100 允許客戶端連線的最大數目 否 因為在測試的過程中,100個連線已經足夠
fsync on 強制把資料同步更新到磁碟 是 因為系統的io壓力很大,為了更好的測試其他配置的影響,把改引數改為off
shared_buffers 24mb 決定有多少記憶體可以被postgresql用於快取資料(推薦記憶體的1/4) 是 在io壓力很大的情況下,提高該值可以減少io
work_mem 1mb 使內部排序和一些複雜的查詢都在這個buffer中完成 是 有助提高排序等操作的速度,並且減低io
effective_cache_size 128mb 優化器假設乙個查詢可以用的最大記憶體,和shared_buffers無關(推薦記憶體的1/2) 是 設定稍大,優化器更傾向使用索引掃瞄而不是順序掃瞄
maintenance_work_mem 16mb 這裡定義的記憶體只是被vacuum等耗費資源較多的命令呼叫時使用 是 把該值調大,能加快命令的執行
wal_buffer 768kb 日誌快取區的大小 是 可以降低io,如果遇上比較多的並發短事務,應該和commit_delay一起用
checkpoint_segments 3 設定wal log的最大數量數(乙個log的大小為16m) 是 預設的48m的快取是乙個嚴重的瓶頸,基本上都要設定為10以上
checkpoint_completion_target 0.5 表示checkpoint的完成時間要在兩個checkpoint間隔時間的n%內完成 是 能降低平均寫入的開銷
commit_delay 0 事務提交後,日誌寫到wal log上到wal_buffer寫入到磁碟的時間間隔。需要配合commit_sibling 是 能夠一次寫入多個事務,減少io,提高效能
commit_siblings 5 設定觸發commit_delay的併發事務數,根據併發事務多少來配置 是 減少io,提高效能
測試資料
測試的資料是執行3次,取平均值。
關閉fsync是為了更好的體現出其他引數對postgresql的影響。
引數 修改值 事務總數 tps(包括建立連線) tps(不包括建立連線)
預設設定
8464 140.999792 141.016182
fsync off 92571 1479.969755 1480.163355
shared_buffers 1gb 100055 1635.759275 1635.977823
work_mem 10mb 101209 1665.804812 1666.04082
effective_cache_size 2gb 98209 1636.733152 1636.970271
maintenance_work_mem 512mb 92930 1548.029233 1548.223108
checkpoint_segments 32 195982 3265.995 3266.471064
checkpoint_completion_target 0.9 194390 3239.406493 3239.842596
wal_buffer 8mb 198639 3310.241458 3310.724067
恢復fsync off 11157 185.883542 185.909849
commit_delay && commit_siblings 10 && 4 11229 187.103538 187.131747
總結事務總數 tps(包括建立連線) tps(不包括建立連線)
優化前 8464 140.999792 141.016182
優化後(fsync=on) 11229 187.103538 187.131747
優化後(fsync=off) 198639 3310.241458 3310.724067
在fsync開啟的情況下,優化後效能能夠提公升30%左右。因為有部分優化選項在預設的sql測試語句中沒有體現出它的優勢,如果到實際測試中,提 公升應該不止30%。 測試的過程中,主要的瓶頸就在系統的io,如果需要減少io的負荷,最直接的方法就是把fsync關閉,但是這樣就會在掉電的情況下,可能會丟失部分數 據。
PostgreSQL配置優化
作業系統 ubuntu13.04 系統位數 64cpu intel r core tm 2 duo cpu 記憶體4g 硬碟seagate st2000dm001 1ch164 測試工具 postgresql 9.1.11 工具名稱 pgbench 資料量200w 整個資料庫大小約為300m 模擬客...
postgresql 日誌配置
log destination csvlog csv模式輸出 logging collector on 收集日誌開啟 log directory pg log 輸出日期的陌路 log filename postgresql u.log 輸出的檔名加星期格式 log truncate on rotat...
postgresql基礎配置
原文 1安裝postgresql yum install postgresql server 2建立資料庫 createdb mydb 如果出現以下錯誤 createdb 無法聯接到資料庫 postgres 無法聯接到伺服器 沒有那個檔案或目錄伺服器是否在本地執行並且在 unix 域套接字 tmp ...