背景

书接上文 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. SAP OLE download to excel

    REPORT RSDEMO01 NO STANDARD PAGE HEADING. * this report demonstrates how to send some ABAP data to a ...

  2. 【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧

    前言:随着工业化的进一步发展,制造业.工业自动化等多领域,都可能用到上位监控系统.而WPF在上位监控系统方面,应该算是当下最流行的前端框架之一了.而随着监控体系的不断完善与更新迭代,监控画面会变得越来 ...

  3. python采集一下美团外卖数据~~

    所需知识点(https://jq.qq.com/?_wv=1027&k=Ap5XvyNN) 1.动态数据抓包演示2.json数据解析3.requests模块的使用4.保存csv 安装命令:re ...

  4. 关于'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte报错

    今天在使用vscode编译程序时,启动Python服务出现以下错误: 通过网络查找资料可以得知,是由于个人用户名非英文而导致,但是网上并没有说清楚是哪里的名字,以至于很多人会以为是以下地方: 实际上真 ...

  5. NC50038 kotori和糖果

    NC50038 kotori和糖果 题目 题目描述 kotori共有 \(n\) 块糖果,每块糖果的初始状态是分散的,她想把这些糖果聚在一堆.但她每次只能把两堆糖果合并成一堆. 已知把两堆数量为 \( ...

  6. Pytorch从0开始实现YOLO V3指南 part2——搭建网络结构层

    本节翻译自:https://blog.paperspace.com/how-to-implement-a-yolo-v3-object-detector-from-scratch-in-pytorch ...

  7. D2C小练习

    前端智能化现状及未来展望 简介 DEsign: Sketch,Photoshop ,Figma 起源:微软2017年, Design to code code: 前端 核心原理 design----& ...

  8. dubbox 入门demo

    1.Dubbox简介 Dubbox 是一个分布式服务架构,其前身是阿里巴巴开源项目 Dubbo,被国内电商及互联网项目使用,后期阿里巴巴停止了该项目的维护,当当网便在 Dubbo 基础上进行优化,并继 ...

  9. 编程思想转换&体验Lambda的更优写法和Lambda标准格式

    编程思想转换做什么,而不是怎么做 我们真的希望创建一个匿名内部类对象吗?不,我们只是为了做这件事情而不得不创建一个对象. 我们真正希望做的事情是:将run方法体内的代码传递给Thread类知晓. 传递 ...

  10. 提名 Apache ShardingSphere Committer,说说方法

    文章首发在公众号(龙台的技术笔记),之后同步到博客园和个人网站:xiaomage.info 就在前几天,收到了 Apache ShardingSphere Vote 我成为 Committer 的邮件 ...