快捷搜索:  www.ymwears.cn

DB2 Performance Expert 简化性能管理和调优 (2)

您必要详细阐发使您能够对 DB2 和 DB2 利用法度榜样进行节制和调优的一些症结机能身分吗?您盼望提前诊断机能和可用性问题吗?或者您曾在运用 DB2 办事器时蒙受某一问题,但却无法应用当前的快照鉴定造成该问题的缘故原由,是以盼望应用历史的监视数据?IBM DB2 Performance Expert 便是一个能够赞助您完成这些义务的对象。

应用处景

下面这些应用处景可以展示若何阐发和办理各类机能问题,并在 DB2 Performance Expert V2.1 的赞助下完成故障检修义务:

确定索引是否可以改进机能

;;;;;从新回首排序的机能

检查对表进行重构的必要

确保有足够的 DB2 代理可以处置惩罚事情负载

办理锁冲突的问题

应用 cache 包中供给的 SQL 语句常常反省数据库

阐发缓冲池

监视系统的康健状况

确定是否必要索引

DB2 PE 步骤

在 System Overview 面板中选择 Application Summary。

图 1. System Overview  在 Application Summary 视图中选择适当的利用法度榜样(在本例中是 db2bp.exe)。  图 2. Application Summary  在 Application Details 视图中选择 SQL Activity。

图 3. Application Details

措施  图 3中给出的 SQL Activity 界面显示了有关利用法度榜样履行的语句的信息,此中包括义务单元(UOW)、光标、读取的行、选择的行等等。要鉴定我们是否必要索引,必要查看读取的行与选择的行的比率。;

读取的行与选择的行

读取的行与选择的行的比率阐清楚明了为了要找到目标记录行,一共要读取若干行数据。要是读取的行数与选择的行数的比值大年夜于保举值,那么我们就应该对查询进行阐发,并对可能的索引进行反省。

谋略:(读取的行数) / (选择的行数)  抱负值:对付 OLTP 来说,该值为 2 到 3

结论  DB2 读取了 99,145 行,但只选择了 2,000 行。这便是说,它读取了全部表的内容,却只选择了 2,000 行。是以,创建索引可能会前进机能。

从新回首排序机能

DB2 PE 步骤

在 System Overview 面板中选择 Application Summary。

在 Application Summary 视图中选择适当的利用法度榜样(在本例中是 db2bp.exe)。

在 Application DetailsSelect 视图中选择 Sort,如 图 4 所示。

图 4. Application Details  措施  Sort 界面中显示了有关排序操作的详细信息,此中包括所有排序、所有排序光阴、排序溢出、hash 连接等。

排序溢出

这个数字阐清楚明了排序时用光排序堆而必要磁盘空间临时进行存储的行数。  在数据库或利用法度榜样级,应用这个元素可以谋略溢出到磁盘上的排序的百分比。要是这个百分比很高,那么您可能盼望经由过程增添排序堆来调剂数据库的设置设置设备摆设摆设。在语句级上,可以应用该元素鉴定必要大年夜型排序的语句。这些语句可以从削减所需排序数量的其他调优中获益。在呈现排序溢出环境时,可能导致其他开销,由于要是必要将数据写入磁盘,那么排序必要一个合并阶段,这可能必要更多的 I/O。该元素为一条语句、一个利用法度榜样或造访一个数据库的所有利用法度榜样都供给了有用的信息。实质上,要排序的数据都邑从缓冲池溢出到 TEMPSPACE 表空间中。;

谋略:(排序溢出行数) / (总排序行数)

抱负值:对付非 DSS 型的义务来说,该值为零或靠近零的值

结论  在呈现排序溢出的环境时,可能会造成额外的开销,由于要是要将数据写入磁盘,那么排序就会必要一个合并阶段,这可能必要更多的 I/O。为了避免呈现这种溢出,可以增添排序堆的大年夜小,并对查询进行阐发,以确定查询是否必要应用索引。

检查对表进行重构的必要

DB2 PE 步骤

在 System Overview 面板中选择 Statistic Details。

图 5. System Overview  在 Statistic Details 视图中选择 Tables,并选中 Receive table information。

图 6. Statistic Details

措施 Statistic Details 中的 Table 视图给出了有关表的详细信息,此中包括表名、数据库名、写入的行数、读取的行数、溢出的行数、表的文件 id、表的类型、页面重构等。

造访溢出的行  这个数字阐清楚明了对该表中溢出行进行存取(读和写)的数目。

溢出行阐清楚明了数据中的碎片环境。要是这个数字很高,那么您可以经由过程应用 REORG 对象对表进行重构,从而前进表的机能,这会清理数据中的碎片。当一行数据被更新并且不再得当原本写入的数据页时,就会呈现行溢出的环境。这平日是对 VARCHAR 列进行更新的结果,或者是履行 ALTER TABLE 语句的结果。

页面重构:

这个数字阐清楚明了必要对一个表进行重构的页数。

对太多页进行重构可能会导致机能比优化插入要领的机能还要低。您可以应用 REORG TABLE 对象对表进行重构,从而打消数据碎片。您还可以应用 ALTER TABLE 语句的 APPEND 参数来阐明插入某个表的所稀有据都要附加到该表的末端,以避免页面重构问题。在对行进行更新导致该行的长度增添的环境下,虽然页面可能有足够的空间来容纳新行,然则为了收拾这段空间的碎片,可能必要对页面进行重构。或者,要是页面中没有足够的空间来容纳更大年夜的行,就会创建一条溢出记录。您可以应用固定长度而不是可变长度的列来避免这两种环境。

结论  对太多页进行重构可能会导致机能比优化插入要领的机能还要低。要是您有大年夜量的页面必要重构,可以应用 REORG TABLE 对象对表进行重构,并打消数据碎片。

调优 DB2 代理的个数

现在,您的目标是确保有足够多的 DB2 代理来处置惩罚事情负载。

DB2 PE 步骤

在 System Overview 面板中选择 Statistic Details。

在 Statistic Details 视图中选择 Instance Information,如 图 7 所示。

图 7. Statistic Details  措施  Statistic Details 中的 Instance Information 视图给出了有关当前实例的详细信息,此中包括实例名、当前的连接数、已注册的代理数、已注册最大年夜代理数、等待令牌的代理数、从缓冲池平分配的代理数、已偷取的代理数等。

已注册的代理

该值阐清楚明了在正被监视的数据库管理实例中注册的代理(和谐代理和子代理)个数。您可以应用这个元向来赞助评价最大年夜代理设置设置设备摆设摆设参数的设置。

已注册的最大年夜代理

该值是从数据库启动以来,曾经同时在数据库管理法度榜样中注册的代理(和谐代理和子代理)的最大年夜个数。您可以应用这个元向来赞助评价最大年夜代理设置设置设备摆设摆设参数的设置。

等待令牌的代理

该值是等待令牌以便在数据库管理法度榜样中履行事务的代理的个数。您可以应用这个元向来赞助评价最大年夜代理设置设置设备摆设摆设参数的设置。

已偷取的代理:

该值是从利用法度榜样中偷取的代理的次数。当一个与利用法度榜样关联的余暇代理被从新分配给一个通俗的利用法度榜样履行义务时,就会呈现代理偷取。可以用该元向来评价利用法度榜样对系统的负载环境。

;

履行次数

该值是一条 SQL 语句已经被履行的次数。您可以应用该元向来鉴定系统中履行最频繁的 SQL 语句。  每条语句占用的 CPU 光阴

这个数字阐清楚明了一条 SQL 语句占用的所有 CPU 光阴。可以将该元素与“已颠末去的履行光阴和“每条用户语句占用的 CPU 光阴一路应用,来评价语句的最大年夜花费。

最佳预备光阴:  该值是预备一条特定的 SQL 语句所必要的最短光阴。可以用该值来鉴定编译耗时的 SQL 语句。

最差预备光阴:

该值是预备一条特定的 SQL 语句所必要的最长光阴。可以用该值来鉴定编译耗时的 SQL 语句。

结论

这个履行监视元素可以您赞助鉴定系统中履行最频繁的 SQL 语句。在本例中,某个查询运行了 500 次,并且进行了 500 次排序。这是进行查询优化的很好的一个选择,可以反省排序值,并验证是否必要创建新的索引。

阐发缓冲池

DB2 PE 步骤

在 System Overview 面板中选择 Buffer Pool Analysis。

图 19. System Overview  在 Buffer Analysis 中选择 File-> Generate new report。

图 20. 缓冲池阐发  图 21显示了缓冲池跟踪申报的结果。  图 21. 缓冲池跟踪申报  下拉滚动条,查看缓冲池阐发的详细内容。  图 22. 缓冲池阐发的详细内容  措施 上一页12345678910下一页   Buffer Pool Analysis 中供给了缓冲池跟踪申报,它以 HTML 的款式显示,或者以可选的图形交互式申报款式显示。  缓冲池射中率  这个比率阐清楚明了为页面哀求供给办事时,数据库管理器不需从磁盘装入页(即该页已经在缓冲池中)就能处置惩罚页哀求的光阴百分比。

谋略:  BPHR = (1 - ((缓冲池数据物理读 + 缓冲池索引物理读) /  (缓冲池数据逻辑读 + 缓冲池索引逻辑读) ) ) * 100%  索引射中率  这个比率注解了可以在缓冲池中找到的页面能够满意的对索引页的所有读哀求所占的百分比。

谋略:  IHR = (1 - (缓冲池索引物理读 / 缓冲池索引逻辑读) ) ) * 100%  数据射中率  这个比率阐清楚明了可以在缓冲池中找到的页面能够满意的对数据页的所有读哀求所占的百分比。

谋略:  DHR = (1 - (缓冲池数据物理读 / 缓冲池数据逻辑读) ) ) * 100%  结论  缓冲池射中率大年夜于 80% 被觉得是抱负的。对付 OLTP 系统来说,该值的抱负环境是尽可能靠近于 100% (索引射中率更是如斯)。

要前进缓冲池的射中率,可以增添缓冲池的大年夜小,也可以斟酌分配多个缓冲池,可以为每个常常造访的具有自己的表空间的大年夜型表应用一个缓冲池,也可以为一组小型表应用一个缓冲池。

监视系统的康健状况

DB2 PE 步骤  在 System Overview 面板中选择 System Health。

图 23. System overview  在导航器中选择 Data View。

图 24. Data view

右击 Open Predefined Data View。

图 25. Open Predefined Data View

选择您要监视的数据库。  图 26. Open Predefined Data View - 选择数据库  图 27给出了系统康健状况视图的一个例子。  图 27. System Health View  措施 System Health 视图以图形化的要领在数据视图中显示了很多紧张的机能计数器。您可以应用预定义的数据视图,也可以定制自己的数据视图。

结论 System Health 是一个抱负的图形化监视紧张机能指标的对象。一旦定义之后,它们就可以用来在 System Overview 面板中显示系统机能数据。

停止语 本系列文章的第1部分对 DB2 Performance Expert 进行了简介,第2部分又展示了可以用来简化数据库调优义务和系统管理事情的详细措施。您可以应用 DB2 PE 来赞助理解影响机能的多个身分,例如索引、缓冲池的应用、语句缓存、锁、重构要求等等。别的,它还可以用来存储机能数据,供今后阐发,并根据您定义的各类身分孕育发生警报。  申谢 不凡谢谢 IBM 开拓实验室的 DB2 机能专家 Ute Baumbach,是他审校了这篇文章;谢谢 IBM 美国高档技巧支持中间的 Cintia Y Ogura,是他为本文供给了教授教化材料。;

;   结论  要是您发明有"等待令牌的代理" 或 "已偷取的代理",就增大年夜数据库管理法度榜样中可用代理的个数(MAXAGENTS 和/或 MAX_COORDAGENTS)。

办理锁冲突的问题

DB2 PE 步骤

在 System Overview 面板中选择 Locking Conflicts。

图 8. System Overview  在 Locking Conflicts 视图中选择适当的锁冲突。  图 9. Locking Conflicts  要阐发等待某个锁的利用法度榜样,请选择 Waiter(等待锁的)利用法度榜样。

图 10. 锁冲突的利用法度榜样 —— waiter 利用法度榜样  在 Application Details 视图中选择 SQL Statement and Package。  图 11. waiter 利用法度榜样的 SQL Statement and Package

在 Application Details 视图中选择 Locks。

图 12. waiter 利用法度榜样的 Locks

为了对持有锁的利用法度榜样进行阐发,请选择一个 Holder(持有锁的) 利用法度榜样。

图 13. 锁冲突中的利用法度榜样 —— holder 利用法度榜样  在 Application Details 视图中选择 SQL Statement and Package。

;

等待锁的代理:

该值阐清楚明了等待某个锁的代理个数。

这个元素是利用法度榜样等待某些锁的百分比的一个唆使器。要是这个数字很大年夜,那么您的利用法度榜样可能存在并行问题,您应该对现在持有锁或者经久持有互斥锁的利用法度榜样进行阐发。

结论:  反省 waiter 和 holder 利用法度榜样的 SQL 语句,确定诸如利用法度榜样中频繁进行提交操作而导致开释锁或反省利用法度榜样应用的隔离级别之类的操作。当履行很多更新时,在更新之前,要在全部事务的持续光阴内锁定全部表。虽然这样可以只应用一个锁,同时还可以防止其他锁阴碍更新操作,然则这样做会削减数据对付其他用户的并发能力。

常常应用 cache 包中的 SQL 语句进行反省

DB2 PE 步骤

在 System Overview 面板中选择 Statistic Details。

在 Statistic Details 视图中选择 Dynamic SQL Statements。

图 17. Dynamic SQL Statements  下拉滚动条,查看语句的详细资料。

图 18. 语句的详细资料

措施  Statistic Details 中的 Dynamic SQL Statements 视图给出了有关 SQL 语句的详细信息,此中包括造访的数据库、履行次数、已颠末去的履行光阴、最差和最佳的预备光阴、排序,以及在选中 Receive statement cache information时每条语句占用的 CPU 光阴等。

经由过程点击如 图 17所示的标题中的 Executions列,可以按照履行次数对 SQL 语句进行降序排列,这样就可以看到履行最频繁的 SQL 语句。

从连接以来等待的锁:

这个数字是利用法度榜样或连接已经等待锁的次数。

在数据库级上,该值是利用法度榜样在这个数据库上等待锁的次数。而在利用法度榜样连接级上,该值是在某个连接哀求一个锁但因为别的一个连接正持有该数据的锁而必须等待的次数。可以应用该元素谋略在数据库级上等待一个锁的匀称等待光阴。这种谋略可以在数据库级或利用法度榜样连接级长进行。要是锁的匀称等待光阴很长,那么您应该查看一下持有很多锁的利用法度榜样;或者要是是这种环境导致等待光阴过长,就对该锁进行进级,从而重点对利用法度榜样进行调优,以改进并发性。要是进级是导致锁匀称等待光阴很长的缘故原由,那么可能是 locklist 或 maxlocks 这两个设置设置设备摆设摆设参数值中的一个太小了,也可能这两个参数值都太小了。

锁进级  这个数字阐清楚明了某个锁作为锁进级的一部分被进级的次数。进级的范围可以从(一个表中的)许多行锁到零丁某个表锁。

可以应用这个元素更好地舆解逝世锁的缘故原由。要是您曾经碰着过有关利用法度榜样履行锁进级而导致逝世锁的环境,那么就可能盼望增添锁内存的数量(locklist)或改动一个利用法度榜样可以哀求某个锁的百分比(maxlocks)。

检测到的逝世锁

该值是已经呈现逝世锁的总数。

可以用该元向来鉴定利用法度榜样正呈现争用问题。这些问题可能是因为以下情形引起的:  数据库中正在进行锁进级。

利用法度榜样可能在系统天生足够多的行锁时显式地对表进行锁定。  利用法度榜样可能在绑准时应用了不恰当的隔离级别。

为了可以重复读而锁定目录表。

利用法度榜样正在对不合的订单应用相同的锁,从而导致逝世锁。

您可以经由过程鉴定逝世锁是在哪个利用法度榜样(或利用法度榜样进程)上孕育发生的来办理问题。然后可以改动利用法度榜样,使其能够更好地并行履行。然而,有些利用法度榜样可能不能并交运行。您可以应用连接的光阴戳监视元素,鉴定逝世锁的严重性。例如,在 5 分钟之内呈现 10 次逝世锁就比在 5 小时内呈现 10 次逝世锁严重得多。对上面列出的这些相关元素的描述还供给了其他一些调优建议。

;

图 14. holder 利用法度榜样的 SQL Statement and Package

在 Application Details 视图中选择 Locks。

图 15. holder 利用法度榜样的 Locks

要找到哪个用户正在运行 holder 利用法度榜样,可以选择 Application Details 视图中的 Identification。  图 16. holder 利用法度榜样的 User Identification  措施

在 System Overview 面板中选择 Applications in Lock Conflicts,显示锁冲突所设计的所有利用法度榜样,当您选择 Locking Conflicts时,这些利用法度榜样都与一个不凡的资本相关联。

Application in Lock Conflicts 面板显示了 holder 和 waiter 利用法度榜样,此中包括利用法度榜样的状态、锁的模式、锁等待光阴等。  Application Details 视图中的 SQL Statement and Package 展示了加锁的利用法度榜样的 SQL 语句。  Application Details 视图中的 Locks 显示了详细的加锁信息,例如利用法度榜样所持有的锁、检测到的逝世锁、锁进级、等待锁的代理等。  Application Details 视图中的 Identifcation 显示了有关正在运行该利用法度榜样的用户的详细信息。  利用法度榜样所持有的锁:  这个数字阐明当前的利用法度榜样持有若干个锁。  要是监视信息是在数据库级长进行的,那么该值便是数据库中所有利用法度榜样所持有的锁的总数。要是监视信息是利用法度榜样级的,那么该值便是这个利用法度榜样的所有代理今朝持有的锁的总数。

您可能还会对下面的文章感兴趣: