PostgreSQL 實例安裝完,哪些配置參數(shù)需要調(diào)整?
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在本教程中,我們將回顧一些有助于 PostgreSQL 調(diào)優(yōu)的不同的 GUC(全局統(tǒng)一配置)參數(shù)。這些參數(shù)位于 postgresql.conf 文件( shared_buffers (integer)shared_buffers 參數(shù)確定專用于服務(wù)器緩存數(shù)據(jù)的內(nèi)存量。該參數(shù)在 postgresql.conf 文件中設(shè)置的默認值為:
該值應(yīng)設(shè)置為機器總內(nèi)存的 15% 到 25%。例如,如果您的機器內(nèi)存大小為 32 GB,則 shared_buffers 的建議值為 8 GB。 更改此參數(shù)后,需要重新啟動服務(wù)器。 work_mem (integer)work_mem 參數(shù)實質(zhì)上提供了內(nèi)部排序操作和哈希表在寫入臨時的磁盤文件之前要使用的內(nèi)存量。排序操作用于 ORDER BY、DISTINCT 和 MERGE JOIN 操作。哈希表用于哈希連接和基于哈希的聚合。 該參數(shù)在 postgresql.conf 文件中設(shè)置的默認值為:
設(shè)置正確的 work_mem 參數(shù)值可以減少磁盤交換,從而大大加快查詢速度。 我們可以使用下面公式,來計算數(shù)據(jù)庫服務(wù)器的 work_mem 值:
max_connections 也是一個 GUC 參數(shù),它用于指定與數(shù)據(jù)庫服務(wù)器的最大并發(fā)連接數(shù)。默認情況下,該值設(shè)置為 100 個連接。 我們也可以直接給一個角色設(shè)置 work_mem 參數(shù)值:
autovacuum默認情況下,該 GUC 參數(shù)在 postgresql.conf 文件中處于啟用狀態(tài),建議采用此設(shè)置。如果該參數(shù)設(shè)置為 off,則服務(wù)器中不會進行自動清理,但是在禁用的情況下,系統(tǒng)還是會啟動 autovacuum 進程,以防止事務(wù) ID 回卷。 在 postgresql.conf 文件中更改此參數(shù)值后,需要重新啟動數(shù)據(jù)庫服務(wù)器。 其他與 autovacuum 相關(guān)的 GUC 參數(shù)包括: autovacuum_max_workers該參數(shù)可設(shè)置會并行運行的 autovacuum 工作進程數(shù)。默認情況下,它是 3。如果存在大量具有頻繁更新或刪除操作的表,則需要將該值設(shè)置得更高。 autovacuum_naptime該參數(shù)指定在任何給定數(shù)據(jù)庫上調(diào)度 autovacuum 運行之間的最小延遲。默認值為 1 分鐘。如果有 60 個數(shù)據(jù)庫,則必須每秒啟動一次 autovacuum 進程。在這種情況下,建議增加該值,以便 autovacuum 不會太頻繁地啟動。 autovacuum_vacuum_threshold該參數(shù)指定在任何一個表中觸發(fā) VACUUM 所需的最少更新或刪除的元組數(shù)。默認值為 50 個元組,這對于很多表來說是非常低的。 autovacuum_analyze_threshold該參數(shù)指定在任何一個表中觸發(fā) ANALYZE 所需的插入、更新或刪除的元組的最少數(shù)量。默認值為 50 個元組,這對于很多表來說是非常低的。 autovacuum_vacuum_scale_factor該參數(shù)指定對一個表啟動 autovacuum 進程所需更改的表的百分比。默認值為 0.2(即表大小的 20%),autovacuum_analyze_scale_factor 為 0.1(即 10%)。該值適用于小型表,但如果表的大小較大(比如 150 GB),則在 autovacuum 進程啟動之前將有 30 GB 的死元組。但是,如果有少量的大型表,那么我們可以在表級別進行設(shè)置,而不是修改 postgresql.conf 文件:
有關(guān)其他的 autovacuum 參數(shù),請參閱 PostgreSQL 在線文檔。 effective_cache_sizeeffective_cache_size 參數(shù)用來估計在數(shù)據(jù)庫系統(tǒng)中可被操作系統(tǒng)用于磁盤緩存的內(nèi)存量。PostgreSQL 查詢規(guī)劃器會決定它是否能放入內(nèi)存中。較高的值更有可能采用索引掃描,否則如果該值較低,則將使用順序掃描。 建議將 effective_cache_size 設(shè)置為機器總內(nèi)存的 50%。 max_parallel_workermax_parallel_worker 參數(shù)指定要執(zhí)行并行操作的最大工作進程數(shù),這還取決于 GUC 參數(shù) max_worker_processes 中指定的值,它指定了系統(tǒng)可以支持的最大后臺進程數(shù);默認值為 8。 maintenance_work_mem (integer)maintenance_work_mem 參數(shù)實質(zhì)上提供了維護操作可使用的最大內(nèi)存量,如 VACUUM、CREATE INDEX、ALTER TABLE 和添加外鍵操作等。該參數(shù)在 postgresql.conf 文件中設(shè)置的默認值為:
建議將該值設(shè)置為高于 work_mem,這樣可能會提高 vacuum 操作的性能。一般來說,它應(yīng)該是:
有關(guān)更多詳細信息,請參閱 PostgreSQL 調(diào)優(yōu)的 wiki 頁面。 該文章在 2024/12/4 17:30:27 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |