openGauss 高效数据压缩算法

news2024/12/23 4:36:02

openGauss 高效数据压缩算法

2.1 主要创新技术点

openGauss 的主要创新技术点总结如下:
(一)改进压缩算法,压缩数据单位依然是选择页级别,进一步结合 Page 结构以及本身数据的特征,将 page 交给通用压缩算法前,先将 Page 按照字节级别进行有序转换、或者是多页联合重组、或者是差分预处理,这样能获得更高的压缩率,且这一步预处理几乎不会带来多大的性能损耗。
(二)压缩存储块管理,单个页面压缩后的压缩块以 chunk 为粒度进行存储,然后将存储结果和页面的映射关系进行管理,因此相对于压缩页面需要在内存和磁盘之间加一层映射关系管理,记录页面压缩块与 chunk 存储单元之前的关系,我们称之为压缩页面地址管理(pca),对应的将记录压缩块 chunk 的页面称为压缩页面数据管理(pcd)。非压缩页面的页面号与存储资源 block 是一一对应的,不需要单独管理。Pca 中不但要记录每个页面的压缩块使用了哪些 chunk 资源块,而且记录了 chunk 资源块的排列顺序,在页面访问时都先通过查询地址管理页面才能找到压缩块的存储位置。由于使用了更小的 chunk,将每个页面节省的空间累积在一起,通过打洞方式返还给操作系统。

2.2 功能实现

在 page 页面落盘之前,根据条件 (是否多页联动、差分预处理等) 选择相应压缩算法,对单页面 page 进行压缩,压缩后至少需要一个 chunk 来存储,以 page 大小 8K 为例,选择 4K,2K,1K,0.5K 的压缩后理论上限分别为 50%、25%、12.5%,6.25%。同时 chunk 的个数也决定了每个页面压缩后的大小不是连续变化的,而是以 chunk 大小阶跃变化。同时以一个 ext 单元的形式进行存储,一个 ext 单元由 128 个 pcd 数据页面和 1 个 pca 映射页面组成。Pcd 数据页面预划分为 8k,即使不进行压缩,存储单元也足够存储。将压缩后的 chunk 块存储在每个 pcd 页面,将剩余的空间进行打洞反还给操作系统。将映射消息记录在 pca 页面,为 pca 页面建立 pcabuffer 缓存,方便快速访问。

落盘过程原理图:

3 压缩方案应用场景

1. 在线生产环境 OLTP,减少实时数据对磁盘空间占用。
2. 数据库文件压缩备份存储,减少备份数据磁盘空间占用。
3. 主备物流文件复制的场景,减少传输过程的网络带宽。
下面以开源备份工具 gs_basebackup 兼容压缩表数据备份示例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用ClickHouse JDBC官方驱动,踩坑无数

前言 最近遇到一个ClickHouse的线上问题: Code: 242, e.displayText() DB::Exception: Table is in readonly mode(zookeeper path:/clickhouse/tables/02/xxx) (version 21.12.4.1) (official build) 这个问题我在网上查原因说是由于Zookeeper压力过大&#xf…

MySQL基础篇之多表查询(内连接、外连接、自连接、子查询、union)

05、多表查询 5.1、多表关系 1、概述 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分…

maven学完总结!少走弯路一百遍

一、学习方式 学完maven大概花了两天的时间,其实之前学javaweb时用的是maven,因此有点接触,一到两天便能学完maven。 这次我也做了每个知识点的流程图。 但是我学完之后我发现可能没什么要做流程图的,因为更多的是自己动手操作的…

澳大利亚昆士兰大学博士后职位—生物活性肽

【国外博士后招聘-知识人网】澳大利亚昆士兰大学博士后职位—生物活性肽 昆士兰大学(The University of Queensland),简称“昆大”“UQ” ,世界高等科研学府。始建于1910年,是昆士兰州第一所综合型大学,同时…

网页JS自动化脚本(二)查找定位页面元素的方法

我们写脚本往往是要提取某些关键字,那么我们对于元素的查找和定位就很重要首先我们打开浏览器,鼠标右键点击我们想要定位的元素,然后点击审查元素 然后浏览器会弹出调试工具台,我们继续看下图右侧的调试工具台 可以看到我画了9个序号,可以看到从第1个到第7个全部是div容器元素,…

[附源码]Python计算机毕业设计Django+Vue的健身房会员系统的设计与实现

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

数字信号处理-11-FPGA FFT IP应用实例

前言 本文根据FFT相关原理进行设计构建工程,仿造前文的工程构建的混频功能的工程,设计工程显示该混频信号的功率谱,然后进行仿真分析。 FFT仿真与分析 本文不再针对FFT的原理进行过多赘述,提供一份简单的matlab仿真代码。根据仿…

在Soliworks中便捷添加自己的LOGO

在Soliworks中,一般采用草图图片样条曲线的方式绘制个人logo,但是对于一些复杂的logo,对每个模型都绘制一遍显然是不显示的,所以我摸索了一套只需绘制LOGO一遍,就能够将其应用在其他模型的方式。 1. 绘制LOGO 采用草…

黑马点评--好友关注

好友关注: 关注和取关 在探店图文的详情页面中,可以关注发布笔记的作者: 需求:基于该数据结构,实现两个接口 关注和取关接口 Overridepublic Result follow(Long id, Boolean isFollow) {// 1.获取登录用户Long us…

软件设计师教程(二)计算机系统知识-计算机体系结构

软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 计算机体系结构软件设计师教程计算机体系结构的发展计算机系统结构概述计算机体系结构分类指令系统指令集体系结构的分类CISC和RISC指令的流水处理阵列处理机、并行处理机和多处理…

wy的leetcode刷题记录_Day51

wy的leetcode刷题记录_Day51 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-11-24 前言 目录wy的leetcode刷题记录_Day51声明前言795. 区间子数组个数题目介绍思路代码收获98. 验证二叉搜索树题目介绍思路代码收获795. 区间子数组…

Linux中修改环境变量的几种方法比较分析

修改环境变量的作用 使得命令可以在命令行直接运行 第一种方式,在终端直接使用export **特点:**即可生效,无需重启或刷新文件;终端关闭则失效 第二种方式,修改/etc/profile文件 特点:对所有用户永久有…

算法刷题打卡第29天:省份数量---并查集

省份数量 难度:中等 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不…

SQL注入漏洞 | iwebsec

文章目录靶场搭建SQL注入漏洞靶场搭建 配置 云服务器:阿里云 系统:CentOS 7.6 靶场:iwebsec CentOS-7.6安装docker 安装iwebsec 启动靶场 docker run --restartalways --name iwebsec -it -dp 8001:80 iwebsec/iwebsec访问不成功 可能是…

希望流程挖掘成为撬动企服市场的突破口 | 专访凡得科技CEO海广跃、首席技术顾问刘聪

2022年,全球流程挖掘市场规模预计将达70多亿人民币,而目前中国流程挖掘行业尚处于市场启蒙期,仅少数大型企业与机构对流程挖掘进行了初步或尝试性的投入。从目前来看,原生流程挖掘厂商会直接面向客户输出流程挖掘能力,…

Spring集合注入

一、环境准备 创建一个Maven项目pom.xml添加Spring依赖resources下添加spring的配置文件applicationContext.xml项目中添加BookDao、BookDaoImpl类 public interface BookDao {public void save(); }public class BookDaoImpl implements BookDao {private int[] array;priva…

容器云平台初始化(harbor的安装部署)

1.虚拟机规划 设备说明主机名接口IP地址虚拟机1MasterEth010.0.0.10/24虚拟机2Node1Eth010.0.0.20/24虚拟机3HarborEth010.0.0.30/24 2.容器云平台初始化(harbor的安装部署) 1.根据规划的IP地址,创建虚拟机,确保网络正常通信。按照规划表修改主机名并关…

Linux-ACL权限

ACL权限简介 ACL:access control list 允许给任何用户或者用户组设置任何文件或者目录的访问权限 查看Linux是否开启ACL dumpe2fs Linux一般都开启了ACL权限,可以使用下面的命令查看分区的ACL权限是否打开 首先可以使用df -h或者lsblk来查看Linux系统…

JioNLP上的那些好用的冷门工具

大家好,JioNLP(https://github.com/dongrixinyu/JioNLP)目前已经在Github上有了1600星的点赞,下载安装量大概有几万了。 被使用最多的功能,也是被问得最多的,主要是关键短语抽取、时间语义解析、地址按省市县三级解析等等。其它功…

程序员迷茫:30岁以上的“大龄程码农”出路在哪?java码农该怎么办?

程序员生存、成功、制胜的法则源自IT精英的职业发展秘诀热爱工作,享受生活 为什么程序员过了30就不行了? 我们被固定在“敲代码”的坑里,一干就是10年,再干别的早已不会。敲代码已经成了一项流水线般的工作,就像搬砖工…