关键字

表膨胀 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 表膨胀的问题相关推荐

  1. 微信小程序购物车(云数据库)详细-解决了更新数据库延迟显示

    首先完成的大图 这里不对新建云数据库进行讲解,直接插入,查询. 首页 想要获取云数据库的内容,我们要修改app.js //app.js App({onLaunch: function () {// s ...

  2. mysql 数据库乱码的解决办法_数据库 MySQL中文乱码解决办法总结

    前言: MysqL是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 ...

  3. php 到数据库乱码怎么解决方法,php数据库乱码解决方法

    php数据库乱码解决方法 发布时间:2020-05-20 10:21:44 来源:亿速云 阅读:146 作者:Leah 今天小编就为大家带来一篇介绍php数据库乱码解决方法的文章.小编觉得挺实用的,为 ...

  4. 用友erpU8V10服务器数据库整体迁移解决方法采用数据库附加方法

    公司原IBM服务器更换成新的HP服务器,需要对ERP数据进行迁移. 通知所有会计停止加班,将把部署在IBM-X3650服务器上的U8V10整体迁移到HP 380G7上. 一.当前环境分析:当前IBM用 ...

  5. 解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止

    解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止 安装微软的信任证书: 1.点击链接下载微软证书:http://download.microsoft.com/dow ...

  6. 勇立潮头,推动国产数据库产业崛起—“金兰生态 仓起辉煌·2020人大金仓生态大会暨新战略发布会”在京成功召开...

    点击蓝字 关注我们 随着国际环境日趋复杂,数据安全与信息技术发展成为发展首要任务.目前,随着信创工程的大规模推进,以及业务场景的大量落地实践,大大加速了数据库产品的成熟化.与此同时,生态薄弱愈发凸显, ...

  7. BDTC 2017数据库:犹他大学、东方国信、蚂蚁金服、微软、人大金仓畅谈数据库发展与实践...

    [CSDN现场报道]12月7-9日,由中国计算机学会主办,CCF 大数据专家委员会承办,中国科学院计算技术研究所.中科天玑数据科技股份有限公司.CSDN协办的2017中国大数据技术大会(BDTC 20 ...

  8. 数据库专题 数据库适配问题--人大金仓数据库适配问题总结(kingbase8)

    人大金仓数据库链接配置 这里以springBoot配置文件演示: spring.datasource.driver-class-name=com.kingbase8.Driver spring.dat ...

  9. 人大金仓删除字段_人大金仓数据库(kingbase7d)操作入门指南 Windows

    1.1.12 安装成功,在开始菜单中可以看到以下数据库操作工具: 1.2 数据库卸载 1.2.1 选择 卸载 : 1.2.2 点击 卸载 : 1.2.3 选择 确定 ,开始数据库的卸载 : 1.2.4 ...

最新文章

  1. git commit -amend_最常见的Git错误都有哪些,如何解决它们?
  2. Random类——获取随机数
  3. wincc 报警记录 mysql_wincc查询历史报警记录,归档数据-工业支持中心-西门子中国...
  4. 全国计算机证件照要露耳朵吗,结婚证照片要露耳朵么 结婚登记照露一只耳朵行吗...
  5. 蓝桥杯 历届试题 小数第n位
  6. 太极图正确画法_太极图的三种画法你知道吗?
  7. jedis连接池详解(Redis)
  8. .Net读取rss的两种方法
  9. 像素级复制!荣威R品牌“撞车”小鹏P7剪刀门,还是手动的?
  10. python怎么查看网页编码格式_Python写爬虫时如果碰到以Request Payload格式传输数据怎么办?...
  11. 晨跑喝黑咖啡对身体有什么影响?
  12. NoSQL数据库之国产开源产品:SequoiaDB 分析前言
  13. Taking a serious look at grids
  14. 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
  15. 中国移动互联网行业深度报告
  16. 高一计算机网络技术应用计划,高一信息技术第一学期教学计划
  17. 【Netty-进阶】学习笔记
  18. python3for metro_Fluent Python 译本 读书笔记 第5章 一等函数
  19. mysql网站设计_Flask+Mysql搭建网站之网页设计
  20. python xlsx表格最大行最大列

热门文章

  1. kuberneters集群发布内部服务详解
  2. Angular JS introduce
  3. 记一次华为交换机冲突问题
  4. 如何安装ssl证书?
  5. python反反爬,爬取猫眼评分
  6. 连个字体反爬都搞不定?你还说你会爬虫?看完这篇就会了。
  7. Web前端和后端的异同
  8. 使用MySql计算两个日期的时间差函数:TIMESTAMPDIFF
  9. 内存测试软件 ddr4,RAMCHECK LX DDR4 PRO/DDR3 内存测试仪
  10. 浙江大学计算机考研最新,2017年浙江大学计算机考研复试分数线_浙江大学考研分数线...