首页 > 其他分享 >KingbaseESV8R6 heap table末端垃圾页回收机制

KingbaseESV8R6 heap table末端垃圾页回收机制

时间:2023-06-06 15:47:20浏览次数:39  
标签:KingbaseESV8R6 truncate u1 u2 heap vacuum TEST table

前言

默认情况下,vacuum表不能释放磁盘空间,只是在dead tuple做个标记位,但heap table末端的垃圾页可以被truncate,从磁盘中释放空间。例如表的末尾的100个数据块里面全是垃圾,那么这100个数据块可以truncate阶段,文件也会变小。而位于其他位置的垃圾页,不能回收,因为会影响寻址(ctid)的变化,而末尾全垃圾的页被截断时不影响寻址。但是KingbaseESV8R6开始,这个截断动作可以被控制,如果表的参数vacuum_truncate设置为false,那么末尾的垃圾页不会被回收。

有这样一个例子,一些表还会往里面写入大量数据时,没有必要回收,因为extend block也是有锁的,还有收缩文件需要对表加access exclusive lock,那么会产生锁冲突,这时候可以将vacuum_truncate设置为false。

vacuum_truncate controls whether vacuum tries to truncate off any empty pages at the end of the table. Previously vacuum always  tried to do the truncation. However, the truncation could cause  some problems; for example, ACCESS EXCLUSIVE lock needs to  be taken on the table during the truncation and can cause  the query cancellation on the standby even if hot_standby_feedback  is true. Setting this reloption to false can be helpful to avoid  such problems.  

例子

1、创建两张表,表u1的vacuum_truncate设置为false,表u2使用默认参数。

test=# create table u1(id int,info text) with(vacuum_truncate=false);
CREATE TABLE
test=# create table u2(id int,info text);
CREATE TABLE

2、插入数据,查看表大小

TEST=# insert into u1 select generate_series(1,100000),md5(random()::text);
INSERT 0 100000
TEST=# insert into u2 select generate_series(1,100000),md5(random()::text);
INSERT 0 100000
TEST=# \dt+ u1;
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+--------+---------+-------------
public | u1 | table | system | 6760 kB |
(1 row)

TEST=# \dt+ u2;
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+--------+---------+-------------
public | u2 | table | system | 6760 kB |
(1 row)

3、删除末端数据,对比观察表大小是否变化
可以看到u2表末端的空间被回收了,而u1表大小不变。

TEST=# delete from u2 where id <> 1;
DELETE 99999
TEST=# vacuum u2;
VACUUM
TEST=# \dt+ u2
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+--------+-------+-------------
public | u2 | table | system | 48 kB |
(1 row)

TEST=# delete from u1 where id <> 1;
DELETE 99999
TEST=# vacuum u1;
VACUUM
TEST=# \dt+ u1
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+--------+---------+-------------
public | u1 | table | system | 6768 kB |
(1 row)

启用或禁用真空以尝试截断此表末尾的所有空白页。默认值为true。如果为true,则VACUUM和autovacuum执行截断操作,并将截断页面的磁盘空间留给操作系统。但是,截断需要表上的访问独占锁。这可能会阻塞查询操作。
注意:如果vacuum_truncate为true,在vacuum 时会尝试获取ACCESS EXCLUSIVE lock,如果无法取得 ACCESS EXCLUSIVE lock , 则跳过,不会进行trucate 操作。

标签:KingbaseESV8R6,truncate,u1,u2,heap,vacuum,TEST,table
From: https://www.cnblogs.com/kingbase/p/17173072.html

相关文章

  • LSM-Tree (BigTable 的理论模型)[转]
    Google的BigTable架构在分布式结构化存储方面大名鼎鼎,其中的MergeDump模型在读写之间找到了一个较好的平衡点,很好的解决了webscale数据的读写问题。MergeDump的理论基础是LSM-Tree(Log-StructuredMerge-Tree),原文见:LSMTree下面先说一下LSM-Tree的基本思想,再记录下读文章的几......
  • element -plus el-table序号翻页连续
    <el-table-columnlabel="序号"type="index"align="center"width="50"><template#default="scope"><span>{{(current_page-1)*pageSize+scope.$index+1......
  • QT 中的QTableWidget
     ......
  • Linux添加防火墙、iptables的安装和配置
    由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables。#停止firewallsystemctlstopfirewall.service#禁止firewall开机启动systemctldisablefirewall.service#安装iptablesyuminstalliptables-services #编辑防火墙文件(建议都在配置......
  • rman测试备份跳过固定表空间后做全库恢复 (recover database skip tablespace )
    rman备份排除表空间:备份过程截图:备份脚本:run{allocatechannelt1devicetypedisk;allocatechannelt2devicetypedisk;backupascompressedbackupsetincrementallevel0filesperset10format'/u01/backup/data_%T_%U'database;sql'altersystemarc......
  • React学习时,自己拟定的一则小案例(table表格组件,含编辑)
    某次在Uniapp群看到有人问uniapp如何操作dom元素。他想对这张表标红的区域,做dom元素获取,因为产品想让红色色块点击时,成为可编辑,渲染1~4月份之间的行程安排。于是,有小伙伴说让他用position定位这里,点击时使红色色块层级抬高,弄个input上去。但提问的小伙伴并没有决定这么做,随后......
  • 苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程
    StableDiffusion的部署对小白来说非常麻烦,特别是又不懂技术的人。今天分享两个一键傻瓜式安装包,对小白来说非常有用。下面两个任选一个安装就可以。一、DiffusionBee简单介绍DiffusionBee是基于stablediffusion的一个安装包,有图形界面,直接安装就能使用,安装完成后会自行下载两......
  • 视频直播源码,动态合并element-ui el-table列和行
    视频直播源码,动态合并element-uiel-table列和行HTML: <template>  <div>    <el-table     :data="tableData"     show-summary     :span-method="arraySpanMethod"    style="width:100%">      <......
  • Lattice-Based Group Signatures With Time-Bound Keys via Redactable Signatures
    ......
  • 【题解】[ABC304F] Shift Table(容斥)
    【题解】[ABC304F]ShiftTable题目链接ABC304F题意概述Takahashi和Aoki将在接下来的\(N\)天里兼职工作。Takahashi这\(n\)天的出勤情况由字符串\(S\)表示,其中\(S\)的第\(i\)个字符是#则表示他在第\(i\)天工作,第\(i\)个字符是.表示他在第\(i\)天休息......