PostgreSQL配置優化

2021-07-12 07:19:24 字數 2799 閱讀 2380

作業系統

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 ...