IDS相关
Informix监控
监控的主要内容包括以下部分:
l cpu(确定数据库的CPU资源配置是否足够)
参数:NUMCPUVPS
检查CPU VP资源是否足够的方法
$ onstat –i
onstat >; r 1
onstat (1) >; rea
查看是否有等待处理的线程
onstat(1) >; act
查看数据库CPU VP正在处理的线程
$ onstat –g glo 可以看到oninit的进程情况
l 内存(确定数据库内存的分配是否足够)
参数:BUFFERS、SHMVIRTSIZE、LOCKS、LRUS
查看数据库是否使用内存正常:
$ onstat -p
是否有ovbuff
$ onstat -m
查看是否有动态增加的虚拟内存
查看数据库的内存分配情况
$ onstat -g seg
$ ipcs -m
查看连接的session内存分配情况
$ onstat -g ses
对于内存分配大的用户session,需要分析其原因
查看内存LRU管理情况
$ onstat -R
l 磁盘的读写、数据表的分布情况(检查数据的分布是否合理,l 消除I/O瓶颈)
查看数据库chunk分布情况和使用空间是否足够
$ onstat -d
查看数据库chunk的读写情况
$ onstat -D
$ onstat -g iof
查看AIO的队列情况
$ onstat -g ioq
maxlen太长的情况需要调整NUMAIOS数据
查看tbspace的读写情况
$ onstat -g ppf
检查数据表在chunk分布的拓扑情况
$ oncheck -pe
检查数据库表的详细情况,包括记录数、记录长度、碎片数据、索引层次等信息
$ oncheck -pt stores:customer
如以上得到数据显示表customer 的partition partnum为1048891
$ oncheck -pp 1048891 0 可以查看customer数据的分布情况
以下命令检查表数据或索引是否正常
$ oncheck -cDI database:table
l 网络的读写情况(检查数据库网络的配置是否正常有效)
参数:NETTYPE和sqlhosts配置的方法
$ onstat -g ath
查看相关的poll监听线程是否启动
$ onstat -g ntd
查看接收和拒绝的次数
$ onstat -g ntu
查看用户启动的sqlexec线程读写的情况
$ netstat -a
看连接监听的端口是否有效
l 检查用户SQL语句是否正常
$ onstat -u 查看用户连接ID号
$ onstat -g ses id 查看用户的内存分配情况、用户启动的线程数、用户是否用到临时表空间
$ onstat -g sql id 查看用户的SQL语句和执行结果是否有错误
$ onstat -k 查看用户的使用锁情况
$ onstat -x 查看用户的事物处理情况
$ onmoe -z id 杀掉不正常的用户session
相关的参数衡量指标
4、 读写的命中率
$ onstat –p
dskreads pagereads bufreads %cached dskwrits pagwrits bufwrits %cached
450 1083 1893 97.62 586 1217 8076 92.74
查看参数读的命中率98%以上,调整 BUFFERS
写的命中率85%以上,调整LRUS , LRU_MAX_DIRTY , LRUS_MIN_DIRTY , CKPTINTVL , PHYSLOG
5、 内存LRU的管理
$ onstat -R
$ onstat -F
Fg Writes LRU Writes Chunk Writes
11 318 201
调整:
LRU_MAX_DIRTY
LRU_MIN_DIRTY
LRUS
控制在checkpoint时的写的数据页数
(BUFFERS / LRUS) * LRU_MAX_DIRTY 时checkpoint时写的最大数据量
6、 checkpoint的时间
$ onstat -m
$ onstat -g iof
$ onstat -D
调整写盘数据量(同2,调整LRU方法)
调整数据的分布情况,分布在不同的disk driver上
7、 物理日志和逻辑日志缓冲区的利用率
$ onstat -l
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-1 0 16 265 21 12.62
phybegin physize phypos phyused #used
100107 1000 266 0 0.00
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-2 0 16 6766 394 28 17.2 14.1
...
调整目标是将日志的buffer利用率调整为 (pages/io)/bufzise = %75的比例
调整参数 phybuff / logbuff ,比%75小,减小phybuff、logbuff;比%75大,调大
8、 预读的性能
$ onstat -p
调整目标
将 (ixda-RA + idx-RA + da-RA) = RA-pgsused
调整参数:RA_PAGES 和 RA_THRESHOLD
其他提高数据库性能的方法
9、 使用常用表长驻内存
set table table_name memory_resident | no_resident ;
$ onstat -P 查看
10、 SQL语句进行词法预分析方法
set explain on ;
执行相应的SQL语句
检查当前目录下的sqexplain.out文件
分析词法优化器使用的路径是否合理
分析执行的效率方法
$ time dbaccess airgen_cm_db sel_cnt.sql
Database selected.
(sum)
1156215
1 row(s) retrieved.
Database closed.
real 0m0.12s
user 0m0.05s
sys 0m0.01s
11、 表不12、 带日志方法
将表的索引、以及constrain等条件全部删除后,执行以下SQL语句
alter table table_name type (raw|standard)
13、 使用Informix最快的数据转移工具HPL倒数据
$ onpladm 命令行方式定义数据库表的输出或输入关系
文档参考$INFORMIXDIR/release/en_us/0333/onpladm/index.html
$ onpladm create project stores7 -d /tmp/stores7 -D stores7 建立所有的load和unload数据到onpload数据库中
$ onpladm run project stores7 –fu 将数据库stores7数据unload出来
$ onpladm run project stores7 –fl 将数据库stores7数据load入
$ onpload 执行命令
14、 update statistics的原则
以下情况后要运行update statistics :
à data is loaded into a table,
à updates significantly change the distribution of data values contained in a column,
à deletes or inserts change the number of rows contained in a table
à indexes on the table are added or altered.
执行原则:
1. Run UPDATE STATISTICS MEDIUM... DISTRIBUTIONS ONLY.
2. Run UPDATE STATISTICS HIGH for the first column in each index.
3. Run UPDATE STATISTICS HIGH for the first column that differentiates two similar indexes.
4. If necessary, run UPDATE STATISTICS HIGH for columns which do not head indexes, but are used in equality or inequality expressions.
5. Run UPDATE STATISTICS FOR PROCEDURE for each procedure.
与ONCONFIG 参数DBSPACETEMP 和 PDQRIORITY一起使用
15、 检查备16、 份磁带是否成功的工具
$ archecker -R -tvs
-b Direct XBSA access
-D Delete old files and EXIT
-d Delete old files
-F Retrieve list of pages off the archive
-P Read Performance - info only
-R Restart the checking
-s Print status message to the screen
-t Read the tape directly
-T Restart at a specific tape
-v Verbose
-V Version
l cpu(确定数据库的CPU资源配置是否足够)
参数:NUMCPUVPS
检查CPU VP资源是否足够的方法
$ onstat –i
onstat >; r 1
onstat (1) >; rea
查看是否有等待处理的线程
onstat(1) >; act
查看数据库CPU VP正在处理的线程
$ onstat –g glo 可以看到oninit的进程情况
l 内存(确定数据库内存的分配是否足够)
参数:BUFFERS、SHMVIRTSIZE、LOCKS、LRUS
查看数据库是否使用内存正常:
$ onstat -p
是否有ovbuff
$ onstat -m
查看是否有动态增加的虚拟内存
查看数据库的内存分配情况
$ onstat -g seg
$ ipcs -m
查看连接的session内存分配情况
$ onstat -g ses
对于内存分配大的用户session,需要分析其原因
查看内存LRU管理情况
$ onstat -R
l 磁盘的读写、数据表的分布情况(检查数据的分布是否合理,l 消除I/O瓶颈)
查看数据库chunk分布情况和使用空间是否足够
$ onstat -d
查看数据库chunk的读写情况
$ onstat -D
$ onstat -g iof
查看AIO的队列情况
$ onstat -g ioq
maxlen太长的情况需要调整NUMAIOS数据
查看tbspace的读写情况
$ onstat -g ppf
检查数据表在chunk分布的拓扑情况
$ oncheck -pe
检查数据库表的详细情况,包括记录数、记录长度、碎片数据、索引层次等信息
$ oncheck -pt stores:customer
如以上得到数据显示表customer 的partition partnum为1048891
$ oncheck -pp 1048891 0 可以查看customer数据的分布情况
以下命令检查表数据或索引是否正常
$ oncheck -cDI database:table
l 网络的读写情况(检查数据库网络的配置是否正常有效)
参数:NETTYPE和sqlhosts配置的方法
$ onstat -g ath
查看相关的poll监听线程是否启动
$ onstat -g ntd
查看接收和拒绝的次数
$ onstat -g ntu
查看用户启动的sqlexec线程读写的情况
$ netstat -a
看连接监听的端口是否有效
l 检查用户SQL语句是否正常
$ onstat -u 查看用户连接ID号
$ onstat -g ses id 查看用户的内存分配情况、用户启动的线程数、用户是否用到临时表空间
$ onstat -g sql id 查看用户的SQL语句和执行结果是否有错误
$ onstat -k 查看用户的使用锁情况
$ onstat -x 查看用户的事物处理情况
$ onmoe -z id 杀掉不正常的用户session
相关的参数衡量指标
4、 读写的命中率
$ onstat –p
dskreads pagereads bufreads %cached dskwrits pagwrits bufwrits %cached
450 1083 1893 97.62 586 1217 8076 92.74
查看参数读的命中率98%以上,调整 BUFFERS
写的命中率85%以上,调整LRUS , LRU_MAX_DIRTY , LRUS_MIN_DIRTY , CKPTINTVL , PHYSLOG
5、 内存LRU的管理
$ onstat -R
$ onstat -F
Fg Writes LRU Writes Chunk Writes
11 318 201
调整:
LRU_MAX_DIRTY
LRU_MIN_DIRTY
LRUS
控制在checkpoint时的写的数据页数
(BUFFERS / LRUS) * LRU_MAX_DIRTY 时checkpoint时写的最大数据量
6、 checkpoint的时间
$ onstat -m
$ onstat -g iof
$ onstat -D
调整写盘数据量(同2,调整LRU方法)
调整数据的分布情况,分布在不同的disk driver上
7、 物理日志和逻辑日志缓冲区的利用率
$ onstat -l
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-1 0 16 265 21 12.62
phybegin physize phypos phyused #used
100107 1000 266 0 0.00
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-2 0 16 6766 394 28 17.2 14.1
...
调整目标是将日志的buffer利用率调整为 (pages/io)/bufzise = %75的比例
调整参数 phybuff / logbuff ,比%75小,减小phybuff、logbuff;比%75大,调大
8、 预读的性能
$ onstat -p
调整目标
将 (ixda-RA + idx-RA + da-RA) = RA-pgsused
调整参数:RA_PAGES 和 RA_THRESHOLD
其他提高数据库性能的方法
9、 使用常用表长驻内存
set table table_name memory_resident | no_resident ;
$ onstat -P 查看
10、 SQL语句进行词法预分析方法
set explain on ;
执行相应的SQL语句
检查当前目录下的sqexplain.out文件
分析词法优化器使用的路径是否合理
分析执行的效率方法
$ time dbaccess airgen_cm_db sel_cnt.sql
Database selected.
(sum)
1156215
1 row(s) retrieved.
Database closed.
real 0m0.12s
user 0m0.05s
sys 0m0.01s
11、 表不12、 带日志方法
将表的索引、以及constrain等条件全部删除后,执行以下SQL语句
alter table table_name type (raw|standard)
13、 使用Informix最快的数据转移工具HPL倒数据
$ onpladm 命令行方式定义数据库表的输出或输入关系
文档参考$INFORMIXDIR/release/en_us/0333/onpladm/index.html
$ onpladm create project stores7 -d /tmp/stores7 -D stores7 建立所有的load和unload数据到onpload数据库中
$ onpladm run project stores7 –fu 将数据库stores7数据unload出来
$ onpladm run project stores7 –fl 将数据库stores7数据load入
$ onpload 执行命令
14、 update statistics的原则
以下情况后要运行update statistics :
à data is loaded into a table,
à updates significantly change the distribution of data values contained in a column,
à deletes or inserts change the number of rows contained in a table
à indexes on the table are added or altered.
执行原则:
1. Run UPDATE STATISTICS MEDIUM... DISTRIBUTIONS ONLY.
2. Run UPDATE STATISTICS HIGH for the first column in each index.
3. Run UPDATE STATISTICS HIGH for the first column that differentiates two similar indexes.
4. If necessary, run UPDATE STATISTICS HIGH for columns which do not head indexes, but are used in equality or inequality expressions.
5. Run UPDATE STATISTICS FOR PROCEDURE for each procedure.
与ONCONFIG 参数DBSPACETEMP 和 PDQRIORITY一起使用
15、 检查备16、 份磁带是否成功的工具
$ archecker -R -tvs
-b Direct XBSA access
-D Delete old files and EXIT
-d Delete old files
-F Retrieve list of pages off the archive
-P Read Performance - info only
-R Restart the checking
-s Print status message to the screen
-t Read the tape directly
-T Restart at a specific tape
-v Verbose
-V Version