Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7305929
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: DB2/Informix

2010-08-04 16:03:54

为了提高日常维护IDS的效率,特提供以下脚本供大家参考。


检查各个dbspaces的空间使用状况:
select name dbspace,sum(chksize) allocated,sum(nfree) free,round(((sum(chksize)-sum(nfree))/sum(chksize))*100)||"%" pcused
form sysdbspaces d,syschunks c
where d.dbsnum=c.dbsnum group by name order by 4 desc
剩余空间肯定是越大越好了

显示各个dbspaces的I/O状况:
select d.name,fname path_name,sum(pagesread) diskreads,sum(pageswritten) diskwrites
from syschkio c,syschunks k,sysdbspaces d
where d.dbsnum=k.dbsnum and k.chknum=c.chunknum
group by 1,2 order by 3 desc
根据各个dbspaces的I/O来调整表的布局,使整个系统I/O均衡

检查哪个表具有最多的磁盘I/0:
select dbsname, tabname, (isreads + pagreads) diskreads, (iswrites + pagwrites) diskwrites
from sysptprof
order by 3 desc,4 desc
同上。


检查表的extent的分布状况:
select t.tabname, count(*) num_ext
from sysextents e, npmdb:systables t
where e.tabname=t.tabname
and dbsname = "npmdb"
and t.tabname not like "sys%"
group by 1
having count(*) > 1
order by 2 desc
表的extent建议最大不超过30个,如果太大,就需要重建表修改extent size的大小从而修改extent的数量

检查表中索引的层数(越少越好):
select idxname, levels from sysindexes order by 2 desc

检查命中率不高的索引(nrows和unique越接近越好):
select tabname, idxname, nrows, nunique
from systables t, sysindexes I
where t.tabid =i.tabid and t.tabid > 99
and nrows > 0 and nunique > 0
当索引的效率不高的时候,需要根据实际情况修改


看数据库里面那些表的碎片比较多(碎片小比较好)
select dbsname , tabname ,count(*), sum(size)
from sysextents
group by 1,2
order by 3 desc;

表和索引的读写情况,(考查那个数据库实体读写比较多)
select dbsname, tabname, (isreads + pagreads) diskreads, (iswrites + pagwrites)
diskwrites
from sysptprof
order by 3 desc, 4 desc

那些表的锁竞争比较厉害(越小越好)
select a.tabname,nrows,lockwts,deadlks
from sysmaster:sysptprof a,systables b
where a.tabname=b.tabname and lockwts>0
and a.dbsname = name
and b.tabid >= 100
order by tabname;

表的顺序扫描数(OLTP系统的话,大表的顺序扫描数越小越好)
select a.tabname,nrows,seqscans
from sysmaster:sysptprof a,systables b
where a.tabname=b.tabname and seqscans>0
and a.dbsname = '库名'
and b.tabid>=100
order by tabname;


查看informix数据库表占用空间大小情况:
在sysmaster数据库中查询表systabnames,sysptnext。其中systabnames.partnum=sysptnext.pe_partnum.执行以下sql:
select tabname,sum(pe_size) from systabnames,sysptnext
where partnum=pe_partnum
and tabname='table_name'--(table_name为要查询的表名)
group by tabname
(注:查询结果中pe_size的值,单位IBM是4k,HP-UX是2k)


用onstat查是那个线程在干的,然后再分析。
我是用onstat   -u查看到锁数的。
用onstat   -g   ses   找出session   id 
再用onstat   -g   sql   session   id查看它在做什么。
update statistics for table temp_user;
阅读(2103) | 评论(0) | 转发(0) |
0

上一篇:自画像

下一篇:Informix 性能调优案例讲解

给主人留下些什么吧!~~