背景

书接上文 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. uniapp使用scroll-view与swiper组件实现tab滑动切换页面需要注意的问题

    效果图: tab栏可以滑动,切换页面跟随tab栏同步滑动.这里需要注意的是使用swiper组件时,它会有一个默认的高度,你必须动态的获取数据列表的高度覆盖原来的默认高度. 下面是代码 html < ...

  2. 安装gitlab客户端

    1. 下载客户端软件包 https://pan.baidu.com/disk/home#/category?type=6&vmode=list 安装顺序: Git-2.13.3-64-bit. ...

  3. 利用websocket实现手机扫码登陆后,同步登陆信息到web端页面

    新手必看 广播系统 事件系统 准备工作 初始化项目 引入 laravel-websockets 软件包 启动 websocket 监听 主要流程 创建两个页面 建立 socket 连接 手机端扫码登陆 ...

  4. NC16663 [NOIP2004]合并果子

    NC16663 [NOIP2004]合并果子 题目 题目描述 ​ 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. ​ 每一次合并,多多可 ...

  5. NC20012 [HEOI2014]南园满地堆轻絮

    NC20012 [HEOI2014]南园满地堆轻絮 题目 题目描述 小 Z 是 ZRP(Zombies' Republic of Poetry,僵尸诗歌共和国)的一名诗歌爱好者,最近他研究起了诗词音律 ...

  6. LinkedList集合和Vector集合

    LinkedList集合数据存储的结构是链表结构.方便元素添加.删除的集合.实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法 LinkedList ...

  7. Java开发学习(十)----基于注解开发定义bean 已完成

    一.环境准备 先来准备下环境: 创建一个Maven项目 pom.xml添加Spring的依赖 <dependencies>    <dependency>        < ...

  8. 攻防世界MISC进阶区—48-51

    48.Become_a_Rockstar 得到无类型文件,010 Editor打开为几段话,看到标示性的NCTF{),怀疑是用脚本加密后的结果,网上查了一下,得知Rockstar是一种语言,用rock ...

  9. 边缘计算 KubeEdge+EdgeMash

    简介 KubeEdge是面向边缘计算场景.专为边云协同设计的业界首个云原生边缘计算框架,在 Kubernetes 原生的容器编排调度能力之上实现了边云之间的应用协同.资源协同.数据协同和设备协同等能力 ...

  10. 分享|2022数字安全产业大数据白皮书(附PDF)

    内容摘要: 2021年以来,数字安全赛道的受关注程度达到一个历史新高度.<数据安全法><个人信息保护法><关键信息基础设施安全保护条例>,一个接一个重磅的法规接连出 ...