原文链接:http://blog.inkernel.info/archives/1.html


压缩功能几乎是当前主流数据库的标配功能,除了能够节省存储空间外,在IO密集型的系统中, 可能也会带来性能的提升。由于我们的存储引擎也需要做记录级压缩的功能,所以很长的一段时间都在研究数据库压缩的技术,包括算法的选型及优化,当然这之前要对现有主流数据库的压缩功能做一些调研。 资料的来源比较分散,有手册,论文,也有其他的网络资料, 所以也未一一标出出处,如有疑问,欢迎提出。

DB2中行级压缩的特性

  1. 在DB2中引入了一种叫Venom的技术,是基于字典的压缩方法。其中字典存储在一个内部数据结构中,并缓存起来以提高查询的速度(Thedictionary for compression/decompression lookup is stored in hiddenobjects in the database, occupies little space, and is cached in memoryfor quick access)。
  2. DB2会有算法检测如果对记录进行压缩是否会带来空间的节约,如果不节约就不进行压缩,估计是对部分数据进行采样获得(When compressinga large table, it may be useful to populate the table with a small setof "representative" or sample datafirst.)。对于新加入的记录,还是继续沿用老的采样获得的字典,但是提供REORG命令供重组字典并重新压缩。
  3. DB2采用的是不同于Oracle的全局字典,而不是页内建字典(By building a compression dictionaryat the table rather than page level, patterns across the entire tableare analyzed, generally resulting in improved disk savings with DB2.)
  4. DB2中缓存在Buffer中的数据也是压缩格式的(Furthermore, DB2 keeps the data compressed onboth disk and memory (DB2 buffer pools), thereby reducing the amount ofmemory consumed, and freeing it up for other database or systemoperations.),这样实现即使每次从内存中读取记录都要解压缩一次。
  5. 写入日志的记录数据也进行了压缩(Thesize of database logs can also be reduced since DB2 compresses userdata within logrecords.)。

Oracle 11g中行级压缩的特性:

  1. Oracle 11g引入的行级压缩是发生在数据块内的,每一个数据块内建有一个symbol表,相当于压缩字典。 在缓存中数据是以压缩形式存在,这跟DB2是类似的, 可以增加缓存命中率, 减少IO从而提高性能。
  2. 发生更新,插入,删除操作的时候,通过一个阀值控制是否进行压缩。
  3. 使用ALTER TABLE在线更改表模式指定压缩时只对后面新插入的记录生效,原有记录不会被压缩(You can alter thecompression attribute for a table (or a partition or tablespace), andthe change only applies to new data going into thattable)。但是可以通过命令把原纪录也变成压缩格式(Existing data in the database can also becompressed by moving it into compressed form through ALTER TABLE andMOVE statements.)。
  4. 对读操作没有性能影响,但是对写操作应该有一些影响,Oracle通过批处理解决(Oracle compresses blocks in batch mode rather than compressing dataevery time a write operation takesplace.),即当新初始化的块中插入的记录达到一定阀值后才进行压缩,继续往这一个块中插入记录,那么都会进行重新压缩以达到更高的压缩比,这一步骤会重复直到检测到再进行重新压缩已经没什么好处了才会不再进行。
  5. Oracle的段内压缩比较适合用于更新比较少的应用,更适合OLAP而不适合OLTP,频繁地更新可能会带来比不压缩更多的空间浪费,因为频繁地更新可能会导致记录的迁移。

falcon中压缩的特性:

  1. 如果某一列设了默认值,则不会在列中存储默认值。
  2. buffer中缓存的是非压缩的完整记录;
  3. 记录压缩,准确地说应该是编码,是采用一种密集的自描述结构,Nulls, zero length strings, and numbers -10 to 31只用一个字节表示;其他整型,取决于大小,可能需要1-8位的类型描述,所有的整型统一编码;
  4. using only as many bytes for integer as it requires, not storing column value if it is default

关于falcon中的数据压缩包括官方文档在内的资料中介绍得很少,事实上其功能应该相对比较简单,压缩比也不大,Jim Starkey本人称其为'encoding',而不是'compression'。

SQL Server 2008压缩特性

SQL Server似乎是2008之后才引入的压缩的功能,是采用行级压缩和页级压缩相结合的方法。其中行级压缩主要针对整型以及char类型。

  1. 将对所有数据类型的 NULL 和 0 值进行优化,从而使它们不占用任何字节。
  2. 减少了与记录相关联的元数据开销。此元数据为有关列、列长度和偏移量的信息。在某些情况下,元数据开销可能大于旧的存储格式。
  3. 对于数值类型(例如,integer、decimal 和 float)和基于数值的类型(例如,datetime 和 money)使用可变长度存储格式。
  4. 通过使用不存储空字符的可变长度格式来存储定长字符串(删除尾随字符串)。
  5. 页级压缩是先采用前缀压缩,再采用字典压缩;在页中添加新纪录时不会马上进行页压缩,只有当页满且有新记录插入时才进行页压缩;
  6. 数据不是以固定大小的字节进行存储,而是用最小所需的字节,只需要启用行压缩功能就可以执行。但是,行压缩无法处理XML、BLOB和MAX数据类型;

转载于:https://www.cnblogs.com/rickylee/archive/2010/10/15/1852588.html

几种主流数据库的压缩技术对比相关推荐

  1. 数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复“数据库2018”下载典藏版PDF报告)

    数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复"数据库2018"下载典藏版PDF报告) 秦陇纪 数据简化DataSimp 今天 数据简化DataSimp导读: ...

  2. 主流视频编码压缩技术基本概念(二) 算法分析

    主流视频编码压缩技术基本概念(二) 算法分析 一.MPEG-1技术介绍 1. MPEG-1的层次及语法结构 ①.运动补偿序列(Sequence) ②.图片组(GOP) ③. 图片(Picture) ④ ...

  3. 主流视频编码压缩技术基本概念(一)

    主流视频编码压缩技术基本概念(一) 一.多媒体技术基本 1.图像的色彩模型 二. 静态图像压缩技术 三.视频编码压缩技术基础 有冗余就有可压缩的数据 图像通用格式 一.多媒体技术基本 1.图像的色彩模 ...

  4. 四种主流的视频图像处理技术——北京明景科技

    四种主流的视频图像处理技术--北京明景科技 数字视频和数字图像比传统的图像和视频分辨率要高,处理方便,易于操作和整理.但由于部分设备性能不足.客观条件限制等因素,在实际的视频监控应用中,仍会出现视频图 ...

  5. 扫地机器人如何才能避障不“智障”?五种主流的避障技术解析

    转载于:https://robot.ofweek.com/2020-09/ART-8321203-8110-30457608.html 现如今越来越多的家庭开始选择使用扫地机器人来完成地面的清洁. 然 ...

  6. 三种主流无线同屏技术介绍(Miracast、DLNA与AirPlay技术)

    不知道大家对无线同屏技术有多少了解,当这种技术普及的时候,我想我们的工作与生活又会方便很多吧!下面是目前三种主流同屏技术的介绍: 目前这种将终端信号经由WiFi传输到电视.电视盒的技术有三种:DLNA ...

  7. 一口气说出4种主流数据库ID自增长,面试官懵了

    ??? 哈喽!大家好,我是[],江湖人称jeames007,10年DBA工作经验 一位上进心十足的[大数据领域博主]!??? 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Or ...

  8. 4 种主流的 API 架构风格对比

    欢迎关注方志朋的博客,回复"666"获面试宝典 本文讨论了四种主要的 API 架构风格,比较它们的优缺点,并重点介绍每种情况下最适合的 API 架构风格. 两个单独的应用程序需要中 ...

  9. Smartbi智分析一网打尽50种主流数据库:本地+SQL+NoSQL +多维

    Smartbi智分析是新一代云端SaaS数据分析平台,在数据分析领域有着无与伦比的天然优势,除了拥有EXCEL融合分析.ETL.透视分析等众多王牌的功能外,最主要的优势还是在于数据源的支持上.Smar ...

最新文章

  1. 图解支付宝钱包技术架构
  2. Fortify:五大SOA架构都有安全漏洞
  3. 1、spring的IOC
  4. Django框架(8.Django中的模板文件的使用和模板变量的简单使用)
  5. Python面向对象,类,继承,多态及鸭子类型,获取类的类型,方法和属性(类似java的反射)
  6. 棋牌游戏服务器架构: 详细设计(二) 应用层设计
  7. Linux下多显卡选择绘制实验记录
  8. 格力又有新专利了:“一种铁芯冲片、电机及新能源汽车”
  9. 用python实现中文词云完整流程(wordcloud、jieba)
  10. [学习笔记] Cordova+AmazeUI+React 做个通讯录 - 联系人列表(2)
  11. PPDE三星私有协议
  12. 从sql2016导出数据库到sql2014
  13. 区块链毕业设计中期检查表模板
  14. matlab仿真高尔顿正态分布源码,杂谈 | 正态分布为什么如此常见
  15. Windows子系统(GUI)
  16. 【Orientation】详解Android中的屏幕方向
  17. Jquery写的幸运大转盘抽奖实例,用asp.net处理的服务器逻辑,附源码下载
  18. WIN XP SP2系统经常性死机问题解决历程
  19. 直击汇佳学校|中考后转轨国际学校 重大改变的他们现在如何?
  20. 病理与病理生理学【1】

热门文章

  1. 给谷歌浏览器添加网页翻译插件
  2. 推荐朋友发项目来开源众包吧,成交立享5%的成交额提成!助人为乐还赚钱
  3. Cadence PCB封装绘制
  4. 在-Linux-上安装-Stata
  5. 查询本机或线上服务器上oracle版本的方法
  6. 超薄、散热、柔性 LED贴膜屏发展及产业趋势发展
  7. 2022年塔式起重机司机(建筑特殊工种)考题及在线模拟考试
  8. 并行算法的设计与分析
  9. html5 webgis开发,WebGIS开发-openlayers5入门(1)
  10. Linux下Python脚本的编写(二)