mingche 发表于 2016-11-17 10:09:46

Db2性能调优快速参考!

  DB2 如何使用内存

  全局控制块 运行数据库管理器所需的内存空间。在数据库管理器启动的时候分配该内存。快速通信管理器(Fast Communication Manager,FCM)为 DB2 EEE 提供了通信支持。而 FCM 缓冲区也是从该内存区域分配的。
  数据库全局内存 运行数据库所需的内存。在激活数据库的时候分配该内存。内存段的数量由配置参数 numdb(数据库数量)来限制。而总的数据库全局内存的大小是由 表 1中所示的数据库配置参数来确定的:
  表 1. 影响数据库全局内存大小的数据库配置参数
buffpage 影响缓冲池大小(设置为 -1) pckcachesz 包缓存器大小ut_heap_sz 实用程序堆大小dbheap数据库堆locklist锁的最大存储量

  应用程序全局内存 应用程序全局内存是指运行应用程序所需的内存。在要从应用程序接收请求的第一个代理程序要求建立连接的时候分配该内存。该内存是由数据库配置参数 app_ctl_heap_sz 控制的。所有工作于同一应用程序的代理程序将共享应用程序全局内存。
  代理程序私有内存 每个代理程序都拥有自己的私有内存。低层配置参数 maxappls 和 maxagents 将限制内存段的数量:
  表 2. 低层的 maxappls 和 maxagents 限制内存段
maxappls所有活动数据库的应用程序的最大总数目maxagents代理程序的最大数目
  其最大容量由 表 3中所示的各种配置参数来确定。

  agent_stack_sz
代理程序堆栈大小
udf_mem_sz
udf 共享内存集大小
applheapsz
应用程序堆大小
sortheap
排序堆大小
stmtheap
语句堆大小
stat_heap_sz
统计堆大小
query_heap_sz
查询堆大小
drda_heap_sz
drda 堆大小

  代理程序/应用程序共享内存 工作于同一应用程序的代理程序将共享该内存。
  代理共享内存受 表 4中所示的数据库和数据库管理器配置参数的影响。
  表 4.影响代理程序共享内存的配置参数 aslheapsz
应用程序支持层堆大小
rqrioblk
客户机 i/o 块大小

  代理程序私有内存受 表 5中所示的数据库配置参数的影响。
  表 5.影响应用程序共享内存的配置参数 applheapsz
应用程序堆大小
agent_stack_sz
代理堆栈大小
stat_heap_sz
统计堆大小
udf_mem_sz
udf 内存
sortheap
排序堆大小
rqrioblk
查询堆大小
query_heap_sz
客户机 i/o 块
drda_heap_sz
drda 堆大小

  图 2说明了 DB2 是如何使用内存的。请查阅 Making DB2 Use All the Memory以获得更多信息。
  图 2 DB2 的内存使用情况
http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/0205parlapalli/images/db2mem2.jpg
  创建数据库
  在 DB2 EEE 中,可从 DB2 命令行处理器(CLP)提示符发出一个简单命令来创建数据库。以下示例创建了一个名为 mydb的数据库。
  CREATE DATABASE mydb
  执行了以上语句之后,数据库 mydb将出现在实例目录中。
  表空间
  表空间是数据库与实际容纳数据的容器对象之间的逻辑层。DB2 EEE 支持两类表空间:系统管理的空间(SMS)和数据库管理的空间(DMS)。在 SMS 中,操作系统的文件管理器分配并管理存储空间。SMS 中所使用的容器必须是目录。在 DMS 中,数据库管理器控制存储空间。DMS 中所使用的容器则必须是预分配的文件或物理设备,如硬盘驱动器。DBA 有权选择目录表空间、临时表空间和用户表空间这三者所需的表空间类型。
  如果您在创建数据库时使用默认值,则会创建下列系统管理的表空间:
  System—— 存储系统表中的目录信息。目录包含关于数据库对象(如表、视图、索引和包)定义的信息以及关于用户对于这些对象的访问类型的安全性信息。
  Temporary—— 存储数据库处理过程中所创建的系统临时表。
  User—— 存储由用户所创建的数据库对象,如表和索引。
  下列示例说明了数据库管理员可以如何使用 DMS 和 SMS 表空间来创建数据库。下列示例利用系统管理的目录表空间以及数据库管理的临时表空间和用户表空间创建了名为 tested的数据库。

      CREATE DATABASE tested  CATALOG TABLESPACE
  PAGESIZE 4096
  MANAGED BY DATABASE USING
  (FILE 'C:\\DATA\\CAT1.DAT' 3000,
  FILE 'D:\\DATA\\CAT1.DAT' 3000)
  EXTENTSIZE 12
  PREFETCHSIZE 16
  TEMPORARY TABLESPACE
  MANAGED BY SYSTEM USING
  ('C:\\DATA\\TEMP1' , 'D:\\DATA\\TEMP2')
  USER TABLESPACE
  MANAGED BY DATABASE USING
  ('\\\\.\\PhysicalDrive1' 4096,
  '\\\\.\\PhysicalDrive2' 4096)
  
  


  页(PAGE):组成块的表数据行称作页(page)。DB2 支持大小为 4 KB、8 KB、16 KB 和 32 KB 的页。您可以基于所使用的应用程序类型为不同的表空间选择不同的页面大小。默认情况下,DB2 使用 4 KB 的页。
  页大小(PAGESIZE):为目录表空间指定页面大小为 4 KB。
  扩展块(EXTENT):形成分配单元的一组页称作扩展块(extent)。在上面的示例中, 扩展块大小(EXTENTSIZE)定义 12 个 4 KB 的页组成一个扩展块。
  预取(PREFETCH):该方式允许 DB2 在检索数据时预先读取数据以避免等待时间。
  预取大小(PREFETCHSIZE):定义可预取的页数。
  命令 LIST TABLESPACES SHOW DETAILS 除了显示以上信息之外,还显示总的页、可用的页、已用的页、空页等信息。
  在由 LIST TABLESPACES 命令找到表空间 ID 之后,您可以通过发出命令 LIST TABLESPACE CONTAINERS FOR 2 SHOW DETAIL 找到关于容器的更多信息。2 是这个表空间的 ID。该命令将列出所指定的表空间的容器。而对于每个容器,它将显示其 ID、名称、类型、可用的页以及该容器当前是否可被访问。
  在 DB2 中,您可以将索引、数据置于不同的表空间。给容器使用不同的硬盘驱动器将减少 I/O 竞争。下列示例创建了表 employee。常规数据将被置于表空间 TBS1 之中,而索引数据将被置于 TBS2 之中。

      CREATE TABLE employee(  E_NO INT NOT NULL,
  E_NAME CHAR(20) NOT NULL )
  IN TBS1 INDEX IN TBS2
  
  


  创建缓冲池
  当从硬盘驱动器读写表和索引数据时,DB2 使用缓冲池来缓存它们。在创建表空间的时候,会指派一个默认的缓冲池 IBMDEFAULTBP。DBA 在创建或更改表空间时可以将缓冲池映射到该表空间。对于每个不同页大小的表空间,应该存在一个页大小相匹配的缓冲池。

      CREATE BUFFERPOOL bp1  SIZE 4000
  PAGESIZE 4096
  
  


  上面的 SQL 语句创建了一个 4000 个 4KB 页的缓冲池 bp1(4000*4K = 16000K)。
  现在就可以更改当前的表空间以映射缓冲池 bp1。以下示例将 emp 表空间映射到缓冲池 bp1:

      ALTER TABLESPACE emp BUFFERPOOL bp1  
  


  缓冲池在数据库服务器上被分配为许多共享的内存段。数据库记录是在内存的缓冲池区域里被读取和更新的。而所有的缓冲池是在数据库被激活时被分配的。当应用程序需要数据库中指定表或索引的数据时,包含该数据的页将被从硬盘转移到相关的缓冲池中。直到发生以下某种情形时,才将这些页写回到硬盘中:
  所有的应用程序与数据库断开连接。
  新的页需要被读入缓冲池。
  页清除器(cleaner)可用,并且被数据库管理器激活。
  缓冲池应该大到足以在内存中保留所需的数据,以便减少硬盘驱动器的活动。要利用增加的缓冲池,您必须重新绑定应用程序,以使优化器在决定其访问策略时考虑缓冲池大小。
  配置数据库实例
  DB2 EEE 实例或实例管理器都驻留在目录节点上。实例所属的机器(即节点 0)拥有存储了该信息的共享目录。添加到一个实例的其他数据库分区服务器被称为是 参与该实例的。
  物理节点 首先在一台机器上安装该实例所属的分区数据库服务器,然后在参与了分区的数据库系统的其他每台机器上安装一个数据库分区服务器,您可以通过这样做来配置物理节点。
  逻辑节点 将同一机器上有不止一个分区数据库服务器称作 多逻辑节点(MLN)配置。MLN 利用了 SMP 体系结构。可使用 db2ncrt 命令在实例上添加分区数据库服务器节点(逻辑节点)来创建 MLN 配置。
  下列示例向机器 node1上的实例 BENCH 添加了一个新的数据库分区服务器。该命令将这个新节点安装到 node1并使用逻辑端口 1。
  db2ncrt /n:1 /u:BENCH\\db2inst1,bmdb2 /I:BENCH /m:node1 /p:1 /h:node1
  节点组 一个或多个数据库分区的命名子集称作节点组。而由不止一个数据库分区构成的子集就被称作多分区节点组。多分区节点组可以仅存在于属于同一数据库的数据库分区之中。
  下列示例在所有数据库分区上创建节点组 allnodes:

      CREATE NODEGROUP allnodes ON ALL NODES  
  


  这个示例仅仅在节点 0 至 3 以及节点 5 上创建节点组 snodes:
  CREATE NODEGROUP snodes ON NODE (0 TO 3, 5)
  在创建了节点组之后,您必须将之与表空间关联起来以指定在哪些节点上对数据进行分区。

      CREATE TABLESPACE org  IN NODEGROUP s_nodes
  MANAGED BY DATABASE
  USING (DEVICE '\\\\.\\PhysicalDrive1' 2000) ON NODE(0)
  USING (DEVICE '\\\\.\\PhysicalDrive1' 2000) ON NODE(1)
  USING (DEVICE '\\\\.\\PhysicalDrive1' 2000) ON NODE(5)
  
  


  图 3说明了给定分区的数据库对象之间的关系。
  图 3. 给定数据库分区的 DB2 对象 - 关系图
http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/0205parlapalli/images/hs_fig3.jpg
  调优指南
  DB2 有用于监控和分析数据库性能问题的工具。
  解释工具 解释(Explain)工具对于识别性能问题非常有用。它有助于判断是否需要附加索引,是否需要重写查询,锁定策略是否合适,等等。可通过下列方式捕获解释快照信息。
  启用 EXPLAIN SNAPSHOT 专用寄存器 将专用寄存器 CURRENT EXPLAIN SNAPSHOT 设置为 YES 以捕获动态 SQL 语句的快照。您可以在应用程序中嵌入下列语句或者交互发出该语句。通过设置专用寄存器,将获得任何后续的合格动态 SQL 语句的解释快照(Explain snapshot)。

      SET CURRENT EXPLAIN SNAPSHOT YES  
  


  收集 SQL 过程的解释快照 存储过程需要将寄存器 EXPLSNAP 设置为 ALL 或 YES,用以收集存取方案。

      db2 PREP <procedure name> EXPLSNAP {YES / ALL / NO }  YES = static SQL
  ALL = static and dynamic
  NO = No snapshot
  
  


  当用 EXPLSNAP YES 或 ALL 准备好包时,您就可以获得关于整个程序包的方案。
  db2expln 工具描述了为系统目录表中存储的程序包中的静态 SQL 语句选中的存取方案,而 dynexpln 工具描述了动态 SQL 语句的存取方案。
  下列示例使用 db2expln 来检索用户 myuser 创建的数据库 mydb 中名为 neword 的包的存取方案,并写入输出文件 output.file。
  db2expln -d mydb -p neword -c myuser -o output.file
  影响性能的实用程序 DB2 提供了各种实用程序来提高数据库性能,如 RUNSTATS、REORG 和 REORGCHK。
  RUNSTATS 实用程序更新系统目录表中的统计信息以帮助查询优化处理。数据库管理器通过这些统计信息可以做出决策以提高 SQL 语句的性能。大量更改数据之后或运行 REORG 之后使用该实用程序。
  REORG 清除表和索引中的碎片,并且可选择根据索引的次序排列表行。当另一个实用程序 REORGCHK 指明需要 REORG 时以及当性能随时间下降时(当数据的插入、更新和删除造成群集或空间利用下降时),就使用 REORG。
  REORGCHK 检查系统表中的数据和应用公式以判断是否要重新组织表及其索引。REORGCHK 还可以在检查统计信息之前调用 RUNSTATS。要定期运行 REORGCHK,或者在用户注意到性能下降时运行它。
  示例
  下列 RUNSTATS 示例收集基于索引的所有可能统计信息:
  RUNSTATS ON TABLE bench.neword WITH DISTRIBUTION AND DETAILED INDEXES ALL
  下列 REORG 示例重新组织客户表,并使用系统临时表空间 TEMPSAPCE1 作为工作区域以存储中间结果。

      REORG TABLE bench.customer USING TEMPSPACE1  
  


  下列 REORGCHK 命令检查是否需要 REORG,并且更新关于表 bench.customer 的统计信息:

      REORGCHK UPDATE STATISTICS ON TABLE bench.customer  
  


  最小化 I/O
  通过利用索引、缓存、登录开销的减少、汇总表以及取数据的减少来减少 I/O。
  使用索引 创建恰当的索引将提高查询的性能。DB2 索引顾问(index adviser)辅助设计表上的索引。它在下列情况中十分有用:
  为问题查询找到最适合的索引。
  为一组查询寻找最佳索引受到了优化应用的资源限制。
  测试工作负载上的索引而无需创建该索引。
  索引的创建有助于避免对表进行不必要的扫描和排序,加速频繁执行的查询以及确保惟一性。
  创建索引之后,请使用解释(Explain)工具来确保 DB2 在使用它们。
  目录缓存器、包缓存器和日志缓冲区 要设置大小适当的目录缓存器、包缓存器和日志缓冲区以提高性能。目录缓存器用于存储表描述符信息,而在先前的语句中引用表、视图或别名时将使用该信息。包缓存器设置数据库全局内存的总量以用于缓存程序包的静态和动态 SQL 语句。日志缓冲区将容纳存储器中的日志记录,直到它们被写回硬盘驱动器。当发生下列一种情况时,日志记录就被写入硬盘驱动器:
  日志缓冲区已满。
  提交一个事务或一组事务。
  使日志缓冲区可以容纳一般事务所使用的日志空间总量是很重要的。否则,大量的日志写操作将带来糟糕的记录性能,而这主要是由日志缓冲区已满的状况导致的。
  以下是用于更改这些缓存参数的命令:

      db2 update db cfg for mydb using logbufsz 4096  db2 update db cfg for mydb using catalogcache_sz 1024
  db2 update db cfg for mydb using pckacchesz 4096
  
  


  提高 I/O 并行性 以下是提高 I/O 并行性的指南:
  在多个硬盘驱动器上展开数据以减少 I/O 等待时间。
  将数据和索引分隔到不同的表空间,以通过减少 I/O 竞争来提高 OLTP 和 OLAP 应用程序的性能。
  作为 OLTP 应用程序的经验法则,可在多个设备上使用 DMS 表空间。而临时表空间和目录表空间必须置为 SMS。
  日志文件的放置 对于 OLTP 应用程序,将日志文件放置在单独的物理设备上是极其重要的,因为这样它们的频繁活动就不会给在同一硬盘驱动器上的其他工作带来不良影响。
  DB2 的并行 I/O 当从表空间容器读取或者向其写入数据时,如果数据库中的容器数量大于 1,DB2 就可能使用并行 I/O。然而,也存在受益于为单个容器的表空间启用并行 I/O 情形,特别是对于条带化的 RAID 设备。
  启用分区内并行性 要启用优化器以选择分区内并行性,您必须按如下所示设置分区内并行的数据库管理器配置参数:

      db2 update dbm cfg using intra_parallel YES  
  


  分区内并行需要设置数据库参数 dft_degree 以指定并行度。应将该值设置为大于 1 而小于等于数据库分区可使用的处理器数目。
  数据库配置参数 dft_degree 指定每个数据库默认的并行性级别。1 意味着不存在分区内并行性。而 -1 则意味着由优化器基于处理器数目和查询类型来确定并行度。
  当将数据库跨节点进行分区时,将自动启用分区间并行性。
  汇总表 汇总表是指其定义基于查询结果的表。因此,汇总表通常包含基于其定义所基于的表中的现有数据的预计算结果。如果 SQL 编译器判断对汇总表运行动态查询比对基表运行更高效,则将对汇总表执行查询,您也将更快地获得结果。
  如何对数据分区 分区键(partitioned key)是指一列或一组列,用于确定特定行数据所存储的分区。要在 CREATE TABLE 语句中指定表的分区键。如果您没有在表空间中指定表的分区键,而该表空间又被分隔给节点组中的多个数据库分区,DB2 则会默认地由主键的第一列创建一个。而如果没有指定主键,默认的分区键则为该表上所定义的第一个不为 long 字段的列。

      CREATE TABLE customer(  C_ID INTEGER NOT NULL,
  C_FIRST VARCHAR(20) NOT NULL,
  C_MIDDLE VARCHAR(20) NOT NULL)
  IN CUSTOMER
  INDEX IN CUSTOMER_IDX
  PARTITIONING KEY(C_ID) USING HASHING;
  
  


  使用数据库快照监控器进行调优
  数据库监控器向 DBA 提供了关于数据库和访问该数据库的应用程序的大量信息。下面列出了不同的监控器组开关:
  SORT—— 使用的堆、溢出和执行的排序的总数。
  LOCK—— 保存的锁、死锁和锁等待升级的数目。
  TABLE—— 活动度量(读取行,写入行)。
  BUFFERPOOL—— 物理读、逻辑读和定时信息。
  STATEMENT—— 提交、回滚、选择和失败的数目。
  您可以通过下列命令使用这些开关以运行快照监控器:

      GET MONITOR SWITCHES  UPDATE MONITOR SWITCHES USING <
  switch-name> ON/ OFF
  RESET MONITOR ALL/ FOR DATABASE <
  dbname>
  
  


  调优缓冲区 缓冲区命中率表明了数据库管理器无需为服务页请求而加载来自于硬盘驱动器中的页的时间百分比;也就是说,该页已经存在于缓冲池中。缓冲池命中率越高,硬盘驱动器的 I/O 频率则越低。下列公式将通过缓冲池快照信息计算缓冲池命中率:

      (1- ((pool_data_p_reads + pool_index_p_reads) /  (pool_data_l_reads + pool_index_l_reads))) * 100
  
  


  如果命中率较低,则可以增加缓冲池页数来提高性能。
  调优排序堆 快照数据排序的平均经过时间可被度量为 total_sort_time / total_sorts。随着排序性能的提高,此平均量将减少。排序堆的增加可能会消除合并阶段,因而减少排序时间。
  调优排序堆阈值(sortheapthres) 总是要让阈值保持足够大以便满足所有应用程序所需的总排序堆。否则,应用程序进行管道排序的请求将遭到拒绝。数据库管理器所接受的管道排序请求百分比可以使用下列公式来计算:

      100%*piped_sorts_accepted/piped_sorts_requested  
  


  小百分比表明可通过增大参数 sortheapthres 来提高性能。
  调优包缓存器(pckcachesz) 可使用下列公式计算包缓存器的命中率:

      (1 - (Package cache inserts / package cache lookups)) * 100  
  


  较小的命中率表明应该增大参数 pckcachesz。
  调优目录缓存器 可使用下列公式计算目录缓存器的命中率:

      (1 - (Catalog cache inserts / catalog cache lookups)) * 100  
  


  较小的命中率表明应该增大 catalogcache_sz。
  调优并发应用程序的最大数目(maxappls) 数据库配置参数 maxappls 指定可连接到一个数据库的并发应用程序的最大数目。增加该参数的值而不减小参数 maxlocks 或增大参数 locklist 可能会达到数据库的锁(locklist)极限而不是应用程序的极限,并因此导致普遍锁升级问题。您应该确保应用程序有足够的可用代理程序(maxagents)。
  调优数据库管理器代理程序的最大数目(maxagents) maxagents 表明用以在任何给定时间里接受应用程序请求的数据库管理器代理程序的最大数目。参数 maxagents 的值应该为允许并发访问的每个数据库中 Maxappls 值的总和。
  快速通信管理器(FCM) DB2 可以使用 FCM 在工作于同一请求的代理程序之间进行通信。FCM 的可配置参数有 fcm_num_anchors、fcm_num_buffers、fcm_num_connect 和 fcm_num_rqb。随着分区数目的增加,连接条目的数目(fcm_num_connect)和 BQS RQB(fcm_num_rqb)也将会增加。而当请求块的数目增加时,FCM 缓冲区的数目(fcm_num_buffers)也会增加。当子段(subsection)数目(即查询复杂性)增加时,BDS RQB 的数目(fcm_num_rqb)和消息锚的数目(fcm_num_anchors)也将增加。
  在一个 MLN 环境中将 DB2_FORCE_FCM_BP 设置为 YES,可允许 DB2 在单独的内存段中创建 FCM 缓冲区。而当在单独的内存段中创建 FCM 缓冲区时,在同一物理节点上的不同逻辑分区的 FCM 守护进程间的通信将通过共享存储器进行。
  禁用 Windows 的文件系统缓存 文件系统缓存的执行如下:
  对于 DMS 文件容器(以及所有 SMS 容器),操作系统可在文件系统缓存器中缓存页面。
  对于 DMS 设备容器表空间,操作系统不在文件系统缓存器中缓存页面。
  当在 Windows NT® 上工作时,注册表变量 DB2NTNOCACHE 指定 DB2 是否用 NOCACHE 选项打开数据库文件。如果 DB2NTNOCACHE=ON,将不进行文件系统缓存。而如果 DB2NTNOCACHE=OFF,操作系统将缓存 DB2 文件。除了对于包含 LONG FIELDS 或 LOBS 的文件,这适用于所有数据。消除系统缓存将允许更多内存对数据库可用,以便可以增加缓冲池或排序堆。要禁用文件系统缓存,您必须将注册表变量设置为 ON:

      db2set DB2NTNOCACHE=ON  
  


  消除系统缓存将允许更多内存对数据库可用,以便可以增加缓冲池或排序堆。
  调优 Linux、UNIX 和 Windows 上的 DB2 的示例 Perl 脚本
  enable_snap.pl—— 启用所有 DB2 快照(即 BUFFERPOOLS、TABLES、LOCKS,等等)。
  perl gather_stats.pl < dbname> < time_in_secs> —— 该脚本将所有 DB2 快照信息搜集到名为 dbrun.snap 的文件中。
  perl buffhitratio.pl dbrun.snap—— 该脚本提供了每个缓冲池的数据和索引页命中率。

      $ perl buffhitratio.pl dbrun.snap  BP Name Logical Rd Physical Rd Writes Async Rds Async Wrts Hit Ratio%
  ------------------------------------------------------------------------------
  DATA 1538 133 19 117 0 91.35%
  INDX 3084 38 2 0 0 98.77%
  IBMDEFAULTBP DATA 1538 133 19 117 0 91.35%
  IBMDEFAULTBP INDX 3084 38 2 0 0 98.77%
  IBMDEFAULTBP DATA 1538 133 19 117 0 91.35%
  IBMDEFAULTBP INDX 3084 38 2 0 0 98.77%
  HINT :
  It is good have high hit ratio; if not increase your bufferpool size.
  
  


  perl cathitratio.pl dbrun.snap—— 该脚本提供了目录缓存器的命中率。

      $ perl cathitratio.pl dbrun.snap  Cache Inserts Cache Lookups % Hit Ratio
  -------------------------------------------------------
  10 20 50%
  HINT :
  If hit ratio is less than increase catalog cache size
  
  


  perl packhitratio.pl dbrun.snap—— 该脚本提供了包缓存器的命中率。

      $ perl packhitratio.pl dbrun.snap  Package Cache Inserts Package Cache Lookups % Hit Ratio
  --------------------------------------------------------------
  1 244 99%
  HINT :
  Increase the catalog cache size if the hit ratio is less
  
  


  perl sortthresh.pl dbrun.snap—— 该脚本提供了已服务的排序数目和被拒绝的排序数目。

      $ perl sortthresh.pl dbrun.snap  Piped sorts requested Piped sorts accepted % Serviced Num Sorts Rejected
  --------------------------------------------------------------------------------
  1 1 100% 0
  HINT :
  If % Serviced is low then increase sheapthresh
  If Num Sorts Rejected is higher then increase sortheap or sheapthreash is too small
  
  


  perl sorttime.pl dbrun.snap—— 该脚本提供了每个排序的平均经过时间。

      $ perl sorttime.pl dbrun.snap  Total Sort Time (ms) Total Sorts Average Elapsed Time per sort
  -----------------------------------------------------------------
  100 10 10
  HINT :
  As the performance improves, this average will decrease
  
  


  perl tbs_usage.pl <dbname>—— 该脚本提供了给定数据库的所有表空间的空闲和已用空间。

      $ perl tbs_usage.pl tpcd  connect to ebuis
  Database Connection Information
  Database server = DB2/LINUX 7.2.2
  SQL authorization ID = EBUIS
  Local database alias = EBUIS
  Ts_Id Ts_Name Total Used Free Number_of_files
  ------------------------------------------------------------------
  0 SYSCATSPACE 10M 10M 0M 1
  1 TEMPSPACE1 0M 0M 0M 1
  2 USERSPACE1 0M 0M 0M 1
  3 BENCHTEMP 1000M 0M 999M 2
  4 ORDERS_DATA 1000M 95M 903M 2
  5 ORDERS_INDEX 1000M 18M 981M 2
  6 LINEITEM_DATA 1000M 398M 600M 2
  7 LINEITEM_INDEX 1000M 138M 861M 2
  8 BENCHINDX 1000M 22M 977M 2
  9 BENCHDATA 1000M 94M 905M 2
  
  


  perl locklist.pl dbrun.snap <dbname> —— 该脚本显示总的锁列表、使用中的平均锁列表以及平均锁列表利用率。

      $ perl locklist.pl dbrun.snap ebuis  Locklist (4K Page) Lock_list_in_use(4K Page) Lock list utilization
  --------------------------------------------------------------------------------
  100 6 6%
  HINT :
  If Lock list utilization is low then decresae the locklist
  If Lock list utilization is more then increase the locklist

页: [1]
查看完整版本: Db2性能调优快速参考!