您当前的位置: 首页 > 数据库教程 > 如何调整DB2数据库性能实用技巧分享(2)

如何调整DB2数据库性能实用技巧分享(2)

作者:不详 来源:网络 发布时间: 2010-05-10 18:47 点击:
Randomlyreadtablesshouldhaverandomlyreadtablespaces,meaninghighsynchronousreadpercentages,usuallyhigherbufferpoolhitratios,andlowerphysicalI/Orates. 对每个tablespace,要注意Prefetchsize是Extentsize的

如何调整DB2数据库性能实用技巧分享(2)


  
  Randomlyreadtablesshouldhaverandomlyreadtablespaces,meaninghighsynchronousreadpercentages,usuallyhigherbufferpoolhitratios,andlowerphysicalI/Orates.
  
  对每个tablespace,要注意Prefetchsize是Extentsize的倍数。如果必要,可以修改tablespace的prefetchsize。
  
  显示tablespace信息:db2"listtablespacesshowdetail"
  
  显示containers信息:db2"listtablespacecontainersforNshowdetail"
  
  4.TABLEACCESS
  
  要查出来每次查询读出的row,
  
  1)db2"getsnapshotfordatabaseonDBNAME"
  
  看到多少交易发生,thesumofCommitstatementsattempted+Rollbackstatementsattempted
  
  2)db2"getsnapshotfortablesonDBNAME"
  
  区分出交易读出的row。dividethenumberofrowsreadbythenumberoftransactions(RowsPerTX).OLTP一般每次交易从一个table里面读出20row,如果发现一个交易能读出成百上千行数据,表扫描就可能出现,可能需要看看index是否需要。简单情况下是运行runstats收集信息。
  
  Sampleoutputfrom"getsnapshotfortablesonDBNAME"follows:
  
  Snapshottimestamp=09-25-20004:47:09.970811
  
  Databasename=DGIDB
  
  Databasepath=/fs/inst1/inst1/NODE0000/SQL00001/
  
  Inputdatabasealias=DGIDB
  
  Numberofaccessedtables=8
  
  TableList
  
  TableSchema=INST1
  
  TableName=DGI_SALES_LOGS_TB
  
  TableType=User
  
  RowsWritten=0
  
  RowsRead=98857
  
  Overflows=0
  
  PageReorgs=0
  
  有很高的Overflows,就需要re-orgtable。当一行宽度改变,可能DB2就会把一行放到不同的页中。
  
  5.SORTMEMORY
  
  OLTP应该没有大规模的sort,因为sort会消耗大量的CPU,I/O和时间。
  
  缺省的SORTHEAP=256*4K=1M,一般是足够了。应该知道sortoverflows的数目和每个交易的sortnumber。
  
  Db2"getsnapshotfordatabaseonDBNAME"
  
  察看如下项目:
  
  Totalsortheapallocated=0
  
  Totalsorts=1
  
  Totalsorttime(ms)=8
  
  Sortoverflows=0
  
  Activesorts=0
  
  Commitstatementsattempted=3
  
  Rollbackstatementsattempted=0
  
  Lettransactions=Commitstatementsattempted+Rollbackstatements
  
  attempted
  
  LetSortsPerTX=Totalsorts/transactions
  
  LetPercentSortOverflows=Sortoverflows*100/Totalsorts
  
  如果PercentSortOverflows超过3%,可能说明应用中有比较严重的sortSQL。因为大量的overflows说明有大量的sort出现,为零或者小于1时比较理想的。
  
  如果有大量的overflow出现,权宜之计是增加SORTHEAP,但是这么做只是隐藏了问题。根本解决是:要定位SQL,通过调整SQL,INDEX,clustering来减少sort代价。
  
  如果SortsPerTX大于5,说明每个交易的sort数目过多,某些应用可能执行了大量的小复合查询,不会overflow,但是有很小的时间段。但是会消耗大量的CPU。同样是要调整SQL,INDEX,clustering来解决问题。
  
  6.TemporaryTablespaces
  
  临时表空间一般要有3个containers在不同的disk上,可以实现并行I/O,提高sorts,hashjoins,或者其他在TEMPSPACE上的动作的性能。
  
  db2"listtablespacesshowdetail",可查看临时表空间的container:
  
  TablespaceID=1
  
  Name=TEMPSPACE1
  
  Type=Systemmanagedspace
  
  Contents=Temporarydata
  
  State=0x0000
  
  Detailedexplanation:Normal
  
  Totalpages=1
  
  Useablepages=1
  
  Usedpages=1
  
  Freepages=Notapplicable
  
  Highwatermark(pages)=Notapplicable
  
  Pagesize(bytes)=4096
  
  Extentsize(pages)=32
  
  Prefetchsize(pages)=96
  
  Numberofcontainers=3
  
  这里表示有3个container,Prefetchsize是Extentsize的3倍。为了最好的并行性能,最好Prefetchsize是Extentsize的倍数。一般倍数是container的数目。
  
  db2"listtablespacecontainersfor1showdetail"
  
  可以看到containers的定义。
  
  7.Locks
  
  缺省的LOCKTIMEOUT=-1,就是说不设置lock的timeout,在OLTP中这可能是一个灾难。我们要设置比较小的数值,比如设置LOCKTIMEOUT=10或者15秒。
  
  查看命令:
  
  db2"getdbcfgforDBNAME",
  
  继续查看下面的信息:
  
  Locktimeout(sec)(LOCKTIMEOUT)=-1
  
  要和应用人员将明白,他们是否已经在程序中可以处理timeout的情况。然后设置:
  
  db2"updatedbcfgforDBNAMEusingLOCKTIMEOUT15"
  
  可以在系统中察看lockwait的数目,lockwaittime,locklist使用的内存量。
分享到:
本文"如何调整DB2数据库性能实用技巧分享(2)"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4