Informix数据库日常维护脚本

Informix数据库日常维护脚本

1、检查各个dbspaces的空间使用状况:    (sysmaster库)
select name dbspace,sum(chksize) allocated,sum(nfree) free,round(((sum(chksize)-sum(nfree))/sum(chksize))*100)||"%" pcused
from sysdbspaces d,syschunks c
where d.dbsnum=c.dbsnum group by name order by 4 desc;
剩余空间肯定是越大越好了
结果例子:
dbspace    llogdbs
allocated  256000
free       3447
pcused     99%

dbspace    rootdbs
allocated  250000
free       244351
pcused     2%

dbspace    phylogdbs
allocated  256000
free       255947
pcused     0%

dbspace    workdbs
allocated  1024000
free       1023322
pcused     0%


2、显示各个dbspaces的I/O状况:    (sysmaster库)
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均衡

结果例子:
name        llogdbs
path_name   /informix/dbs/llogdbs
diskreads   612
diskwrites  11

name        rootdbs
path_name   /informix/dbs/rootdbs
diskreads   145
diskwrites  9

name        workdbs
path_name   /informix/dbs/workdbs
diskreads   3
diskwrites  0

name        phylogdbs
path_name   /informix/dbs/phylogdbs
diskreads   2
diskwrites  0

name        workdbs
path_name   /informix/dbs/workdbs_1
diskreads   1
diskwrites  0


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

结果例子:
dbsname     sysmaster
tabname     systables  
diskreads   425
diskwrites  0

dbsname     sysmaster
tabname     syscolumns
diskreads   189
diskwrites  0

dbsname     sysmaster
tabname     sysviews
diskreads   117
diskwrites  0

dbsname     sysuser
tabname     systables
diskreads   57
diskwrites  0

dbsname     sysmaster
tabname     sysdatabases
diskreads   41
diskwrites  0

dbsname     sysmaster
tabname     syscolauth
diskreads   35
diskwrites  0

dbsname     sysmaster
tabname     systabauth
diskreads   30
diskwrites  0

dbsname     sysmaster
tabname     sysprocedures
diskreads   19
diskwrites  0

dbsname     sysmaster
tabname     sysobjstate
diskreads   16
diskwrites  0

dbsname     sysmaster
tabname     sysprocbody
diskreads   15
diskwrites  0

dbsname     sysmaster
tabname     sysblobs
diskreads   11
diskwrites  0


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

结果例子:

tabname  flags_text
num_ext  2

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

结果例子:


idxname  sct_fromtotype
levels   2

idxname  column
levels   2

idxname  col_xtd_id
levels   2

idxname  objdesc
levels   2

idxname  idxname
levels   2

idxname  tabgtor
levels   2

idxname  tabname
levels   2

idxname  tabgtee
levels   2


6、检查命中率不高的索引(nrows和unique越接近越好):   (sysmaster库)
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 ;
当索引的效率不高的时候,需要根据实际情况修改

结果例子:

tabname  sysdbspartn
idxname  sysdbs_nameix
nrows    1
nunique  1

tabname  systabnames
idxname  systabs_pnix
nrows    100
nunique  100

tabname  sysrawdsk
idxname  sysrawdskidx
nrows    100
nunique  100

tabname  syspaghdr
idxname  syspaghdridx
nrows    100
nunique  100

tabname  sysslttab
idxname  sysslttabidx
nrows    100
nunique  100

tabname  syssltdat
idxname  syssltdatidx
nrows    100
nunique  100

tabname  syschfree
idxname  syschfreeidx
nrows    100
nunique  100

tabname  sysptnhdr
idxname  sysptnhdridx
nrows    100
nunique  100


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

结果例子:

dbsname     sysutils
tabname     sysprocbody
(count(*))  7  
(sum)       88

dbsname     sysmaster
tabname     sysprocbody
(count(*))  7
(sum)       96

dbsname     sysuser
tabname     sysprocbody
(count(*))  6
(sum)       88

dbsname     workdb
tabname     sysprocbody
(count(*))  6
(sum)       88

dbsname     workdb
tabname     sysprocedures
(count(*))  4
(sum)       32

dbsname     sysmaster
tabname     syscolumns
(count(*))  4
(sum)       40

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

结果例子:

dbsname     sysmaster
tabname     systables
diskreads   652
diskwrites  0

dbsname     sysmaster
tabname     syscolumns
diskreads   262
diskwrites  0

dbsname     sysmaster
tabname     sysindices
diskreads   219
diskwrites  0

dbsname     sysmaster
tabname     sysviews
diskreads   184
diskwrites  0

dbsname     sysuser
tabname     systables
diskreads   109
diskwrites  0

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


结果例子:

10、表的顺序扫描数(OLTP系统的话,大表的顺序扫描数越小越好)     (sysmaster库)
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;

结果例子:

tabname   sysdatabases
nrows     0
seqscans  7

11、查看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      (及操作系统的PID)
再用onstat -g sql session id查看它在做什么。
update statistics for table temp_user;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26366371/viewspace-1972577/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26366371/viewspace-1972577/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值