高斯数据库脏页率处理

您所在的位置:网站首页 warframe高斯一技能 高斯数据库脏页率处理

高斯数据库脏页率处理

2023-06-27 11:40| 来源: 网络整理| 查看: 265

一、脏页率说明 每当更新或删除PostgreSQL表中的行时,都会留下死元组。VACUUM摆脱了它们,以便空间可以重复使用。如果一个表没有被清理,它就会变得臃肿,这会浪费磁盘空间并减慢表的顺序扫描(以及索引扫描)。 VACUUM还负责冻结表行,以避免在事务ID计数器环绕时出现问题 资料参考pg中文论坛 实际操作新表insert也会产生脏页,特别是gds导入失败后空表也会占用大量空间;空表查询缓慢

一般数据库事务管理中所指的锁是指表级锁,GaussDB(DWS)中支持的锁模式有8种,按排他级别分别为1-8。 每种锁模式都有与之相冲突的锁模式,由锁冲突表定义相关的信息,锁冲突表如下: 编号 名称 用途 冲突关系 1 AccessShareLock SELECT 8 2 RowShareLock SELECT FOR UPDATE/FOR SHARE 7 | 8 3 RowExclusiveLock INSERT/UPDATE/DELETE 5 | 6 | 7 | 8 4 ShareUpdateExclusiveLock VACUUM 4 | 5 | 6 | 7 | 8 5 ShareLock CREATE INDEX 3 | 4 | 6 | 7 | 8 6 ShareRowExclusiveLock ROW SELECT…FOR UPDATE 3 | 4 | 5 | 6 | 7 | 8 7 ExclusiveLock BLOCK ROW SHARE/SELECT…FOR UPDATE 2 | 3 | 4 | 5 | 6 | 7 | 8 8 AccessExclusiveLock DROP CLASS/VACUUM FULL 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

二、注意事项及应对方式 2.1、风险 •数据库将进行大量读写操作,可能影响正常使用,建议选择空闲时间执行。 •数据库的存储空间越大,即数据可能越多,清理的时间越长。 VACUUM FULL回收所有过期的行空间,但是它需要对每个正在处理的表进行独占锁定,并且可能需要很长时间才能完成大型分布式数据库表。节点数较少的大表vacuum full时间较长,可能会两个小时也未能做完vacuum full,期间整表上锁,因此这里建议大表按照分区来做vacuum full 分区脏页查询方式

2.2、应对方式 设置statement_timeout 设置锁等待时间与lockwait_timeout和max_query_retry_times

通过pg_terminate_backend函数去对应的节点上杀掉持锁语句

三、脏页率查询 3.1、模式脏页率 pgxc_get_stat_dirty_tables(int dirty_percent, int n_tuples) pgxc_get_stat_dirty_tables(int dirty_percent, int n_tuples, text schema) 描述:获取各表的插入、更新、删除以及脏页率信息。该函数针对视图 PGXC_GET_STAT_ALL_TABLES进行了性能优化, 可以快速筛选出每个DN上满足脏页 率大于dirty_percent,dead元组数大于n_tuples的表,将筛选结果返回到CN进行汇总 并输出。 3.2、单表脏页率(准确) select pg_stat_get_live_tuples(‘schema.table’::regclass::oid) as n_live_tup ,pg_stat_get_dead_tuples(‘schema.table’::regclass::oid) as n_dead_tup ,case n_dead_tup when 0 then 0 else round(n_dead_tup/(n_live_tup+n_dead_tup)*100,2) end as dirty_ratio; 3.3、分区脏页率 pg



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3