IDS 11 数据压缩和存储优化

本文介绍IDS11数据压缩和存储优化技术,通过row压缩算法实现数据存储空间的节省,压缩后通常能节省60%-80%的空间,整个数据库存储空间节省可达40%-50%。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

IDS 11 数据压缩和存储优化
* 11.50.xC4 版本开始 IDS 具有该特性
概述
IDS通过对表及分片表进行数据压缩来减少磁盘存储空间,在进行压缩操作前,可以对压缩率进行提前估算,从而做到有针对性的有效压缩。同时支持对表的数据空间进行归并整理,可以实现对通过数据压缩和归并整理优化出来的空间进行释放到dbspace,从而实现最大限度的存储优化能力。
为什么要进行数据压缩?
日益信息化的世界里,充满着各种各样的数据,人们通过大量的存储设备来存储自己需要的各种数据信息,在实现世界中,信息的增长速度越来越快,存储设备开销占信息化管理成本比重越来越大,同时存储设备需要大量的电力来冷却存储设备及设备的运行。在如今激烈竞争的商业时代,如何为企业降低运行成本;在如今能源紧缺的今天,节约用电已是我们每个人都需要努力的目标。数据库存储了大部分企业的数据,因此对数据库的数据进行压缩,无疑能为企业节省一笔不菲的开支。有相关调查统计数据表明,一个10T的数据库一年运行成本为200万人民币。如果采用数据库压缩技术,把数据压缩40%,这样我们就能从中节省80万人民币。
IDS数据压缩技术
A.IDS数据库在数据压缩后的好处
  -极大地节省了磁盘存储空间
  -极大地减少了逻辑日志的使用,有效地防止高负载OLTP系统逻辑日志瓶颈问题
  -更少的page读,因为更多的数据行可以存储在同一个page上
  -更少的buffer pool
  -更少的I/O
  -对时间较的数据进行压缩,对近期频繁访问的数据不进行压缩
  -释放出压缩后不在使用的空间
  -更少的备份空间,更短的数据库备份与恢复时间
B.行(row)压缩算法概念
压缩算法在整个数据表(table)中寻找重复的模式(pattern),当模式被找到时,字符串被一个12比特(bit)的符号替代.符号被存储于一个数据字典中以供快速查找,在数据页(page)中数据是被压缩的 (不管是在硬盘上还是在缓冲池里)
显著的节省了输入输出的带宽– 更好的性能
显著地节省了内存空间– 更有效的内存使用
一些中央处理器(CPU)的额外开销
行(row)数据被处理前必须先被解压缩
可被压缩的表格被压缩后通常能节省60%到80%的空间
整个数据库的存储空间将被节省40%到50%
这意味着只要50%的磁盘空间就能够支持IDS11数据库!
C.压缩操作
  IDS压缩操作,对表、或者对分片表的某一个分片进行压缩操作。
  压缩过程包括几个步骤,每个步骤详细说明如下:
  * 每个操作在sysadmin数据库中运行,对于分片表,我们可以对整个表或者表的某一个分片进行压缩操作
  (1).压缩率评估
   IDS采用row压缩技术,通过替代位来代表重复的模式(pattern),和我们正常的文件压缩技术类似,如果数据重复率低,则压缩率较低,这种情况下,我们对表进行压缩会带来负面的影响。所以我们要对压缩率较高的表进行压缩。
   对整个表
   EXECUTE FUNCTION task("table estimate_compression","table_name", "database_name", "owner_name");
   对分片表的某一个分片
   EXECUTE FUNCTION task("fragment estimate_compression","partnum_list");
  (2). 创建压缩字典
   由于IDS压缩技术通过搜索重复模式(pattern)来实现压缩,所以在压缩前需要创建压缩字典表,该表存放表中已有重复的模式,所以要求表中至少有2K记录才可以进行压缩操作。对于记录数较大的表,通过sample抽取重复模式。当创建完成压缩字典后,后来insert的记录将采用此模式进行压缩,我们可以重新创建字典,然后再进行新的压缩。所以一般情况下,我们建议对新增记录较少情况下的表或者分片进行压缩比较合理。
   对整个表
   EXECUTE FUNCTION task("table create_dictionary", "table_name","database_name", "owner_name");
   对分片表的某一个分片
   EXECUTE FUNCTION task("fragment create_dictionary", "partnum_list");
  (3). 压缩数据
   如果没有进行上一步创建压缩字典,该操作在做前将自动触发创建压缩字典操作
   对整个表
   EXECUTE FUNCTION task("table compress", "table_name","database_name", "owner_name");
   对分片表的某一个分片
   EXECUTE FUNCTION task("fragment compress", "partnum_list");
   (4). 整理存储空间
   对于压缩后释放的空间进行空间整理,对于非压缩表也可以进行该操作,可以简单的理解为我磁盘碎片整理操作
   对整个表
   EXECUTE FUNCTION task("table repack", "table_name","database_name", "owner_name");
   对分片表的某一个分片
   EXECUTE FUNCTION task("fragment repack_offline", "partnum_list");
  
  (5). 释放存储空间
   对于表占用但尚未存放数据的空间,通过上一步后,可以把该空间释放出来到dbspace
   对整个表
   EXECUTE FUNCTION admin("table shrink", "table_name","database_name", "owner_name");
   对分片表的某一个分片
   EXECUTE FUNCTION task("fragment shrink", "partnum_list");
  
  (6). 解压
   如果我们需要把已经压缩的表不在压缩,我们就需要进行解压操作。解压操作可以进行online和offline操作,当采用online模式,将不影响表的正常访问,但采用offline模式解压速度较快
   对整个表
   EXECUTE FUNCTION task("table uncompress", "table_name","database_name", "owner_name");
   或者offline
   EXECUTE FUNCTION admin("table uncompress_offline","table_name", "database_name", "owner_name");
   对分片表的某一个分片
   EXECUTE FUNCTION task("fragment uncompress", "partnum_list");
   或者offline
   EXECUTE FUNCTION task("fragment uncompress_offline", "partnum_list");
  D.压缩操作举例
   IDS除了提供如上所示的API方式,同时提供了OAT可视化操作界面,操作起来更加便捷。详细情况请查阅OAT相关说明问题。
   正常情况下,我们对一个表进行压缩操作,不需要严格按照上面所描述的压缩操作的顺序来进行,其中创建压缩字典表包含在压缩操作中,在进行压缩操作时,数据库发现没有对应的压缩字典表,立即进行创建压缩字典,然后进行数据压缩操作。一个一般的压缩操作流程如下:
   (1). 压缩评估
        EXECUTE FUNCTION task("table estimate_compression","table_name", "database_name", "owner_name");
   (2). 压缩
        EXECUTE FUNCTION task("table compress", "table_name","database_name", "owner_name");
   (3). 空间整理与释放
        EXECUTE FUNCTION task("table repack", "table_name","database_name", "owner_name");
         若要释放空间情况
         EXECUTE FUNCTION admin("table shrink", "table_name","database_name", "owner_name");
  

  
了解更多信息请查看:
IDS在线文档
Informix Dynamic Server 数据压缩和存储优化
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值