金仓数据库 KingbaseES Sys_repack 解决金仓数据库 KingbaseES 表膨胀的问题
关键字
表膨胀 vacuum 索引膨胀 无锁处理
问题描述
详细描述问题现象,必要时可添加图片。表或索引发生膨胀后,用户可以使用vacuum full重建表,但是vacuum full需要持有排它锁,会堵塞读操作。
问题分析
Vacuum不能处理索引膨胀,且vacuum过程排他锁影响用户业务;采用停机的方式重建表解决表膨胀用户体验也差。
解决方案
KingbaseES提供了sys_repack的工具来处理表及索引膨胀的问题,repack期间不影响用户的业务。sys_repack的插件使用了增量的方式重组数据,最后通过切换FILENODE完成数据重组。仅仅在切换FILENODE时需要持有排他锁,非常短暂,影响比VACUUM FULL和停机重建表的方式小多了。
命令执行
[v7test@kadb_centos7_33 bin]$ ./sys_repack -h localhost -p 54321 -U KINGBASEES -WMANAGER -d TEST --no-order --elevel=debug --table COMPANYDEBUG: No workers to disconnect.INFO: repacking table "COMPANY"DEBUG: ---- repack_one_table ----DEBUG: target_name : COMPANYDEBUG: target_oid : 31816DEBUG: target_toast : 49297DEBUG: target_tidx : 49299DEBUG: pkid : 31823DEBUG: ckid : 0DEBUG: create_pktype : CREATE TYPE repack.pk_31816 AS (ID INTEGER)DEBUG: create_log : CREATE TABLE repack.log_31816 (id bigint identity(1,1) PRIMARY KEY, pk repack.pk_31816, row COMPANY)DEBUG: create_trigger : CREATE TRIGGER repack_trigger_insert AFTER INSERT ON COMPANY FOR EACH ROW as declare begin INSERT INTO repack.log_31816(pk, row) VALUES( NULL, new); end;CREATE TRIGGER repack_trigger_delete AFTER delete ON COMPANY FOR EACH ROW as declare begin INSERT INTO repack.log_31816(pk, row) VALUES( old.ID, NULL); end;CREATE TRIGGER repack_trigger_update AFTER update ON COMPANY FOR EACH ROW as declare begin INSERT INTO repack.log_31816(pk, row) VALUES( old.ID, new); end;DEBUG: enable_trigger : ALTER TABLE COMPANY ENABLE TRIGGER repack_trigger_insert;ALTER TABLE COMPANY ENABLE TRIGGER repack_trigger_delete;ALTER TABLE COMPANY ENABLE TRIGGER repack_trigger_update;DEBUG: create_table : CREATE TABLE repack.table_31816 WITH (oids = false) TABLESPACE "SYSTEM" AS SELECT ID,"NAME",AGE,ADDRESS,SALARY,C1 FROM ONLY COMPANY WITH NO DATADEBUG: copy_data : INSERT INTO repack.table_31816 SELECT ID,"NAME",AGE,ADDRESS,SALARY,C1 FROM ONLY COMPANYDEBUG: alter_col_storage : (skipped)DEBUG: drop_columns : (skipped)DEBUG: delete_log : DELETE FROM repack.log_31816DEBUG: lock_table : LOCK TABLE COMPANY IN ACCESS EXCLUSIVE MODEDEBUG: sql_peek : SELECT * FROM repack.log_31816 ORDER BY id LIMIT $1DEBUG: sql_insert : INSERT INTO repack.table_31816 VALUES ($1.*)DEBUG: sql_delete : DELETE FROM repack.table_31816 WHERE (ID) = ($1.ID)DEBUG: sql_update : UPDATE repack.table_31816 SET (ID, "NAME", AGE, ADDRESS, SALARY, C1) = ($2.ID, $2."NAME", $2.AGE, $2.ADDRESS, $2.SALARY, $2.C1) WHERE (ID) = ($1.ID)DEBUG: sql_pop : DELETE FROM repack.log_31816 WHERE id IN (DEBUG: ---- setup ----DEBUG: index[0].target_oid : 49465DEBUG: index[0].create_index : CREATE INDEX index_49465 ON repack.table_31816 USING "HASH" ("NAME")DEBUG: index[1].target_oid : 31823DEBUG: index[1].create_index : CREATE UNIQUE INDEX index_31823 ON repack.table_31816 USING BTREE (ID)DEBUG: LOCK TABLE COMPANY IN ACCESS SHARE MODEDEBUG: No competing DDL to cancel.DEBUG: Waiting on ACCESS SHARE lock...DEBUG: ---- copy tuples ----DEBUG: No competing DDL to cancel.DEBUG: ---- create indexes ----DEBUG: Have 2 indexes and num_workers=0DEBUG: set up index_jobs [0]DEBUG: target_oid : 49465DEBUG: create_index : CREATE INDEX index_49465 ON repack.table_31816 USING "HASH" ("NAME")DEBUG: set up index_jobs [1]DEBUG: target_oid : 31823DEBUG: create_index : CREATE UNIQUE INDEX index_31823 ON repack.table_31816 USING BTREE (ID)DEBUG: ---- swap ----DEBUG: ---- drop ----DEBUG: ---- analyze ----DEBUG: No workers to disconnect.
金仓数据库 KingbaseES Sys_repack 解决金仓数据库 KingbaseES 表膨胀的问题相关推荐
- 微信小程序购物车(云数据库)详细-解决了更新数据库延迟显示
首先完成的大图 这里不对新建云数据库进行讲解,直接插入,查询. 首页 想要获取云数据库的内容,我们要修改app.js //app.js App({onLaunch: function () {// s ...
- mysql 数据库乱码的解决办法_数据库 MySQL中文乱码解决办法总结
前言: MysqL是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 ...
- php 到数据库乱码怎么解决方法,php数据库乱码解决方法
php数据库乱码解决方法 发布时间:2020-05-20 10:21:44 来源:亿速云 阅读:146 作者:Leah 今天小编就为大家带来一篇介绍php数据库乱码解决方法的文章.小编觉得挺实用的,为 ...
- 用友erpU8V10服务器数据库整体迁移解决方法采用数据库附加方法
公司原IBM服务器更换成新的HP服务器,需要对ERP数据进行迁移. 通知所有会计停止加班,将把部署在IBM-X3650服务器上的U8V10整体迁移到HP 380G7上. 一.当前环境分析:当前IBM用 ...
- 解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止
解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止 安装微软的信任证书: 1.点击链接下载微软证书:http://download.microsoft.com/dow ...
- 勇立潮头,推动国产数据库产业崛起—“金兰生态 仓起辉煌·2020人大金仓生态大会暨新战略发布会”在京成功召开...
点击蓝字 关注我们 随着国际环境日趋复杂,数据安全与信息技术发展成为发展首要任务.目前,随着信创工程的大规模推进,以及业务场景的大量落地实践,大大加速了数据库产品的成熟化.与此同时,生态薄弱愈发凸显, ...
- BDTC 2017数据库:犹他大学、东方国信、蚂蚁金服、微软、人大金仓畅谈数据库发展与实践...
[CSDN现场报道]12月7-9日,由中国计算机学会主办,CCF 大数据专家委员会承办,中国科学院计算技术研究所.中科天玑数据科技股份有限公司.CSDN协办的2017中国大数据技术大会(BDTC 20 ...
- 数据库专题 数据库适配问题--人大金仓数据库适配问题总结(kingbase8)
人大金仓数据库链接配置 这里以springBoot配置文件演示: spring.datasource.driver-class-name=com.kingbase8.Driver spring.dat ...
- 人大金仓删除字段_人大金仓数据库(kingbase7d)操作入门指南 Windows
1.1.12 安装成功,在开始菜单中可以看到以下数据库操作工具: 1.2 数据库卸载 1.2.1 选择 卸载 : 1.2.2 点击 卸载 : 1.2.3 选择 确定 ,开始数据库的卸载 : 1.2.4 ...
最新文章
- git commit -amend_最常见的Git错误都有哪些,如何解决它们?
- Random类——获取随机数
- wincc 报警记录 mysql_wincc查询历史报警记录,归档数据-工业支持中心-西门子中国...
- 全国计算机证件照要露耳朵吗,结婚证照片要露耳朵么 结婚登记照露一只耳朵行吗...
- 蓝桥杯 历届试题 小数第n位
- 太极图正确画法_太极图的三种画法你知道吗?
- jedis连接池详解(Redis)
- .Net读取rss的两种方法
- 像素级复制!荣威R品牌“撞车”小鹏P7剪刀门,还是手动的?
- python怎么查看网页编码格式_Python写爬虫时如果碰到以Request Payload格式传输数据怎么办?...
- 晨跑喝黑咖啡对身体有什么影响?
- NoSQL数据库之国产开源产品:SequoiaDB 分析前言
- Taking a serious look at grids
- 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
- 中国移动互联网行业深度报告
- 高一计算机网络技术应用计划,高一信息技术第一学期教学计划
- 【Netty-进阶】学习笔记
- python3for metro_Fluent Python 译本 读书笔记 第5章 一等函数
- mysql网站设计_Flask+Mysql搭建网站之网页设计
- python xlsx表格最大行最大列