下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 技術開發(fā) > 數據庫 > 詳解PostgreSQL 數據庫 自動Vacuum配置方式

          詳解PostgreSQL 數據庫 自動Vacuum配置方式

          時間:2024-02-07 12:09作者:下載吧人氣:35

          PostgreSQL的Vacuum由于以下原因需要定期執(zhí)行。

          釋放,再利用因更新或者刪除更新而占用的磁盤空間。

          更新PostgreSQL 查詢計劃用的統(tǒng)計數據。

          避免事務ID的重置而引起非常老的數據丟失。

          VACUUM 的標準SQL文的執(zhí)行和其他的對數據庫的實際操作可以并行處理。

          SELECT 、INSERT 、UPDATE 、DELETE 等命令和同通常一樣繼續(xù)能夠執(zhí)行。

          但是,VACUUM處理中的時候, ALTER TABLE ADD COLUMN等等的命令不能夠對表進行重新定義。

          還有,由于執(zhí)行VACUUM 的時候,有大量的I/O操作,其他的操作可能性能比較低,比如查詢的反應非常慢。為了較少對性能的影響,可以通過參數來調整。

          autovacuum (boolean ):

          數據庫服務器是否設置為自動vacuum。默認為 自動vacuum。 但是如果要讓vacuum能夠正常運轉,必須使 track_counts 有效。 track_counts這個參數在 postgresql.conf配置文件內,或者通過命令來設置。

          即使設置不是自動vacuum。系統(tǒng)發(fā)現有防止事務ID的重置的必要的時候也會自動啟動

          log_autovacuum_min_duration (integer ):

          設置執(zhí)行時間超過多長 的vacuum才輸出log。時間單位毫秒。

          如果這個參數設置為0的話,所有vacuum相關 的log都輸出。

          如果這個參數設置為-1的話,這個也是默認設置。log的輸出無效,也就是所有vacuum相關 的log都不輸出。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。

          autovacuum_max_workers (integer ):

          設置能夠同時執(zhí)行的vacuum最大進程數。 默認是3個。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。

          autovacuum_naptime (integer ):

          設置數據庫執(zhí)行vacuum的最小延遲。時間單位是分。默認是1分鐘。這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。

          autovacuum_vacuum_threshold (integer ):

          設置任何一張表內觸發(fā)VACUUM 的 更新,刪除tuple的最小數。默認為50。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

          autovacuum_analyze_threshold (integer ):

          設置任何一張表內觸發(fā)ANALYZE 的更新,刪除tuple的最小數。默認為50。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

          autovacuum_vacuum_scale_factor (floating point ):

          是否觸發(fā)VACUUM的判斷的時候 、設置 autovacuum_vacuum_threshold 追加的表容量斷片。默認是0.2(即20%)。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

          autovacuum_analyze_scale_factor (floating point ):

          是否觸發(fā) ANALYZE 的判斷的時候 、設置 autovacuum_vacuum_threshold 追加的表容量斷片。默認是0.1(即10%)。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

          autovacuum_freeze_max_age (integer ):

          為了防止事務ID的重置,VACUUM強制操作前,設置表的 pg_class .relfrozenxid字段的最大值。默認是2億。

          這個參數只能夠在啟動的時候設置。

          autovacuum_vacuum_cost_delay (integer ):

          設置自動vacuum操作中cost延遲。默認是20毫秒。設置的為-1的話,使用vacuum_cost_delay的值。

          這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

          autovacuum_vacuum_cost_limit (integer ):

          設置自動vacuum操作中cost的最大界限值。默認是-1,這時候用vacuum_cost_limit的值。 這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

          補充:PostgreSQL數據庫管理:定期vacuum

          為什么PostgreSQL數據庫管理工作中,定期vacuum是一個重要的工作.

          原因在于以下3點:

          釋放,再利用 更新/刪除的行所占據的磁盤空間.

          更新PostgreSQL查詢計劃中使用的統(tǒng)計數據.

          防止因事務ID的重置而使非常老的數據丟失.

          第一點的原因是

          PostgreSQL數據的插入,更新,刪除操作并不是真正放到數據庫空間.如果不定期釋放空間的話,由于數據太多,查詢速度會巨降.

          第二點的原因是

          PostgreSQL在做查詢處理的時候,為了是查詢速度提高,會根據統(tǒng)計數據來確定執(zhí)行計劃.如果不及時更新的話,查詢的效果可能不如預期.

          第三點的原因是

          PostgreSQL中每一個事務都會產生一個事務ID,但這個數字是有上限的. 當事務ID達到最大值后,會重新從最小值開始循環(huán).這樣如果不及時把以前的數據釋放掉的話,原來的老數據會因為事務ID的丟失而丟失掉.

          話說回來vacuum操作可以手動和自動.如果有專門的數據庫維護人員的話,可以適時進行.但很多系統(tǒng)為了節(jié)省維護成本,這樣就需要依賴自動vacuum了.

          雖說定期vacuum是PostgreSQL的一個弱點,不過在8.3版本以后,把這個任務交給自動vacuum就可以了.

          要使自動vacuum有效,必須設置track_counts參數為true.具體的設置可以參照官方的文檔.

          定期vacuum還是自己寫一個shell來自動執(zhí)行比較好.

          在shell中執(zhí)行vacuumdb命令. 例: ./vacuumdb -d databaseName –analyze

          以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。如有錯誤或未考慮完全的地方,望不吝賜教。

          標簽MySQL,技術文檔,數據庫,PostgreSQL

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 秋霞电影网一区二区三区| 国产一区二区三区四| 精品一区二区三区在线播放视频 | 成人免费一区二区三区在线观看| 海角国精产品一区一区三区糖心 | 91精品一区二区综合在线| 精品视频一区二区三区四区| 国产人妖在线观看一区二区| 日本亚洲国产一区二区三区| 在线精品视频一区二区| 熟女少妇丰满一区二区| 视频一区视频二区在线观看| 精品人妻码一区二区三区| 中文字幕一精品亚洲无线一区| 51视频国产精品一区二区| 一区二区三区在线|欧| 一区二区免费电影| 精品综合一区二区三区| 国产乱码一区二区三区| 国产成人亚洲综合一区| 精品亚洲AV无码一区二区三区| 久久精品无码一区二区日韩AV| 美女免费视频一区二区| 亚洲一区精彩视频| 国产精品av一区二区三区不卡蜜| 亚洲码一区二区三区| 91精品国产一区| 狠狠综合久久av一区二区| 亚洲另类无码一区二区三区| 精品亚洲AV无码一区二区三区 | 国产凸凹视频一区二区| 亚洲中文字幕一区精品自拍| 精品人体无码一区二区三区| 欲色aV无码一区二区人妻| 国产精品夜色一区二区三区| 在线欧美精品一区二区三区| bt7086福利一区国产| 日韩国产一区二区| 国产91一区二区在线播放不卡 | 亚洲中文字幕丝袜制服一区 | 精品国产日韩亚洲一区|