《1-劉華陽-vacuum集中管理.pdf》由會員分享,可在線閱讀,更多相關《1-劉華陽-vacuum集中管理.pdf(25頁珍藏版)》請在三個皮匠報告上搜索。
1、Vacuum 集中管理與設計演講人:劉華陽東方瑞通&高級講師(兼職)CONTENTPostgreSQL 工作中的問題與解決Vacuum 在工作中的問題集中化管理的意義設計與實現細節PostgreSQL 工作中的問題與解決PostgreSQL 工作中的問題與解決基于PostgreSQL MVCC(multi-Version Concurrency Control)設計模式,以及獨有的Undo表空間在PostgreSQL 中的實現方式,在日常數據庫運行中產生了一些PostgreSQL 獨有的數據庫維護工作。而基于維護工作的不及時,產生了一些PostgreSQL 數據庫運行維護中的一些缺陷導致運行維
2、護產生問題1表空間的快速膨脹,占用大量磁盤2膨脹后維護不及時,空間無法重用3性能隨膨脹過程持續下降4大表維護過程耗費時間和系統資源的消耗舉例:日志表只插入數據的情況在PG13 之前的版本,在日志表大量插入數據中存在缺陷,導致insert-only 的表無法觸發autovacuum的工作。PG13 包含 PG13 后的數據庫添加了參數autovacuum_vacuum_insert_thresholdautovacuum_vacuum_insert_scale_factorPostgreSQL 工作中的問題與解決PostgreSQL 工作中的問題與解決舉例:PG 13 中優化了vacuum 命令
3、中的針對表vacuum中的并行工作,提高了進行vacuum時的效率。vacuum(parallel 4,verbose)table_name;PostgreSQL 工作中的問題與解決舉例:PG16 中對于 vacuum 命令進行了優化,基于之前在運行autovacuum給系統造成的負擔的問題是無法及時解決,而需要整體完成后,在再一次執行autovacuum 時才可以 reload 新的config的問題,PG16 做出了積極的改善,可以在autovacuum運行的過程中就直接再次對于新設置的配置,進行采用來解決當前由于autovacuum導致的系統性能消耗過大的問題,尤其針對Cost limi
4、t&Cost dealyhttps:/git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=7d71d3dd080b9b147402db3365fe498f74704231PostgreSQL 工作中的問題與解決小結:PostgreSQL 一直都在對 vacuum,autovacuum 的工作進行優化,無論是參數,還是工作方式,或是工作上性能的部分。vacuum 日常工作中的問題Vacuum 在當前工作中的問題主要集中在以下幾個方面1程序的設計本身并未考慮PostgreSQL MVCC 的特點,大量update的設計2管理人員對于
5、PG數據庫原理的不清晰,沒有良好的設置autovacuum參數3表的容量變的越來越大,全局性的設置autovacuum的參數對于大表無效4突發性的數據更新,集中批量性的更新導致無法及時進行autovacuum的問題5相關參數設置不合理,導致頻繁觸發IOPS 和 CPU 飚高的情況當前 vacuum 工作中的問題當前 vacuum 工作中的問題案例:從Oracle 替換到PG 后半年時間后,發現經常性的在業務高峰期,CPU突發性的飚高,IOPS 突發性的飚高,產生的慢查詢本身并不是慢SQL,或問題期間未有明顯的慢查詢語句。當前 vacuum 工作中的問題案例:在使用PG一段時間后,表的行數達到上
6、億后,發現查詢的性能和速度有一定的衰減,但索引正確,并且查詢中并不是每次都發生類似性能衰減的問題,在重建索引后,問題得到解決案例:在調整autovacuum 的參數工作情況是良好,但又經過一段時間后發現autovacuum的工作又不及時了,進而又對autovacuum在表中的參數進行了調整。當前 vacuum 工作中的問題小結:PostgreSQL 的一些奇怪的問題,多發生在一些大表以及使用過一段時間的PostgreSQL上,核心的問題主要在autovacuum 的參數不正確或從未調整,導致一些大表的autovacuum 不及時或過于頻繁引發的一連串的問題。集中化管理的意義集中化管理的意義針對
7、大量采用PostgreSQL作為企業核心數據庫企業,讓這些企業更加有效率的,安全智能的對PG進行管理。同時這些都建立在,不增加人員管理成本的基礎上,讓管理人員較少的對PG中的autovacuum參數調整進行介入,以及自動化智能化的定時定期的對表進行不同方式的vacuum 工作。集中化vacuum autovacuum 管理程序的面對的群體1大批量進行PostgreSQL 或類PostgreSQL 部署但管理數據庫人員較少,無法顧及相關細致性的工作2數據庫上層的應用程序為外部開發,或第三方開發,基本沒有依照PG數據庫原理進行設計的程序3目前PostgreSQL數據庫運行出現問題,基于vacuum
8、 或 autovacuum配置不懂,參數有問題的情況4多種PostgreSQL 數據庫混合部署,對于各個版本的命令以及特性不清晰的群體5希望動態智能化的調整autovacuum 參數,合理進行autovacuum工作的群體6希望盡量減少在PostgreSQL數據庫中發生 aggressive freezing 情況的群體集中化管理的意義設計與實現細節主體設計主體設計難點與積累難點與積累以業務系統特點與業務特性出發1業務系統設計中由于業務的特性,經常出現UPDATE 的情況的密度的問題舉例:月度,季度,年度 客戶積分清零的問題突發性,規律性 的數據大量更新 需要系統具有前攝性2業務中更新數據行的
9、頻率過高,比如訂單狀態更新舉例:業務高峰時段需要延遲(禁止)autovacuum,業務低峰期需要積極觸發autovacuum系統中主體的核心在于數據的收集與分析兩個部分,其中通過數據的收集和分析可以產生一些固定的模板如:難點與積累金融領類互聯網訂單類快消品銷售類傳統行業類設計與實現細節解決方案的利弊:這樣的方案本身與數據庫是分離的,程序本身靈活性和修改編譯上線的速度快,可以針對不同的版本的PG產生一體化的解決方案,弊端為無法100%的完全解決基于PG 系統本身問題帶來的膨脹問題。Autovacuum 與 Vaccum 是PostgreSQL 一個非常值得討論的話題,任何數據庫架構設計中都會存在利弊,在我們享受PostgreSQL 本身提供的非凡的數據處理能力的之外,我們也需要對PostgreSQL 數據膨脹與治理給予更多的注意!THANK YOU微信/公眾號二維碼