背景

书接上文 KingbaseES应对表年龄增长过快导致事务回卷 ,有些特殊业务场景不能靠全局的autovacuum方法,例如大型数据库系统,频繁做update的系统,还有上文提到的做实时数据同步的系统,这个系统需要保证每条事务都单独提交,这些系统都有一个特点就是事务号消耗非常快、死亡元组增长速度非常快。尤其有些系统查看数据库下表的age,(上文有写到查看表age,与数据库age的sql语句)有多张表的age同时非常高。为了确保vacuum的效率更高,和避免vacuum不及时导致age被消耗殆尽。这样我们需要在表级设置autovacuum策略。

方法

[](javascript:void(0)

ALTER TABLE test2 SET (autovacuum_freeze_max_age = 100000, fillfactor = 100);
ALTER TABLE test=# \d+ test2
Table "public.test2"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+----------+--------------+-------------
i | integer | | not null | | plain | |
j | text | | | | extended | |
Access method: heap
Options: autovacuum_enabled=true, toast.vacuum_truncate=true或者:
 test=# select reloptions from sys_class where relname='test2';
reloptions
\---------------------------
{autovacuum_enabled=true}
(1 row)

[](javascript:void(0)

可以看到options:这张test2表被单独设置了autovacuum freeze的阈值。设置阈值的方法是查看每张表的age倒序排列,针对每张表设置不同的vacuum阈值,这是为了freeze时避开vacuum消耗的I\O高峰,因为vacuum导致的I\O高峰可能影响业务进行。

vacuum有关其他建议

优化autovacuum的第一步是vacuum操作分配足够的工作内存,vacuum的工作过程由于篇幅过长这里不再赘述。maintenance_work_mem参数对应VACUUM的性能有着至关重要的作用,对应较大型的数据库系统,对物理内存比较充裕的系统,将maintenance_work_mem设置为2GB是比较常用的。另外一个和vacuum操作相关的参数autovacuum_work_mem默认为-1,表示不启动此参数,这时候vacuum操作就会参考maintenance_work_mem参数。当我们从sys_log中看到关键字automatic vacuum of table: ...... index scan 1,或者vacuum verbose 查看vacuum详情时,可以发现当index scan超过1,就说明maintenance_work_mem内存可能需要增加。

第二个重要的参数是autovacuum_max_workers,这取决于有多少张表的VACUUM操作可以并行执行,如果系统中有大量的小表,那么就建议把这个参数设置大一些。当然如果CPU资源不是很多,那么就不要设置太大的值。注意,autovacuum_max_workers进程并行工作十分消耗I\O资源,尤其是并发处理多个大表时。对于这个参数的合理设置还要根据具体场景,最好的效果是合理的并发能够及时vacuum freeze掉表age,并且I\O消耗没有达到上限,队列没有明显等待。

另外一个需要对表级设置vacuum的场景是,对于某些sql引用的表的统计信息需要及时收集,设置后,表级参数会优先于全局统计信息收集的阈值(当上次analyze以来表的新增记录超过 autovacuum_analyze_threshold + autovacuum_analyze_scale_factor*reltuples ,触发analyze。)这会影响执行计划的正确与否。

KingbaseESV8R6如何针对表单独设置vacuum策略的更多相关文章

  1. Windows 2008 - 由于管理员设置的策略,该磁盘处于脱机状态

    http://blog.sina.com.cn/s/blog_59cc90640102x8m4.html 查看原文:https://www.bxl.me/9279.html准备使用云主机挂机的时候呢出 ...

  2. 如何为基于windows验证的站点的某个页面、文件或文件夹单独设置匿名访问

    在MOSS的项目中,我们经常碰到要单独为基于windows验证的站点的某个页面.文件或文件夹单独设置匿名访问即不登录就可以直接访问.比如说站点的A的某些图片或文件URL存在B站点下的文件夹下.此时访问 ...

  3. 为你的Visual Studio单独设置代理服务器

    http://blog.sina.com.cn/s/blog_58c506600101tycn.html 最近,因为国内访问Visual Studio Online(微软的免费代码托管服务,以前叫Te ...

  4. 由于管理员设置的策略,该磁盘处于脱机状态-Win 2008 R2

    问题截图: 做了个小说网站www.114369.cn,使用的是云主机,系统是Win 2008 R2,进入服务器后发现磁盘有问题 只有c盘,没有d盘,提示:由于管理员设置的策略,该磁盘处于脱机状态 解决 ...

  5. 为github公开项目单独设置用户名

    背景: 由于在公司git的配置是公司内自己的用户id及邮箱,如果用同样的配置在github上提交公开项目,可能造成用户名及邮箱泄露,因此对于github上的项目,最好单独设置用户名,而每次在向gith ...

  6. 如何为SharePoint文档库、文件夹、文件单独设置权限

    在这里使用截图的方式简单描述两个问题:设置SharePoint Server文档库权限和文档库中的文件夹权限 一.设置SharePoint Server文档库权限 Figure 1 - 打开文档库后, ...

  7. LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)

    见 http://www.51testing.com/?uid-97659-action-viewspace-itemid-210924 LoadRunner以下简称(LR)是目前业界最流行的压力测试 ...

  8. 如何给 FastAdmin 单独设置域名

    如何给 FastAdmin 单独设置域名 (声明:不建议给后台固定的域名,主要是安全问题) FastAdmin 是基于 ThinkPHP5 框架编写的,ThinkPHP 5 支持域名路由,可对模块单独 ...

  9. 为每一个应用程序池单独设置aspnet.config配置文件

    ASP.NET2.0之后的版本号就在各Framework的根文件夹下提供了一个aspnet.config文件.这个文件用来配置全局的一些信息,可是一直以来我们都没有怎么用过. ASP.NET4.0之后 ...

随机推荐

  1. OpenCloudOS使用snap安装.NET 6

    开源操作系统社区 OpenCloudOS 由腾讯与合作伙伴共同倡议发起,是完全中立.全面开放.安全稳定.高性能的操作系统及生态.OpenCloudOS 沉淀了多家厂商在软件和开源生态的优势,继承了腾讯 ...

  2. bat-静默安装并配置mysql(windows版)

    mysql版本 mysql-5.6.35-winx64 路径关系 @echo off Setlocal enabledelayedexpansion @REM vscode中自动开启延迟环境变量扩展, ...

  3. 分享一款IDEA主题,很奈斯

    主题名称:Dark Purple Theme: 更换主题:在Setting中设置更换

  4. CF778C 题解

    题目连接就不放了,人类应该反对阴间题目描述 下面给出一个作为正常人能够看懂的题面描述: 给一棵 \(\text{trie}\) 树,可以删掉某一层的所有节点和边. 被删除的节点的子节点会代替当前节点, ...

  5. Netty源码解读(三)-NioEventLoop

    先看看EventLoop类图 我们在Netty第二篇文章中的代码中,看到有多次用到eventLoop.execute()方法,这个方法就是EventLoop开启线程执行任务的关键,跟踪进去看看 // ...

  6. 基于gitlab 15.1 pages 搭建内部博客一定行版本

    背景 基于 gitlab 15.1版 pages 搭建内部博客,参考官方文档,遇到一个又一个坑.之前看到别人吐槽说 gitlab 官方文档很差,我算是理解了.下面一个个说. 开始 按照官方文档的说法, ...

  7. 微信安装包从0.5M暴涨到260M,为什么我们的程序越来越大?

    最近,微信安装包从v1.0的0.5M暴涨到V8.0的 260M引起大家热议,为什么我们开发的程序越来越大?本文做一个简单的讨论.(本文主要根据B站科技老男孩<逆向工程微信安装包,11年膨胀575 ...

  8. 可变参数和Collections集合工具类

    可变参数 /** * 可变参数:jdk1.5后出现的新特性 * 使用前期: * 当方法的参数列表数据类型已经确定的时候但是参数的个数不确定的时候就可以使用可变参数 * 使用格式:定义方法的时候使用 * ...

  9. Mac os:将Homebrew的下载源换成国内镜像增加下载速度(阿里云镜像)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_135 可能所有的mac os系统爱好者都遇到过下面这种倒霉情况,在网络环境不太好的时候,你满怀期待的敲下 brew install ...

  10. Odoo14 ir.rule 中的domain查询语句

    # ir.rule 中的domain查询语句 # 当你的字段是many2one.many2many.one2many的时候domain都会强制加上过滤域 # tree显示的时候也会过滤 # m.mod ...