作業系統
ubuntu13.04
系統位數
64cpu
intel(r) core(tm)2 duo cpu
記憶體4g
硬碟seagate st2000dm001-1ch164
測試工具
postgresql-9.1.11
工具名稱
pgbench
資料量200w(整個資料庫大小約為300m)
模擬客戶端數
4執行緒數
4測試時間
60秒
預設的配置配置檔案是儲存在/etc/postgresql/version/main目錄下的postgresql.conf檔案
選項預設值說明
是否優化
原因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,提高效能
引數修改值事務總數
tps(包括建立連線)
tps(不包括建立連線)
預設設定
8464
140.999792
141.016182
fsync
off92571
1479.969755
1480.163355
shared_buffers
1gb100055
1635.759275
1635.977823
work_mem
10mb
101209
1665.804812
1666.04082
effective_cache_size
2gb98209
1636.733152
1636.970271
maintenance_work_mem
512mb
92930
1548.029233
1548.223108
checkpoint_segments
32195982
3265.995
3266.471064
checkpoint_completion_target
0.9194390
3239.406493
3239.842596
wal_buffer
8mb198639
3310.241458
3310.724067
恢復fsync
off11157
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配置優化
url 測試工具 工具名稱 pgbench 資料量 200w 整個資料庫大小約為300m 模擬客戶端數 4 執行緒數 4 測試時間 60秒 準備命令 pgbench i s 20 pgbenchdb 測試命令 pgbench r j4 c4 t60 testdb 配置檔案 預設的配置配置檔案是儲存在...
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 ...