Informix中使用新的IDS特性来节省存储资源和优化性能

IDS 为存储优化和压缩现有的表数据提供了全面的在线支持,并允许应用程序在此期间继续使用表。本文将概述 IDS 数据压缩和存储优化功能,演示如何执行这两个任务。

IDS 存储优化会考虑整行和其中的所有列(除了作为字节串存储在行之外的列数据,比如 BLOB 数据)。然后,IDS 寻找重复出现的模式,把这些模式作为符号存储在压缩词典中,参见图 1:

图 1. 可作为符号存储在词典中的模式

在创建词典之后,IDS 将该字典存储在一个词典存储库中。

表的存储优化过程涉及到四个步骤:

创建压缩词典。 压缩表或表分段中的行中的数据。 重新组合表或分段行。 回收空闲的空间。

下面几节将详细讨论每个步骤。

创建压缩词典

为了创建词典,IDS 从现有的表中对一些行进行取样,并创建一个符号词典,这些符号代表字节模式。IDS 在词典存储库中存储这个词典。每个包含已压缩的分区的 dbspace 都有一个词典存储库。词典还可以存储在内存中,这使活动的查询和更新可以快速压缩和解压数据。

每个词典的大小大约为 75KB。但是,每个词典可以增长到 150KB。IDS 在内存中存储每个压缩的分区的压缩词典。因此,DBA 一定要考虑到这些资源需求。

压缩表或分段行中的数据

在创建词典之后,IDS 会启动一个后台进程,它扫描和压缩了表或分段行。这个进程压缩每一行,并将这些行留在原来的页面中,它还会压缩插入或更新的所有行。

在运行压缩操作时,表上可能正在执行其他事务和查询。因此,IDS 在小事务中执行此操作,只在短时间内持有当前压缩的行上的锁。

重新组合行

完成数据压缩之后,在行之间可能存在大量未使用的空间或空洞。重新组合操作使用一种与压缩操作相似的算法将所有行转移到分区的前部。该操作也会利用小事务,只锁住当前转移的行。

回收空闲的空间

重新组合所有行之后,收缩操作会删除未使用的表或分段空间,将空闲的空间返回给包含此表或分段的 dbspace。

压缩和存储优化任务的先决条件

要执行存储优化任务,必须能够连接 sysadmin 数据库,还必须是数据库服务器管理员 (DBSA)。在默认情况下,只有名为 Informix 的用户能够执行这些任务。

识别压缩候选对象

执行估计压缩率的命令

存储优化可以在表级或分段表的分段级上进行。可以通过执行带 estimate_compression 参数的 table 或 fragment 命令来识别压缩候选对象(在 Version 11.50.xC4 和更高版本中)。

这个命令显示的数据压缩率是根据对表行的随机取样计算出的估计值。实际节省的空间比率可能有细微的差异。

清单 1 给出一个示例职员表,它有三个分段。第一个分段是未压缩的,curr(当前压缩率)列中的值为 0.0%。另外两个分段的 curr 列表示当前实现的压缩率。每个分段的 change 列表示未压缩的表与已压缩的表之间可能存在的压缩率差异。

清单 1:压缩估计值

$ dbaccess hrdb –Database ">selected.> select sysadmin:task("table estimate_compression", tabname) from systables where tabid > 100;(expression) est curr change partnum table ----- ----- ------ ---------- ----------------------------------- 85.9% 0.0% +85.9 0x00200002 hrdb:informix.employee 85.9% 85.5% +0.4 0x00300002 hrdb:informix.employee 86.1% 86.1% +0.0 0x00400002 hrdb:informix.employee Succeeded: table estimate_compression hrdb:informix.employee(expression) est curr change partnum table ----- ----- ------ ---------- ----------------------------------- 22.5% 0.0% +22.5 0x001001f6 hrdb:informix.audit_log Succeeded: table estimate_compression hrdb:informix.audit_log2 row(s) retrieved.

在 Windows 上使用单独的 IDS Compression Estimator

在 11.50.xC4 之前的 IDS 版本中,可以使用单独的 Windows® 实用程序 IDS Compression Estimator 来识别压缩候选对象。本文的 参考资料 部分包含这个实用程序的下载链接。在 Windows 系统上安装这个实用程序以及 Client-SDK 或 I-Connect(这是连接 IDS 实例所需的)。安装估算程序(estimator)之后,可以提供所需的连接信息,远程连接任何 IDS 实例。

图 2 说明了这个实用程序如何显示数据压缩可能节省的存储空间:

图 2. IDS Compression Estimator

时间: 2024-12-05 01:10:21

Informix中使用新的IDS特性来节省存储资源和优化性能的相关文章

Informix 11.5新特性介绍:第1部分

Informix数据库目前最新的版本是11.5,从Informix 9.Informix 10到Informix 11.5,在数据库性能.数据库管理及应用开发等方面都有了很大的提高,而且推出了很多非常有用的新特性.通过对这些特性的使用,可以大大提高数据库性能.增强数据库可管理性及应用开发的灵活性.我们这里,给大家介绍其中的一些特性,希望对大家能有所帮助. 数据库管理方面的一些实用特性 使用可配置的页面大小 我们知道,在Informix 中,数据存储的最基本的单位是页,在Informix 10 版

iOS 各版本中的新特性(What's New in iOS)- 目录翻译完成

iOS 各版本中的新特性(What's New in iOS) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 介绍 Introduction文档组织结构 Organization of Thi

C# 3.0中新匿名类型特性初体验

在去年PDC2005上,在发布C#2.0 (C# Whidbey)的同时,微软也同时展示了它们在C# 3.0上的一些计划.在提到一系列新的语言特性如语言集成查询(LINQ)等,Redmond同时也介绍了一个新的特性--匿名类型.本文详细介绍了匿名类型. 匿名类型定义 C#3.0规范将匿名类型描述为从对象初始化器(object initializer)自动推断和生成的元组类型.在你能够充分领会这一定义之前,你需要了解"对象初始化器"的概念,它是匿名类型特性的基础. 对象初始化器给一个对象

ASP 3.0中的新特性

    假如读者已经熟悉了ASP 2.0,并正在寻找3.0版本中的实际改变的列表,那么将在下面发现这些信息.假如读者是一个ASP的初学者,可以越过本章到下一章,那里循序渐进地介绍了ASP对象和它们的用法.    ASP 3.0新特性概要    在ASP 3.0中,有一些新的特性或经历较大的变化或改进的特性.    1. 无脚本的ASP    如早先提到的, ASP处理不包括任何脚本的.asp页的速度是很快的,假如你正在创建的站点或Web应用程序文件最终可能使用ASP,最好让这些文件使用.asp文

VBSctipt 5.0中的新特性

VBSctipt 5.0中的新特性 能够在ASP中应用的特性包括了那些由脚本引擎所提供的特性,这意味着VBScript的改进也可在ASP中应用.VBScript的改进如下所述: 1. 在脚本中使用类在VBScript中实现完整的VB类(class)模型,但明显的例外是在ASP服务器端的脚本事件.可以在脚本中创建类,使它们的属性和方法能够和用于页面的其余代码,例如:Class MyClass Private m_HalfValue 'Local variable to hold value of

iOS7 中的新特性

iOS7 中的新特性 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 介绍 Introduction文档组织结构 Organization of This Document  iOS 7.0 用

PHP V5.3 中的新特性,第 5 部分: 从 PHP V5.2 升级到 PHP V5.3

简介 本系列着重介绍 PHP V5.3 中的新特性,例如名称空间.闭包.对象管理.面向对象编程和 Phar.虽然这些动人的新特性作为该语言的增补广受欢迎,但 PHP V5.3 同时也是为进一步优化 PHP 而设计的.它构建在流行.稳定的 PHP V5.2 的基础上,并对该语言作了增强,使之更加强大.在本文中,了解 PHP V5.3 中的变化,以及从 PHP V5.2 升级到 PHP V5.3 时需要考虑的一些事情.   回页首 语法变化 该语言新增了名称空间和闭包(在 第 2 部分 和 第 3

PHP V5.3 中的新特性,第 1 部分: 对象接口的变化

PHP V5 和面向对象编程 与 PHP V4 提供的特性相比,2004 年发布的 PHP V5 在面向对象编程(OOP)和设计方面向前迈出了很大的一步.它提供了一些必要的改进,例如类可见性.合适的构造函数和解构函数.输入提示和类反射(class-reflection)API.它为在 PHP 中进行高级的面向对象编程敞开了大门,并允许实现更加简单的设计模式,以及更好的设计类和 API. PHP V5.3 在 OOP 方面提供了大量渐进式补充.这些改进一直集中在语法补充和性能改进方面.首先,我们将

PHP V5.3 中的新特性,第 2 部分: 闭包及 lambda 函数

闭包函数和 lambda 函数绝对不是新出现的概念:它们均来自函数编程领域.函数编程 是一种编程风格,它将关注点从执行命令转移到表达式计算.这些表达式是使用函数构成的,结合这些函数可以得到我们要查找的结果.这种编程风格最常用于学术目的,但是也可以在人工智能与数学领域中见到,并且可以在用 Erlang.Haskell 及 Scheme 等语言编写的商业应用程序中找到. 闭包 最初是在 20 世纪 60 年代作为 Scheme 的一部分开发的,Scheme 是最著名的函数编程语言之一.Lambda