跳转到主要内容

如果您还没有注册到 IBM 注册系统,我们为给您带来的不便表示道歉,并请您马上注册。 现在注册

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

REORG 重要吗?

您的 DB2 for z/OS 数据库能够承受多大程度的无序性?

Cameron Crotty, 编辑, TDA Group
Cameron Crotty 是 IBM Data Management 杂志的编辑。
Jeffrey Berger, DB2 大型机性能分析师, IBM
Jeffrey Berger 是来自 IBM 的一名 DB2 大型机性能分析师,专攻于 I/O 和存储方面的工作。

简介: 凭借固态硬盘 (SSD) 此类新技术能够消除 DB2® for z/OS® 数据对 REORG 的需要吗?在本文中,我们将了解其中的利弊,并研究为何还需要制定定期重组计划。 本文来自于 IBM Data Management magazine 中文版

发布日期: 2011 年 12 月 13 日
级别: 初级 原创语言: 英文
评论: 


免费下载:IBM® DB2® Express-C 9.7.2 免费版 或者 DB2® 9.7 for Linux®, UNIX®, and Windows® 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

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

无序性遍布在数据库各个角落,其后果通常是令人不快且代价惨重。检索无序数据要比检索有序数据花费更长的时间,并且无序索引的速度也慢得像蜗牛在爬行。对于任何运行 DB2 for z/OS 的公司来说,无序性一直都是侵蚀资源的危险敌人,它总是向良好的模式设计和 REORG 实用工具定期使用发出猛烈的攻击。

然而,固态硬盘 (SSD) 的到来引起了一场对于无序性真正成本的争论。有些人认为无序数据检索的性能和时间的成本是硬盘驱动器 (HDD) 运行方式的产出(参阅 “固态硬盘:改变数据世界” IBM Data Management,2011 年第 3 期)。使用 SSD 作为主存储器媒介并应用 REORG 来组织或集群化数据似乎是对稀有系统资源的一种浪费。再者,REORG 使得应用像 IMB System Storage Easy Tier 等这类存储分层解决方案(专门用于使少量 SSD 存储得到最佳利用)变得更加困难。

但有一点是大家所认同的:REORG 成本昂贵,绝非必要不会用到它。事实上,IBM 已对 DB2 10 和 IBM System Storage DS8000 软件做了许多修改,以帮助您避开使用 REORG。但我们真的能弃之不用了吗?或许不能。

快速存储能够挽救局面吗?

集群化 对存储媒介上的相关行进行物理分组,以尽可能地在单一 I/O 旁路进行读取。插入新行会破坏集群化组织(并降低性能),直到使用 REORG 进行重组。

集群化可以提高 HDD 的性能,其中的数据位存储于旋转磁盘并且经由移动磁盘头进行检索。然而 SSD 并没有移动部件,其数据检索的延迟要比 HDD 的数据检索低一个数量级。虽然 DBMS 可能需要更多同步的 I/O 旁路来检索分布在 SSD 上的未集群数据,但是人们认为实际 I/O 速度非常快,没有什么影响。

实际上,关于 SSD 的理论有几个漏洞。首先,即使使用 SSD 最小化 I/O 响应时间,额外的同步 I/O 会增加 CPU 处理成本。其次,I/O 的临界值太快,以至于 “没有什么影响的” 运行时间发生巨大的变化,即使是数据库之间的操作也是如此。


无序索引

除了这些问题外,REORG 可以通过保持索引有序性来帮助提高性能,无序索引扫描要比有序索引扫描花费更长的时间,既耗时又耗 CPU 资源。最近,IBM 在软件和硬件技术前沿上取得了巨大的进步,进一步提高了无序索引的性能。

其他无序数据问题

间接引用和伪删除 RID 属于其他类型的数据无序问题。使用间接引用读取一个行(即使是在表扫描中)需要额外添加一个 GETPAGE 和一个同步 I/O。列表预存无法解决间接引用的问题,因为它使用的是来自索引的 RID 列表,其中只包含原始的 RID 位置。它不知道数据行被重新定位,直至该数据行得到访问。SSD 缓解了间接引用的影响,但是 REORG 消除了这些间接引用的影响。

当 DB2 删除行时,出现了伪删除 RID。该索引条目被标记为伪删除,但却没有真正从物理空间上删除。更新也会导致伪删除 RID,因为索引更新实际上是删除后插入。

在大多数情况下,伪删除 RID 会一直驻留在索引中,直到使用 REORG 来删除它们。同时,它们还占用存储空间并增加索引扫描的 CPU 成本。

DB2 10 有助于解决伪删除 RID 的问题,但是无法解决间接引用的问题。您需要一个不同的策略来避开使用 REORG 以解决这些问题。

DB2 9 使用同步 I/O 对无序索引进行扫描,FICON(System z 使用的 IBM 光纤通道协议)和 HDD 上的 I/O 吞吐量通常为 1-6 MB/秒。相比之下,DB2 10 以异步方式使用列表预取并使服务请求块 (SRB) 适宜于 IBM System z Integrated Information Processor (zIIP),从而节省 CPU 成本。由于采用异步方式,I/O 可以与 CPU 处理时间重叠,从而加快扫描速度。IBM 的测试已表明,DB2 10 扫描无序索引的速度要比 DB2 9 快 5.6 倍。

在硬件方面,DS8000 R6.2 也有助于 DB2 处理无序索引。到目前为止,FICON 的列表预取已相当缓慢。然而,在使用 R 6.2 时,列表预取 I/O 可以使用 System z FICON for System z (zHPF),这会减少 50% 以上的通道时间。此外,列表预取还因 R6.2 中另一个名为 Turbo List Prefetch (TLP) 特性得到改善,该 TLP 基于 DS8000 自适应缓存算法来减少缓存访问。zHPF 和 TLP 一起使用可以使列表预取 I/O 的吞吐量增至 3 倍以上。

在使用 TLP 的 DB2 中,无序索引扫描可以在吞吐量高于 40 MB/秒下完成。该吞吐量通常足以避免任何 I/O 挂起,这意味着应用程序不会等待 I/O 来完成,即存储单元已不再是性能瓶颈。使用相同硬件进行有序索引扫描的 I/O 吞吐量将接近 300 MB/秒 (HDD) 和 400 MB/秒 (SSD),但是如果没有 I/O 挂起发生,那么更快的 I/O 也不会影响到运行时间。

这些快速吞吐量会改变我们对 REORG 的看法吗?如果您要在一个表空间中使用它,那么没必要,因为该进程会自动重组索引。但是,如果您一直在使用 REORG INDEX 来处理由无序索引引起的性能问题,那么 DB2 10、TLP 和 SSD 可以使您的生活变得更加简单。这一组合可以将 I/O 读取叶子页面的时间降到低于 CPU 处理这些页面的时间,这意味着,REORG INDEX 不会加快索引扫描。然而,您也许还想用 REORG INDEX 来清除伪删除索引条目(参见侧栏 “其他无序数据问题”)和回收空闲空间。


跳行顺序存取

现在,让我们来看看在使用索引来确定读取哪些数据行时 REORG 如何影响数据自身的 I/O。索引的集群率 表示就索引键排序序列而言,行的物理顺序。如果集群率高,DB2 会使用动态预取;如果集群率低,则 DB2 会使用列表预取。在某些情况下,REORG 会增加索引的集群率,通过允许优化程序使用列表预取来提高性能。但是,除非正在讨论的索引是集群索引 (其中每个表格一个),否则无法保证 REORG 会增加集群率。

即使索引集群率很高,它所引用的数据还是会遍布整个表格。这会使 GETPAGE 变成跳行顺序 并减少或消除动态预取的效力。如果合格页面不多,那么查询会进行同步 I/O,这将会比使用列表预取的查询更慢。如果 GETPAGE 大多都在单个 128 KB 内,那么查询将运行顺序 I/O,但是它将会收集一些(无效的)中间页。(注意:在某些情况下,读取额外页面可以加快 I/O,但是在使用 TLP 时,只读取 GETPAGE 需要的页面比较好。)

如果您在使用 SSD,GETPAGE 之间的距离并无大碍。但是在考虑 REORG 的值时,就会出现一个争论点,因为 REORG 并不总是影响页面距离。另一方面,如果 REORG 可以减少查询所执行的 GETPAGE 数量,那么不管是什么设备类型 REORG 都会有值。

过去,使用列表预取有时会造成问题,因为它会迫使 DB2 构建已分类记录 ID (RID) 列表并将其存储在 RID 池中。一旦 RID 池耗尽,DB2 就会求助于非常耗时的表扫描(许多查询遭受到 “由表扫描引起的崩溃”)。

DB2 10 可帮助解决此问题,其方法是将 RID 池溢出至工作文件。工作文件存储在一个 DB2 缓冲池,这样可以将其溢出至直接存取存储器 (DASD)。RID 池也可以溢出至 DASD(称为分页 (paging) 的一个进程),但是缓存池 I/O 比分页快很多,并且一般比数据并发列表预取 I/O 快很多,因为每个 32 K RID 块包含 6000 多个 RID。

如果集群率非常高,优化程序不大可能选择列表预取。如果您要使用列表预取,在运行 RUNSTATS 之前先要等到数据被无序化。


结果

最后,有许多方法可以减少您必须使用 REORG 的次数,但是您可能无法完全避开它。当您确实需要使用它时,记得要使用 DSNACCOX 来确定 REORG 调度的资格。此默认参数为一个向导,您可以根据您的 SSD 和/或 TLP 的实现对其进行修改。

我们无法完全消除数据库中的无序性,但是至少有些工具可以使无序性具有更低的破坏性并易于管理。

赞助商文章
The Internet is Your Oyster Safeguarding the Smart Grid with a Tactical Appliance Does Your Storage Have the Power to Support Mixed Workloads?
IBM, Intel Post Top Results for SAP Transaction BankingIBM DB2 Advanced Enterprise Server EditionRiding the Open Social-Content Wave
Critical Modeling Strategies for Insurance CompaniesVirtualized Business Intelligence Levels the Playing Field for Small and Midsize CompaniesGrace Under Pressure: ENOVIA V6 PLM Redefines Peak Workload Performance on DB2
DB2 is Pure Power for Growing BusinessesIBM Champions Connection
合作伙伴资源
Advent Global Solutions, Inc.Applied Analytix, Inc.ASG Software Solutions
BMCCogitoDassault Systèmes
Daeja Image SystemsDBIFuzzy Logix
Melissa DataNECNetezza
QueBIT Quest SoftwareRelational Architects International
Safari Books Online

参考资料

学习

获得产品和技术

讨论

  • 通过访问 alphaWorks 获得更多 IBM 的前瞻性技术和资源。

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

作者简介

Cameron Crotty 是 IBM Data Management 杂志的编辑。

Jeffrey Berger 是来自 IBM 的一名 DB2 大型机性能分析师,专攻于 I/O 和存储方面的工作。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录

如果您还没有注册到 IBM 注册系统,我们为给您带来的不便表示道歉,并请您马上注册。 现在注册


忘记 IBM ID?


忘记密码?
更改您的密码


单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=780848
ArticleTitle=REORG 重要吗?
publish-date=12132011

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。