SQL SERVER系列(二):数据压缩技术引领数据库新潮流

来源:互联网 发布:json语法 编辑:程序博客网 时间:2024/05/16 16:56
     在数据库应用中,系统性能的瓶颈主要是在磁盘IO上,相比于CPU速度的不断提高(摩尔定律)和多核CPU的普及,以及数据的迅速增长,磁盘IO的性能提高却很慢,这也导致磁盘IO的瓶颈现象愈发严重,使得提高数据库性能的努力遇到了很大障碍。于是各大数据库厂商都是绞尽脑汁,想尽各种办法来提高数据库的性能,一种以时间来换空间的优化技术——数据压缩技术正慢慢变得越来越流行。数据压缩技术对于数据库而言,既能加快读取的速度,又降低了磁盘的存储消耗空间,可谓一举两得,但同时也不能忽视数据压缩/解压缩带来的额外CPU和时间的消耗。
     事实上,在数据库中采用压缩技术并不是什么新想法,早在上世纪八十年代,就有很多学者做过这方面的研究(参见后附的相关论文)。由于当时的软件和硬件的条件所限,这些早期的尝试并没有取得显著的成功。但随着人类迈入二十一世纪,计算机在软硬件方面都有了长足的进步,尤其是多核CPU的普及,使得数据压缩技术进入数据库的障碍不在存在。
    Oracle从9i开始就引入了表级的压缩技术(Table Compression in Oracle9i Release2),但存在很多限制,只能对批量装载操作涉及的数据进行压缩,普通的DML操作的 数据是无法压缩的。这应该是对于写操作的压缩难题没有解决,一直遗留到Oracle11g,总算是解决了关系数据压缩的写性能问题(Data Compression in Oracle)。Oracle11g推出了一个叫做Advance Compression的组件,全面支持普通表压缩和非结构化数据压缩。根据Oracle的宣传,“ 相比在无压缩格式下存储数据,新的Oracle数据压缩技术能够确保以较小的开销节省三倍以上的磁盘存储空间。”
    在三大数据库SQL Server、Oracle和DB2中,DB2的一个劣势就特别耗存储空间,需要更多的磁盘空间,因此DB2当然不会对数据压缩技术视而不见。事实上,IBM并非第一次在DB2中使用数据压缩技术,但之前的尝试似乎并不成功,直到DB2 Viper(DB2 9)中内嵌代号为“Venom”的数据压缩技术,DB2中的数据压缩技术才真正成熟。GY'uo(gj Venom压缩技术实际上承袭自IBM的大型计算机数据库,通过应用行压缩(row compression)技术和基于字典的压缩算法来压缩数据对象。IBM宣称,基于数据行的压缩技术将“让Oracle基于表的压缩功能相形见绌”,它能够把大型数据库需要的存储空间减少一半,在某些情况下压缩比甚至可以高达72%。
    相比于Oracle和DB2中很早就开始尝试使用数据压缩技术,SQL Server就显得有点“麻木不仁”了,一直没有什么动作。直到Oracle 11g和DB2 Viper的相继推出,并且将数据压缩技术作为主要的亮点进行大肆宣传,微软终于也坐不住了。微软最早的尝试是在SQL Server 2005 SP2中推出的基于vardecimal格式的存储改进(Reducing Database Size by Using Vardecimal Storage Format),但这仅仅是针对于Decimal和Numeric数据类型的存储优化,还算不得一般意义上数据压缩。从目前微软透露出的信息来看,即将于明年一季度推出的SQL Server 2008(代号Katmai)才可能是微软第一次真正在数据库中引入数据压缩技术(SQL Server 2008 Data Compression)。
    虽然在SQL Server 2008最近的July CTP中我们仍然不能看到数据压缩的功能,但根据微软的宣传,数据压缩将是SQL Server 2008的一个主要新增特性,其主要的目的是减小表的尺寸。在SQL Server 2008中,使用数据压缩的好处包括以下几点:
        (1)通过减少I/O和提高缓存命中率来提升查询性能
        (2)提供对真实际数据2倍到7倍的压缩比率
        (3)和其他特点是正交的
        (4)对数据和索引都可用

  据微软所说,使用压缩时会轻微的增加CPU的使用,整个系统的性能会因为I/O的减少而得到提升,对此我们也只能拭目以待了。


SQL Server 2005 SP2

(1) Reducing the Size of your Database in SQL Server 2005/SP2
(2) Enabling vardecimal storage format
(3) Estimating the space savings with vardecimal storage format
(4) Vardecimal Storage Format and its implications on Backup/Recovery
(5) Boundary conditions for enabling vardecimal storage format
(6) Data row before and after vardecimal storage format
(7) Reducing Database Size by Using Vardecimal Storage Format


SQL Server 2008

(1) SQL Server 2008 Data Compression
(2) Data Compression: Why Do we need it?
(3) Data compression techniques and trade offs
(4) Katmai (Sql 2008) - Data Compression (including Backup Compression)


DB2 Viper

(1) DB2 Storage Optimization
(2) Introducing DB2 9, Part 1: Data compression in DB2 9
(3) Index Compression with DB2 9 for z/OS
(4) Shrink your database using DB2 9 for Linux, UNIX, and Windows row compression
(5) DB2 9: Row compression and large RIDs
(6) Row compression in DB2 9
(7) The incredible shrinking data: DB2's Compression - Part I
(8) The incredible shrinking data: DB2 Data Compression Part II
(9) The incredible shrinking data: DB2 Data Compression Part III
(10)Cut storage consumption in half with DB2 Viper Compression
(11)How to use compression in DB2 Viper
(12)More on Compression - CPU utilization
(13)Compression comparison to Oracle and Microsoft

Oracle

(1) Data Compression in Oracle
(2) Oracle 11g Data Compression Tips for the Database Administrator
(3) Oracle whitepaper on 11g data compression
(4) Oracle Advanced Compression
(5) Table Compression in Oracle9i Release2
(6) Oracle Table Compression


其他论文

(1) 一种有效的关系数据库压缩方法
(2) Relational Database Compression Using Augmented Vector Quantization
(3) The Implementation and Performance of Compressed Databases
(4) Query Optimization In Compressed Database Systems
(5) Compression and Query Execution within Column Oriented Databases
(6) Data Compression and Database Performance
(7) Efficient columnar storage in B-trees
(8) Data Compression Support in Databases
(9) Compressing Data Cube in Parallel OLAP Systems
(10)Database Compression: A Performance Enhancement Tool
(11)Block-Oriented Compression Techniques for Large Statistical Databases
(12)Compressing Relations and Indexes
(13)Improving Table Compression with Combinatorial Optimization
(14)Order Preserving String Compression
(15)ItCompress: An Iterative Semantic Compression Algorithm