数据压缩还能这么玩,国产数据库有救了!

页级压缩

alt

opengauss数据库是以数据页面(Page)为单位进行压缩解压,本特性自openGauss 3.0.0版本开始引入,通过对数据页的透明页压缩和维护页面存储位置的方式,做到高压缩、高性能。提高数据库对磁盘的利用率。

页级压缩方案

数据页面在写入到磁盘前进行压缩,内存中数据为未压缩的状态。数据页面压缩后,拆分为多个定长(1K/2K/4K)的Chunk存储,压缩算法支持lz4和zstd。

行级压缩

alt

本特性自MogDB 3.1.0版本开始引入。 在数据写入aStore行存表时,后台对数据进行压缩,典型场景下可以获得50%的存储空间节省,同时通过后台流控技术减少对系统资源的占用,性能几乎无损。

行级压缩方案

MogDB以数据行(Tuple)为单位进行压缩解压,以页面为单位训练字典。数据页面在写入内存页面时,准实时完成压缩,内存中为压缩状态,自研轻量级压缩算法。以记录行为单位进行压缩解压,对于OLTP点查场景,只需要解压一行数据,没有解压放大,能够获得更好的查询性能;

内存中的页面为压缩状态,在相同Shared Buffer大小下可以提供更高的内存命中率,进而提升查询性能;

在MVCC(多版本并发控制)查找历史版本链时,无需解压中间版本,只需要解压目标版本的数据行。这样可以大大减少解压的工作量,提高查询性能;

采用多数据页共享字典的方案,相比单表训练字典的方案,压缩字典可以随数据的变更自动演进,没有字典逐渐失效的问题。

优点

  • OLTP点查场景,只需要解压一行数据,没有解压放大;
  • 延迟解压,MVCC查找历史版本链时无需解压,只需要解压目标版本;
  • 内存中页面为压缩状态,相同Shared Buffer容量下,内存命中率更高;
  • 页内压缩,无page颗粒压缩的对齐空洞和磁盘碎片问题;
  • 多个页面一起训练并共享压缩字典,减少字典空间占用;
  • 专用字典解码器缓存,解压时无需频繁构建解码器,提升解码性能。

行级压缩支持的功能

Astore行级压缩支持如下功能:

  • 创建和修改压缩表;
  • 在对压缩表进行读写操作时自动完成压缩或解压操作;
  • 支持压缩表主备同步;
  • 支持压缩表过期版本回收;
  • 当数据导入到压缩表时支持自动完成压缩;
  • 支持通过GS_COMPRESSION视图展示系统所有压缩表的压缩情况;
  • 兼容一级分区表,包括移动、迁移、合并、更新,分裂,添加,删除,截断分区等所有功能;兼容二级分区表,二级子分区的相关操作包括新增、删除、分裂、截断分区;
  • 支持在段页式模式下创建压缩表,且段页式压缩表增删改查等特性能正常执行;
  • 压缩表兼容MogDB已经发布的工具;
  • 在autovacuum线程中加入compress page流程,减少磁盘IO次数,加锁次数,从而降低后台压缩开销;同时,Astore行级压缩优化了相关压缩算法;表的压缩效果对用户透明。

行级压缩约束

  • 仅对Astore行存表生效,不能用于Ustore行存表、列存表和MOT;
  • 默认创建非压缩表;
  • 不能为系统表指定压缩属性;
  • 不能为外表指定压缩属性;
  • 不支持tablespace压缩属性;
  • 分区压缩表,单个分区数据量大于128MB才会执行压缩;
  • 普通vacuum命令,不会执行压缩,vacuum full命令会执行压缩;
  • 后台压缩节省出来的空间不会立即反应到磁盘的空间占用,后续的数据插入会重复使用压缩节省出来的空间;
  • 不支持3.0版本的段页式压缩表升级到5.0版本。如果3.0版本中有段页式压缩表,升级前请将段页式压缩表中的数据导入非压缩表进行备份,然后将段页式压缩表删除,升级完成后重新创建段页式压缩表,并将备份的数据导入新创建的段页式压缩表;

实战

1、创建压缩表和非压缩表。

MogDB=# CREATE TABLE tb_mogdb_compress (id INT, name TEXT, addr TEXT, info TEXT) WITH (compression = yes);
CREATE TABLE
MogDB=# CREATE TABLE tb_mogdb_no_compress (id INT, name TEXT, addr TEXT, info TEXT);
CREATE TABLE

2、插入随机数据。

MogDB=# INSERT INTO tb_mogdb_compress VALUES (generate_series(0, 1999999), 'fasdfasdhigasidfdfhgioashdfgohaosdgh', 'fasdfasdfasdahasdhsfsdgstyjdth', 'fasdhgsoidfhisdifgiosdfiogio');
INSERT 0 2000000
MogDB=# INSERT INTO tb_mogdb_no_compress VALUES (generate_series(0, 1999999), 'fasdfasdhigasidfdfhgioashdfgohaosdgh', 'fasdfasdfasdahasdhsfsdgstyjdth', 'fasdhgsoidfhisdifgiosdfiogio');
INSERT 0 2000000

3、执行vacuum full可以立即触发压缩指令。

MogDB=# vacuum full tb_mogdb_compress;

4、查看压缩表和非压缩表所占大小。

MogDB=# \d+
                                             List of relations
 Schema |         Name         | Type  | Owner  |  Size  |              Storage              | Description 
--------+----------------------+-------+--------+--------+-----------------------------------+-------------
 public | tb_mogdb_compress    | table | yaojun | 105 MB | {orientation=row,compression=yes} | 
 public | tb_mogdb_no_compress | table | yaojun | 256 MB | {orientation=row,compression=no}  | 
(2 rows)

可以看出节约了50%以上的存储空间节省,MogDB的行级压缩更省CPU,性能更好,适用于金融高负载场景。

本文由 mdnice 多平台发布

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
马尔科夫场边缘修复是指使用马尔科夫随机场模型来进行图像修复的方法。在图像修复中,通常会存在一些缺失的区域,需要通过填补这些缺失区域来还原图像的完整性。马尔科夫随机场是一种概率图模型,它可以描述图像中像素之间的依赖关系。通过建立马尔科夫随机场模型,可以利用图像中已有的信息来推断缺失区域的像素值。 在马尔科夫场边缘修复中,引用\[1\]中提到的隐式多样化马尔科夫随机场(ID-MRF)损失函数是一种常用的方法。该方法的主要思想是通过引导生成的特征斑点在缺失区域外找到其最近的邻居作为参照物,这些最近的邻居具有足够的多样性,从而可以模拟出更多的局部纹理细节。这种方法可以有效地提高边缘修复的质量和准确性。 另外,引用\[3\]中提到的PartialConv或PConv是一种用于处理带有多个不规则区域的蒙版图像的方法。它通过部分卷积的方式来进行图像修复,可以突破深层图像修补的限制,提供更好的修复效果。 综上所述,马尔科夫场边缘修复是一种利用马尔科夫随机场模型进行图像修复的方法,其中隐式多样化马尔科夫随机场(ID-MRF)损失函数和PartialConv(PConv)是常用的技术手段。这些方法可以提高图像修复的质量和准确性,尤其在处理多个不规则区域的情况下具有优势。 #### 引用[.reference_title] - *1* *3* [10篇必读深度图像修复论文,珍贵老照片有救了!](https://blog.csdn.net/jakpopc/article/details/112596327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [10篇必读深度图像修复文章,珍贵老照片有救了!](https://blog.csdn.net/weixin_39853968/article/details/112947539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值