如何调整DB2数据库性能实用技巧分享(3)
db2"getsnapshotfordatabaseonDBNAME"
查看:
Locksheldcurrently=0
Lockwaits=0
Timedatabasewaitedonlocks(ms)=0
Locklistmemoryinuse(Bytes)=576
Deadlocksdetected=0
Lockescalations=0
Exclusivelockescalations=0
Agentscurrentlywaitingonlocks=0
LockTimeouts=0
假如locklist的内存量(bytes)超过LOCKLIST的50%,那么需要增加LOCKLIST的量,LOCKLIST是按4k计算。
8.MaximumOpenFiles
最大的打开文件数目
DB2限制同时打开的文件数目,数据库参数"MAXFILOP"限定了并发打开的文件数目。如达到这个数目,DB2就会开始关闭和打开Tablespace文件,包括rawdevice,这样会降低SQL反映时间和占用CPU。
使用命令来查看是否有文件关闭情况:
db2"getsnapshotfordatabaseonDBNAME"
看看其中的"Databasefilesclosed=0"
如果值不是零,就需要修改MAXFILOP,
db2"updatedbcfgforDBNAMEusingMAXFILOPN"
9.Agents
需要保证有足够的agent应付系统负载。
命令:db2"getsnapshotfordatabasemanager"
此时需要观察“Agentswaitingforatoken”或者“Agentsstolenfromanotherapplication”,假如有值,就需要增加DBmanager的agent值,也就是修改MAXAGENTS和/或者MAX_COORDAGENTS的值。
Highwatermarkforagentsregistered=7
Highwatermarkforagentswaitingforatoken=0
Agentsregistered=7
Agentswaitingforatoken=0
Idleagents=5
Agentsassignedfrompool=158
AgentscreatedfromemptyPool=7
Agentsstolenfromanotherapplication=0
Highwatermarkforcoordinatingagents=7
Maxagentsoverflow=0
10.MonitorSwitches
打开MonitorSwitch后才可以获得性能方面的信息,详细命令如下:
db2"updatemonitorswitchesusinglockONsortONbufferpoolONuowONtableONstatementON"
查看执行计划:
db2expln:
db2expln-ddbname-cpkgOwner-ppkgNmae-oexpln.out
dynexpln:
dynexpln-deos-q"select*fromeosmenu"-g-t
dynexpln-deos-fquery.sql-oout.txt
更新统计信息:
runstats:
db2runstatsontablesongxn.eosmenuandindexssongxn.ix1,songxn.ix2allowreadaccess
db2runstatsontablesongxn.eosmenuwithdistributionanddetailedindexall
调整优化等级:
(0,1,2,3,5,7,9):
更改DFT_QUERYOPT(dbcfg),默认为5
SQL:setcurrentqueryoptimization=3
索引:
建立索引:
createuniqueindexind1onvicky.staff(dept,lastname)
createuniqueindexind2onvicky.emplyee(empno)include(lastname,salary)
include中的字段不列入排序范围
丛集索引:
记录与索引的顺序一致
cretaeindexind3onvicky.staff(dept)CLUSTER
SCANMODE:
IndexScan,FullIndexScan(IndexonlyAccess),RelationScan
查询索引:
selectindnamefromsyscat.indexeswheretabname=’customer’
索引建议器:
db2advis-ddbname-iquery.sql|-s"sqlstmt"-oadvis.out
在数据页中预留空间:
altertablevicky.staffPCTFREE30(预留30%)
loadfromstaff.ixfofixfmodifiedbypagefreespace=30replaceintovicky.staff
缓冲池与IO
默认为IBMDEFAULTBP
新建缓冲池:
db2createbufferpoolbpnamesize1000pagesize4k
altertablespacetbnamebufferpoolbpname
当脏页超过CHNGPGS_THRESH(%,dbcfg)时,缓冲池将被清空并写回
延展缓冲池:
ESTORE_SEG_SZ&NUM_ESTORE_SEGS(dbcfg)
db2alterbufferpoolibmdefaultbp[not]extendedstorage
I/OSERVER:
NUM_IOSERVERS(dbcfg):一般为磁盘数+2
数据重整:
REORGCHK:
db2reorgchkupdatestatisticsontableall该语句也用来对所有表做RUNSTATS
db2reorgchkcurrentstatisticsontablevicky.staff
tablestatistics:
CARD:记录笔数
OV(ERFLOW):overflow的记录数
NP(AGES):含有记录的页数
FP(AGES):表格占用的总页数
分享到: