《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微信/公众号二维码