内容


专题

动手初识:Informix 11.7

数据安全性和性能调优的新选项真正交付。它实在太快了。

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 专题

敬请期待该系列的后续内容。

此内容是该系列的一部分:专题

敬请期待该系列的后续内容。

免费下载:IBM® Informix® 11.7 试用版(包括 Ultimate Edition、Developer Edition 和 Innovator-C Edition)
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

- 阅读本文的互动数字版!

除非您过去几个月一直躲在岩石后面,那么您肯定知道 IBM 对 Informix 最新版本颇感兴奋。公司有充足的理由。在测试期间,Lester Knutsen 和 Art Kagel 共同评估了最新版 Informix 11.7 服务器(之前代号为 Panther),他们可以直接告诉您在底层有一些令人兴奋的东西。在本文中,他们将分享他们性能测试的结果,介绍新功能以及如何使用这些功能。

Informix 11.7 提供显著的速度提升

我们使用为 Fastest Informix DBA 竞赛开发的基准对 Informix 11.7 进行测试。对于每个测试,我们从 Informix 11.5 开始,进行优化使其获得最优的可行性能,并测试如何快速完成任务。然后,在同一个硬件上安装 11.7,再次测试任务。

版本 11.7 几乎在每个实验中都是最快的,开箱即用。第一个基准测试是一批账单作业,为 100,000 多个客户生成账单。Informix 11.7 运行该任务比之前版本最快时间快了高达 17%。

我们测试的下一个基准来自 2011 年的 Fastest Informix DBA Contest III。它是一个联机事务处理(OLTP)基准,使用开源 BenchmarkSQL Java 程序生成 100 个会话对数据库进行插入、更新和删除。目标是在一定时间内生成尽可能多的事务;这个 JDBC 基准非常类似 OLTP 的 TPC-C 标准。再一次,使用和之前版本相同的配置,11.7 版本生成的事务多了 12%。

假设我们不使用 11.7 版本中提供的任何新特性,这个结果将是令人惊讶的。Informix 11.7 也有许多令人兴奋的特性,用于数据仓库设计和开发,我们仍然使用几个非常复杂的查询进行测试。版本 11.7 中新增加的特性会帮助我们将一个查询的性能提升 22%。

实现新 Informix 11.7 特性

在着手开发 Informix Dynamic Server 11.7 版本时,IBM 开发团队千方百计地扩展和延伸那些 Informix 已经很强大的区域。新特性增强了 OLTP 数据安全性、OLTP 性能、数据仓库性能和管理。本文的这一部分将介绍这些我们认为是最重要的特性,以及如何实现它们。

OLTP 数据安全性

什么是 OLTP 数据安全性?在 OLTP 环境下,最糟糕的案例场景是事务数据丢失。例如,如果您是一家银行,客户完成交易,您就不能丢失它。无论是 20 美元的 ATM 自动取款还是数百万的电子转账,您的公司都是与钱挂钩的。看看另一个场景,如果您的主服务器崩溃了,您该怎么做呢?如果您告诉正在交易中的用户 “对不起,系统出现故障,请稍候再试,” 您将失去一个客户或者可能是几百个客户。

Informix 11.7 有一些新特性,IBM 将其称之为 “事务存留”。我们称之为 “不可中断事务”。如果您的主 MACH11 服务器崩溃,连接到任何辅助服务器上的用户开始的任何交易将会继续通过存留的辅助服务器(HDR、SDS 或 RSS)继续。一个存留服务器提升为新的主服务器,交易继续,未受任何损伤且没有中断。使用 SDS 辅助服务器和 Connection Manager,故障转移在几秒内即可完成;该功能支持很多企业的服务级别协议(SLAs),大多数用户甚至没有注意到延迟。

最好的是,您不需要做很多就可实现这个不可思议的特性。无应用程序更改,onmode 标志,或者 SQL 应用程序编程接口(API)函数是必需的。一个新的 ONCONFIG 参数(FAILOVER_TX_TIMEOUT)设置时间,即主服务器发生故障之后且回滚到打开的交易之前辅助服务器等待一个新主服务器取得联系的时间。这全部都是自动的、无需干预。目前尚不清楚是否较早的应用程序需要使用最新版 Informix SDK(3.70xC1 或者最新版)重新编译,但是大多数网站将其作为一个升级过程的一部分进行处理。然后,您只需要确保您所有的关键应用程序是连接到一个可写入辅助服务器上,而不是直接连接到主服务器。

OLTP 性能

除了基础的数据库引擎提升之外,Informix 11.7 有几个特性您可以用来进一步提高性能。以下部分描述了 OLTP 环境中的 3 个特性;然而,每一个特性也都将提高决策支持和数据仓库系统的性能。

新增特性:取消外键上索引。Informix 11.7 取消了外键约束要求外键上有一个索引的需求。外键上的索引所引用的表行数较少,选择性较少,需要索引的实用程序一直遭受质疑。该引擎不需要这些索引来强制约束,除非级联删除被启用,否则您不需要它们进行搜索,因为多数系统有复合键,含有用于搜索和过滤的外键列。OLTP 查询中很少需要选择查找表作为需要相关表上的索引来支持联接的主查询表。消除这一需求将减少在含有很多代码列的表格中插入和修改数据的费用,而不影响查询性能。

该做什么。要创建一个没有支持索引的新约束,遵守带有 INDEX DISABLED 子句的约束定义:

  ALTER TABLE mytable ADD CONSTRAINT FOREIGN 
  KEY (fkcol) REFERENCES fktable(keycol) CONSTRAINT 
  mytable_fk1 INDEX DISABLED;

如果您有一个已有约束,而且想要利用这一特性的优势,您必须删除约束,然后重新创建。对于一个现存约束,要禁用索引支持没有别的选择。当约束创建完成后,禁用支持约束的索引,空间被释放。

新增特性:Forest of Trees 索引。Forest of Trees 索引结合了 hash 索引和传统 Informix B+tree 索引的许多优势。B+tree 索引可以变得相对较深,在同一层级上那些键上的索引中有相对较少的惟一元素,这些键第一列有较少选择,但是对于正确的 OLTP 查询处理仍然很重要(想想地理代码,比如国家代码、区域代码、状态代码以及这些的结合)。有了 Forest of Trees 索引,数据库架构师可以指定一个和多个引导列来创建一个 hash 键。然后,对于每个 hash 值,一个单独 B+tree 被创建,只包含 hash 列后面的其余关键部分。结果是相对较为浅的索引。使用一个 Forest of Trees 索引的缺点是您不能在 hash 列上执行范围扫面(为此,您还需要一个单纯的 B+tree 索引)。但是,您可以在索引键的其余列上执行范围扫面。最大的收益是索引有更少的层级,因此性能更快。

该做什么。创建一个 Forest of Trees 索引,就像您创建任何其他索引一样,不过要在列清单之后指定 HASH ON 子句:

  CREATE INDEX mytable_fot ON mytable( col_1, col_2, col_3 )
  IN indx_dbs 
  HASH ON ( col_1, col2 ) WITH 200 BUCKETS;

注意存储子句必须在 HASH ON 子句之前,在手册页语法图解中这一点不是很明确。

新特性:多索引扫描。优化器中的多索引扫描是 OLTP 的另一大赢点。通常您在两个表之间一个或多个列上有一个联接,在这些表中,在一个或多个不同列上使用过滤器。这两组列都可以编制索引,但是使用不同的索引。在早期 Informix 版本中,优化器必须根据键列的数据分布和索引统计数据为一个查询从所有可用索引中选择 “最优” 单个索引。结果,该引擎必须读取很多数据行然后使用实际行数据应用最终过滤,即使过滤列的索引可用。Informix Extended Parallel Server (XPS) 中的优化器可以在一个查询中使用每个表上的多个索引,现在 Informix 11.7 也可以。这个功能将使得 DBA 和数据库架构师可以减少长键复合索引的数量,这有助于提高插入、删除和更新性能。

当运行像之前描述的作为第三方应用程序的一部分被交付的数据库的查询时,该功能是一个巨大的胜利 — 您不能控制模式,可以生成如此合理高效的查询的复合索引可能不存在。

该做什么。这个特性最好的一点是您不需要做什么,只需要确保您的统计数据和数据发布得到合理维护。一旦您看到多个索引扫描提升您的查询性能时,您可能会考虑使用一个简单索引替换一些复合键索引并减少总索引数,这也可以改善删除、更新和插入处理时间。

该你了

Informix 11.7 以很多振奋人心的方式扩展了我们最喜爱的数据库的功能。我们将继续研究这些新特性,在本文中,我们只了解了一点皮毛而已。查阅这一期 Lester 的 Informix DBA 专栏,了解更多趣闻,让我们知道您对新版本的想法以及您最喜爱的特性。

合作伙伴资源
IBM Information On Demand IBM Server and StorageNiteo Partners
PSS SystemsResponsive Systems Safari Books Online

相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=632636
ArticleTitle=专题: 动手初识:Informix 11.7
publish-date=03162011