ITPub博客

首页 > 数据库 > 国内数据库 > 【YashanDB 知识库】关于表空间压缩

【YashanDB 知识库】关于表空间压缩

原创 国内数据库 作者:崖山数据库系统YashanDB 时间:2025-01-20 18:26:46 0 删除 编辑

本文内容来自 YashanDB 官网,原文内容请见  https://www.yashandb.com/newsinfo/7106886.html?templateId=171...

实现方法
1、YashanDB 的表空间压缩通过文件打洞 (Hole Punching) 实现。
2、“文件打洞” 简单地说,如果文件中有连续字节 0x00 出现,只需要记录 0 字节数据块开始出现位置和块长度,而不需要实际保存原数据块。
3、表空间压缩支持 LZ4 (默认),ZSTD 两种压缩算法。
4、数据库首先对 BLOCK 内容进行压缩,然后根据压缩结果做如下操作:
● 压缩失败或压缩之后的大小大于等于 BLOCK 大小,则不压缩,写入原始的 BLOCK
● 压缩释放的空间不足一个文件系统的页大小,则不压缩,写入原始的 BLOCK
● 压缩释放的空间大于等于一个文件系统的页大小,将释放的空间按照文件系统的页向下取整,写入压缩后的 BLOCK,并将释放的空间进行打洞
5、DBWR 写入时进行压缩;读取到 DATA BUFFER 过程解压。

环境要求
不是所有的文件系统都支持文件打洞功能,目前支持的文件系统有:xfs,ext4, btrfs, tmpfs, gfs2。此外,YashanDB 还要求文件系统的的页大小为 512、1024、2048 或 4096。

使用方法
创建表空间时指定压缩属性及压缩算法,示例如下:

CREATE TABLESPACE tbs_data COMPRESS lz4;

如何查看压缩率
在视图 v$datafile 中字段 disk_bytes 表示 datafile 在文件系统中实际大小

SELECT id, name, bytes, disk_bytes, bytes/disk_bytes as compression_ratio FROM v$datafile;

压缩率与哪些因素有关
1、首先是数据本身
2、与数据库 BLOCK 大小,及文件系统的页大小有关,如果 BLOCK 大小为 8K,文件系统页为 4K,每个 BLOCK 最多只能节省一个文件系统页 (4K),因此理论上压缩率不超过 50%,建库时选取更大的 BLOCK 大小有可能提升压缩率


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3069635/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639958