教你轻松掌握Informix数据库的日常维护
为了提高IDS日常维护的效率,提供以下脚本供大家参考。检查每个数据库空间的空之间的用法:
select name dbspace,sum(chksize) allocated,sum(nfree) free,
round(((sum(chksize)-sum(nfree))/sum(chksize))* 100)| " " " pcused
表单sysdbspaces d,syschunks c
其中d . DBMS num = c . DBMS num按名称分组,按4个desc排序
剩余的空空间必须尽可能大。
显示每个数据库空间的I/O状态:
select d.name,fname path_name,sum(pagesread) diskreads,sum(pageswritten) diskwrites
来自syschkio c、syschunks k、sysdbspaces d
其中d.dbsnum=k.dbsnum,k.chknum=c.chunknum
按1分组,2按3 desc排序
根据每个dbspaces的I/O调整表的布局,使整个系统的I/O达到平衡。
检查哪个表具有最多的磁盘I/O:
select dbsname,tabname,(isreads + pagreads) diskreads,(iswrites + pagwrites) diskwrites
来自sysptprof
由3个desc、4个desc订购
同上。
检查表的范围分布:
select t.tabname,count(*) num_ext
来自sysextents,npmdb:systables t
其中e.tabname=t.tabname
和dbsname = "npmdb "
t.tabname不像“sys%”
按1分组
计数(*) > 1
由desc订购
建议表中的扩展名数量不要超过30。如果太大,需要重新构建表,修改扩展大小的大小来修改扩展的数量。
清单中的索引数量(尽可能少):
select idxname,sysindexes中的级别order by 2 desc
检查命中率低的索引(nrows和unique越接近越好):
选择tabname,idxname,nrows,nunique
来自系统表t,系统索引I
其中t.tabid =i.tabid且t.tabid > 99
以及nrows > 0和nunique > 0
当索引的效率不高时,需要根据实际情况进行修改。
看数据库里那些碎片比较多的表(碎片越小越好)。
select数据库名称,表名,计数(*),总和(大小)
来自sysextents
按1,2分组
由3 desc订购;
读取和写入表和索引,(检查哪个数据库实体读取和写入更多)
select dbsname,tabname,(isreads + pagreads) diskreads,(iswrites + pagwrites)
磁盘写入
来自sysptprof
由3个desc、4个desc订购
这些表存在激烈的锁竞争(越小越好)
select a.tabname,nrows,lockwts,deadlks
来自sysmaster:sysptprof a,systables b
其中a.tabname=b.tabname且lockwts>0
和a.dbsname =库名
并且b.tabid >= 100
按tabname排序;
表的顺序扫描次数(对于OLTP系统,大型表的顺序扫描次数越少越好)
select a.tabname,nrows,seq scans
from sys master:sysptprof a,systables b
其中a.tabname=b.tabname且seqscans>0
和a.dbsname = '库名'
并且b.tabid>=100
按tabname排序;
位律师回复
0条评论