KingbaseESV8R6如何针对表单独设置vacuum策略
背景
书接上文 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策略的更多相关文章
- Windows 2008 - 由于管理员设置的策略,该磁盘处于脱机状态
http://blog.sina.com.cn/s/blog_59cc90640102x8m4.html 查看原文:https://www.bxl.me/9279.html准备使用云主机挂机的时候呢出 ...
- 如何为基于windows验证的站点的某个页面、文件或文件夹单独设置匿名访问
在MOSS的项目中,我们经常碰到要单独为基于windows验证的站点的某个页面.文件或文件夹单独设置匿名访问即不登录就可以直接访问.比如说站点的A的某些图片或文件URL存在B站点下的文件夹下.此时访问 ...
- 为你的Visual Studio单独设置代理服务器
http://blog.sina.com.cn/s/blog_58c506600101tycn.html 最近,因为国内访问Visual Studio Online(微软的免费代码托管服务,以前叫Te ...
- 由于管理员设置的策略,该磁盘处于脱机状态-Win 2008 R2
问题截图: 做了个小说网站www.114369.cn,使用的是云主机,系统是Win 2008 R2,进入服务器后发现磁盘有问题 只有c盘,没有d盘,提示:由于管理员设置的策略,该磁盘处于脱机状态 解决 ...
- 为github公开项目单独设置用户名
背景: 由于在公司git的配置是公司内自己的用户id及邮箱,如果用同样的配置在github上提交公开项目,可能造成用户名及邮箱泄露,因此对于github上的项目,最好单独设置用户名,而每次在向gith ...
- 如何为SharePoint文档库、文件夹、文件单独设置权限
在这里使用截图的方式简单描述两个问题:设置SharePoint Server文档库权限和文档库中的文件夹权限 一.设置SharePoint Server文档库权限 Figure 1 - 打开文档库后, ...
- LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)
见 http://www.51testing.com/?uid-97659-action-viewspace-itemid-210924 LoadRunner以下简称(LR)是目前业界最流行的压力测试 ...
- 如何给 FastAdmin 单独设置域名
如何给 FastAdmin 单独设置域名 (声明:不建议给后台固定的域名,主要是安全问题) FastAdmin 是基于 ThinkPHP5 框架编写的,ThinkPHP 5 支持域名路由,可对模块单独 ...
- 为每一个应用程序池单独设置aspnet.config配置文件
ASP.NET2.0之后的版本号就在各Framework的根文件夹下提供了一个aspnet.config文件.这个文件用来配置全局的一些信息,可是一直以来我们都没有怎么用过. ASP.NET4.0之后 ...
随机推荐
- WPF开发随笔收录-仿安卓Toast
一.前言 在项目中,经常需要用到消息提醒功能,在以前接触安卓开发那会使用过Toast,于是打算在WPF上也来模仿一个,话不多说,撸起袖子干起来! 二.正文 1.首先新建一个工程,工程的目录如下 2.编 ...
- 不同的子序列问题I
不同的子序列问题I 作者:Grey 原文地址: 不同的子序列问题I 题目链接 LeetCode 115. 不同的子序列 暴力解法 定义递归函数 int process(char[] str, char ...
- RPA微信机器人汇总
一.微信广告PDF对账单数据提取机器人 [机器人详情] 微信广告对账结算单为PDF文件,从每一期对账单文件中提取结算数据,统计成excel表格,便于与腾讯广告业务结算审核 [机器人步骤] 1.启动机器 ...
- python小题目练习(六)
需求:编写一个猜数字的小游戏,随机生成1到10(包含1和10)之间的数字作为基准数,玩家每次通过键盘输入一个数字,如果输入的数字跟基准数相同,则闯关成功,否则重新输入,如果玩家输入的是-1,则表示退出 ...
- NC202492 仓库选址
NC202492 仓库选址 题目 题目描述 牛能在某小城有了固定的需求,为了节省送货的费用,他决定在小城里建一个仓库,但是他不知道选在哪里,可以使得花费最小. 给出一个 \(m \times n\) ...
- 配置SSM公钥及创建远程仓库和在IEDA中集成git操作
3.将.ssh下的id_rsa.pub公钥copy到gitee工作台中 4.创建个人仓库 5.设置开源许可证:开源是否可以随意转载,开源但是不能商业使用,不能转载,- 限制! 6.克隆到本地! IDE ...
- Java 17 中的模式匹配与和类型
Java 17 中的模式匹配与和类型 从 Spring Security 获取用户谈起 使用 Spring Security做用户校验和权限控制时,常常使用和线程绑定的容器来获取当前登录用户. // ...
- centos7 nginx 域名能ping通,但无法打开网页
方法一:关闭防火墙 sudo systemctl stop firewalld.service 方法二:容许80端口访问 vim打开iptables, 命令如下: #vim /etc/sysconfi ...
- 手机APP无法抓包HTTPS解决方案
问题表现:某个APP的HTTPS流量抓取不到,Fiddler报错,但可以正常抓取其它的HTTPS流量 可能原因: 1.Flutter应用,解决方案:https://www.cnblogs.com/lu ...
- c:找到出现次数最多的递增数字串
如题,如何在一亿位整数组成的字符串中找到出现次数最多的递增数字串? 答案: #include <stdio.h> #include <string.h> #define MAX ...