IBM Informix IDS  数据库健康检查建议书 
IInnffoorrmmiixx  
DDyynnaammiicc  SSeerrvveerr  
((IIDDSS))  
 
 
 
 
 
 
 
 
 
 
 
 
数数据据库库健健康康检检查查  
 
 
 
 
作者:谭永贻、孙国荣 
IBM CSDL 中国软件开发中心 
© Copyright IBM Corporation 2009.   
All rights reserved. 
 
IBM Informix IDS  数据库健康检查建议书 
使用条款 
根据下列条款和条件授予使用这些出版物的许可权。 
个人用途:您可以在全部所有权声明都得到保护的前提条件下复制这些出版
物以备个人的非商业使用。未经 IBM  明确同意,您不得分发、显示或制作这些
出版物或其任何部分的演绎作品。 
商业用途:在全部所有权声明都得到保护的前提条件下,您仅可在企业内部
复制、发布和显示这些出版物。未经 IBM  明确同意,您不得制作这些出版物的
衍生品;不可在您的企业之外复制、发布或展示这些出版物或其部分内容。 
除非本许可权中明确授予,否则不得授予对这些出版物或其中包含的任何信
息、数据、软件或其他知识产权的任何许可权、许可证或权利,无论明示的还是
暗含的。 
只要 IBM  认为这些出版物的使用 会损害其利益或者 IBM  判定未正确遵
守上述指示信息,IBM  将有权撤销本文授予的许可权。 
IBM  对这些出版物的内容不作任何保证。这些出版物是“按现状”提供的,
不附有任何种类的(无论是明示的还是暗含的)保证,包括但不限于暗含的有关
非侵权、适销和适用于某种特定用途的保证。 
 
 
IBM Informix IDS  数据库健康检查建议书 
数数据据库库健健康康检检查查....................................................................................- 1 -
前言.......................................................................................- 1 -
1、CPU.................................................................................- 1 -
 
1.1 CPU 利用率............................................................- 1 -  
1.2 CPU VP ..................................................................- 1 -  
 
 
2、Memory...........................................................................- 4 -
 
2.1  内存利用率.............................................................- 4 -  
2.2  数据库内存使用情况 .............................................- 5 -  
3、I/O....................................................................................- 5 -
 
3.1 rootdbs....................................................................- 5 -  
3.2  系统 I/O..................................................................- 6 -  
3.3  数据库写类型.........................................................- 7 -  
4、Network...........................................................................- 7 -
 
4.1  网络连接数.............................................................- 8 -  
4.2  网络连接失败情况.................................................- 8 -  
4.3 NETTYPE 参数 ......................................................- 9 -  
5、LOG.................................................................................- 9 -
 
5.1 Error 严重错误........................................................- 9 -  
5.2 Warning ................................................................- 10 -  
6、Administration ..............................................................- 10 -  
6.1  磁盘空间 ..............................................................- 10 -  
6.2  磁盘 chunk 状态 ..................................................- 11 -  
6.3  临时表空间...........................................................- 12 -  
6.4  逻辑日志 ..............................................................- 13 -  
6.5  物理日志 ..............................................................- 14 -  
6.6  备份与恢复...........................................................- 14 -  
6.7 Update Statistics..................................................- 15 -  
6.8 oncheck ................................................................- 16 -  
7、Execution......................................................................- 17 -
 
7.1 Instance Profile ....................................................- 17 -  
 
IBM Informix IDS  数据库健康检查建议书 
7.2 Current Active SQL..............................................- 18 -  
7.3 Checkpoint ...........................................................- 19 -  
7.4 Long Transaction.................................................- 21 -  
7.5 Lock ......................................................................- 22 -
 
7.6 Blocking Lock.......................................................- 23 -  
7.7 Larger SQL...........................................................- 23 -  
8、Performance.................................................................- 24 -  
8.1 Large tables .........................................................- 24 -  
8.2 Extents over tables..............................................- 24 -  
8.3 Level over indexes...............................................- 25 -  
8.4 Sequence scan tables.........................................- 26 -  
8.5 DBSpace I/O ........................................................- 27 -  
8.6 Most I/O tables.....................................................- 29 -  
8.7 Read Ahead .........................................................- 29 -  
8.8 Most Resource SQL............................................- 30 -  
8.9  等待事件 ..............................................................- 31 -  
8.10 Most CPU SQL ..................................................- 31 -  
8.11 Most Buffread Tables.........................................- 32 -  
8.12 Buffer Spin Contention......................................- 33 -  
8.13 Sort on Disk........................................................- 33 -  
总结.....................................................................................- 34 -
附录.....................................................................................- 29 -
 
 
 
IBM Informix IDS  数据库健康检查建议书 
前言 
为了关键业务系统稳定、高效的运行,IBM 公司为 Informix 数据库系统的用
户提供健康检查服务,目的是了解 Informix 数据库系统的运行和维护状态、发现
潜在的数据库性能问题,提出数据库系统调整的建议。 
1、CPU 
监控系统 CPU 利用率,观察 IDS 数据库 VP 的运行情况,根据系统实际业务
情况优化 INFORMIX 数据库的 VP 配置情况。诊断数据库系统运行情况,判断
是否需要增加新的 CPU。 
1.1 CPU 利用率 
检查点 
方法 
运行情况 
CPU  利用率(idle)   
top,sar   Solaris   ps  –aux     
A.top : 
Tasks: 209 total,   1 running, 207 sleeping,     0 stopped,     1 zombie 
Cpu(s):   0.3%us,   0.3%sy,   0.0%ni,  50.0%id, 49.2%wa,   0.0%hi,   0.2%si,  0.0%st 
B.sar 5 5: 
10:37:06 AM       CPU         %user      %nice    %system   %iowait     %steal    
10:37:11 AM           all         0.70         0.00         0.40      49.20       0.00       
10:37:16 AM             all        0.50       0.00         0.30       49.45         0.00         
10:37:21 AM             all        0.50       0.00         0.50       49.30         0.00         
10:37:26 AM             all        0.50       0.00         0.40       49.35         0.00         
%idle 
  49.70 
49.75 
49.70 
49.75 
健康状况评估  选择在多个典型时间点运行,以便综合考虑 CPU  利用率峰值、均值
情况。若 idle 均值<20,或者峰值时,idle 值<5 情况,则说明系统
CPU 资源不够。 
1.2 CPU VP 
检查点 
方法 
运行情况 
CPU VP  运行情况 
onstat -g glo 
onstat -g glo 
Virtual processor summary: 
 class         vps          usercpu    syscpu       total      
 cpu           2            307.90     5.92       313.82     
 aio             15           3.26       12.07         15.33       
 lio             1           0.27         2.32           2.59       
 pio             1             0.03       0.40         0.43      
 adm             1           0.00         0.00       0.00         
 msc          1             0.00         0.00         0.00       
 
- 1 - 
IBM Informix IDS  数据库健康检查建议书 
 total          21         311.46       20.71     332.17     
Individual virtual processors: 
 vp       pid         class         usercpu    syscpu       total       Thread       Eff     
 1       12053         cpu             68.92         3.15         72.07       658.16       10% 
 2       12054         adm          0.00         0.00        0.00       0.00           0% 
 3       12055         cpu             238.98       2.77         241.75       1556.19     15% 
 4       12056         lio           0.27        2.32      2.59         463.98       0% 
 5       12057         pio           0.03         0.40         0.43         153.09       0% 
 6       12058         aio           1.56         5.94         7.50         4708.18       0% 
 7       12059        msc          0.00         0.00       0.00           0.28          0% 
 8       12060         aio           0.68         2.83         3.51         4058.91       0% 
 9       12061         aio           0.21         0.52         0.73         2288.94       0% 
 10       12062         aio           0.45         2.05       2.50        3142.38       0% 
 11       12063         aio            0.10       0.20         0.30         1446.43       0% 
 12       12064         aio           0.05         0.12       0.17        803.03       0% 
 13       12065         aio           0.04         0.08       0.12        751.08       0% 
 14       12066         aio           0.04         0.08       0.12        727.04       0% 
 15       12067         aio           0.04         0.05       0.09        680.67       0% 
 16       12068         aio           0.01         0.02       0.03        647.37       0% 
 17       12069         aio           0.01         0.05         0.06        620.92       0% 
A.onstat -g glo 输出数据库实例各 CPU VP 的运行情况,通过监控
输出 Virtual processor summary 可以得到各类 VP 总体上的情况,可以判
断每类 VP 数量是否充足,同时可以通过 Individual virtual processors:可以
监控到每一个 VP 的运行情况,我们重点要关注 Eff 列的输出,。 
哪一个线程消耗最多的 CPU 资源 
onstat -g cpu  #IDS11 以上版本 
onstat -g cpu 
Thread CPU Info: 
tid name           vp         Last Run               
CPU Time   #scheds status 
2     lio vp 0        4lio* 12/21 13:37:55       184.1230       65270  IO Idle                   
3     pio vp 0         5pio* 12/21 13:37:55         42.1679             965  IO Idle                       
4     aio vp 0         6aio* 12/21 13:37:55     1101.9186       312416  IO Idle                    
5    msc vp 0         7msc* 12/21 13:32:59           0.2780       2230  IO Idle                    
6     aio vp 1         8aio* 12/21 13:37:55       857.6105       197160  IO Idle                     
7    main_loop()   3cpu   12/21 13:38:35           1.9384       255207   sleeping secs: 1         
8     soctcppoll     1cpu* 12/21 13:38:35  249827.1546     1959281   running                     
9     soctcplst     1cpu* 12/21 13:34:41         1.0137         3225   sleeping forever           
10   flush_sub(0) 3cpu   12/21 13:38:35           0.7319     254376  sleeping secs: 1         
11   flush_sub(1) 3cpu   12/21 13:38:35           0.6904       251005   sleeping secs: 1         
12   kaio               1cpu* 12/19 10:14:51         3.3447         2901   IO Idle                     
13   aio vp 2       10aio* 12/21 13:37:55     535.2146       143777  IO Idle                    
14   aio vp 3         9aio* 12/21 13:37:55       442.6629         78389  IO Idle                     
15   aio vp 4       11aio* 12/21 13:37:55       338.8273         61951  IO Idle                    
健康状况评估 
检查点 
方法 
运行情况 
 
- 2 - 
IBM Informix IDS  数据库健康检查建议书 
16   aio vp 5       12aio* 12/21 13:37:55     204.7763         35286   IO Idle                     
17   aio vp 6       13aio* 12/21 13:37:55     196.9508         17477   IO Idle                     
18   aio vp 7       14aio* 12/21 13:37:55     194.3789         13132   IO Idle                     
19   aio vp 8       15aio* 12/21 13:37:55     192.6367         9237  IO Idle                     
20   aio vp 9       16aio* 12/21 13:37:55     192.3117         26551  IO Idle                    
21   aio vp 10     17aio* 12/21 13:37:55     193.1831           8252   IO Idle                     
22   aio vp 11     18aio* 12/21 13:37:55       190.9490           6313   IO Idle                    
23   aio vp 12     19aio* 12/21 13:37:55     191.9097           8688   IO Idle                     
24   aio vp 13     20aio* 12/21 13:37:55     191.6916         24814  IO Idle                    
25   aio vp 14     21aio* 12/21 13:37:55     192.2151           5315   IO Idle                     
26   aio vp 15     22aio* 12/20 15:01:31     193.3383           4321   IO Idle 
A.onstat -g cpu 输出各线程消耗 CPU 的情况,我们需要关注列:
CPU time,确定对于运行状态及对应的 CPU VP 类型。 
CPU VP  设置情况:等待队列与等待事件 
onstat -g rea   onstat -g wai 
onstat -g rea 
Ready threads: 
 tid   tcb         rstcb         prty status     vp-class  name 
 1086   99e7fd20   985c64f8       1     IO Wait        cpu     scan_2.0 
onstat -g wai 
Waiting threads: 
 tid   tcb         rstcb         prty status     vp-class  name 
 1086   99e7fd20   985c64f8       1    
 IO Wait        1cpu     scan_2.0 
 1087   9b0d5d20   985c6d48       1     
 IO Wait         1cpu    scan_2.1 
 1088   9a7dbd20   985ce9f8       1       
IO Wait        1cpu     scan_2.2 
 IO Wait         1cpu     scan_2.3 
 1089   9a2ded20   985cc8b8       1     
A.onstat -g rea  监控就绪队列中的线程数目。包括准备运行而且在
等待资源的线程。理想的状态下是输出极少的条目或者不显示任何条
目。如果输出的某种 VP  类条目持续增长,那么就要考虑在该类中添
加 VP 。 
B.onstat -g wai  监控线程的等待事件,我们需要重点监控 I/O 和 latch
的等待事件,如果许多线程持续等待 I/O 或者 latch 则揭示 I/O 或者
latch 是系统性能的一个瓶颈。 
CPU VP  设置情况—I/O 队列 
onstat -g ioq 
onstat -g ioq 
AIO I/O queues: 
q name/id       len maxlen totalops   dskread dskwrite   dskcopy 
drda_dbg     0        0       0         0             0          0             0   
sqli_dbg     0         0       0           0            0           0            0   
   kio     0       0       32       65918         2773       63145             0   
   kio     1       0       16     161342       2833     158509             0   
健康状况评估 
检查点 
方法 
运行情况 
健康状况评估 
检查点 
方法 
运行情况 
 
- 3 - 
IBM Informix IDS  数据库健康检查建议书 
   adt    0       0       0             0          0           0           0   
  msc   0       0       57    403347           0          0             0   
   aio     0        0     11      5943         4294       1358             0   
   pio     0        0       1       28767             0      28767           0   
   lio   0         0         1    268025             0     268025           0   
   gfd     3        0      71     424425     174562     249863             0   
   gfd     4        0        1            14         14         0           0   
   gfd     5        0        4    858099     858099           0           0 
健康状况评估  在 onstat -g ioq  指令的输出中,关注 len  列。len  列的值应该总是
为 0  或接近于  0。如果该列的值很高并持续增长,那么我们可能需
要添加另一个 AIO/KAIO  虚拟处理器来减少磁盘 I/O  负载。 
Maxlen 列表示自实例自上次启动以来的最大队列数情况。揭示在峰
值情况下的 I/O 情况。 
相关参数调整建议: 
NUMCPUVPS : <= 系 统  CPU  的个 数   单 或 双  CPU 建 议 设 置 
NUMCPUVPS  是 1  或者  2;对于有 4  个以上 CPU ,建议 设置 
NUMCPUVPS  的值等于处理器总数减 1。   
IDS9.2  以后的版本中将 NUMCPUVPS ,NUMAIOVP  用 VPCLASS 
参数代替。online  的状态下,可以使用 onmode -p  来增加或者减少
虚拟处理器。 
SINGLE_CPU_VP:多 CPU 情况下设置为 0 
MULTIPROCESSOR:多 CPU 情况下设置为 1 
VPCLASS cpu,num=3 
VPCLASS  配置参数允许您指定虚拟处理器类、数据库应该为特定类
启动的虚拟处理器数以及所允许的最大数。 
VPCLASS  参数的 cpu  和 num  选项指定数据库服务器最初启动的 
AIO VP  数。如果您的操作系统不支持内核异步 I/O (KAIO),则数
据库服务器使用 AIO VP  管理所有数据库 I/O  请求。 
 
AIO VP  的推荐数量取决于您的配置支持的磁盘数。如果在您的平台
上没有实现 KAIO ,则建议您为包含数据库表的每个磁盘分配一个 
AIO VP 。可以为数据库服务器频繁访问的每个块添加附加的 AIO 
VP。 
 
在裸设备情况是否使用了 KAIO。 
2、Memory 
查看系统总内存,观察 IDS 数据库实例分配的内存情况,确保有足够的内存
空间可供数据库使用,调整内存分配参数以获取更高性能。 
2.1  内存利用率 
检查点 
系统内存空间、空闲内存空间 
 
- 4 -