62
® IBM Software Group © 2005 IBM Corporation Informix 数数数数数数数 Software Group Services, IBM ShangHai 陆陆 2006/02/13

Informix 数据库培训内容

  • Upload
    cheng

  • View
    142

  • Download
    0

Embed Size (px)

DESCRIPTION

Informix 数据库培训内容. Software Group Services, IBM ShangHai 陆川 2006/02/13. 培训内容:. 1. 参数优化 2. 性能监控 3. 应用程序性能调整 4. 针对 AIX/HP 环境的性能监控和优化 5.TroubleShooting. 1. 参数优化. 介绍 $ONCONFIG 中的关键参数配置. 物理日志. PHYSDBS phydbs # Location (dbspace) of physical log - PowerPoint PPT Presentation

Citation preview

Page 1: Informix 数据库培训内容

®

IBM Software Group

© 2005 IBM Corporation

Informix数据库培训内容

Software Group Services, IBM ShangHai 陆川2006/02/13

Page 2: Informix 数据库培训内容

IBM Software Group

培训内容:1.参数优化2.性能监控3.应用程序性能调整4.针对 AIX/HP环境的性能监控和优化5.TroubleShooting

Page 3: Informix 数据库培训内容

IBM Software Group

1. 参数优化 介绍 $ONCONFIG 中的关键参数配置

Page 4: Informix 数据库培训内容

IBM Software Group

物理日志

PHYSDBS phydbs # Location (dbspace) of physical log

PHYSFILE 1999000 # Physical log file size (Kbytes)

物理日志保存写前的影像。配置时应注意: 1. 不要存放在 rootdbs 上; 2. 不要配置的太小,因为写的容量到达 75% 时会触发 checkpoint ,而

checkpoint 会阻塞系统交易; 3. 从 9.4 版本开始,配置的大小可以超过 2GB ,以前的版本中配置不

能超过 2GB

Page 5: Informix 数据库培训内容

IBM Software Group

Console

CONSOLE /dev/console # System console message path

用于保存 Console 上的出错信息 由于机房中不便于工作人员经常出入,因此无法检测到 console 上可能

出现的错误,建议将其输出写到文件,如: CONSOLE /usr/informix/console.log

Page 6: Informix 数据库培训内容

IBM Software Group

Server Num Server Num 10 # Unique id corresponding to a server instance

当在一台机器上配置多个 instance 时,需要配置不同的值,数据库启动时根据其确定共享内存的起始地址,范围是 0~255

Page 7: Informix 数据库培训内容

IBM Software Group

NETTYPE NETTYPE onsoctcp,1,10,NET # Override sqlhosts nettype param

eters

配置 poll thread 的数量和类型,其中数量是第 2 列的值,类型是第 4 列的值,类型有两种类型, CPU 和 NET 。

配置建议:1. 当出现连接的问题或连接速度慢时,应该增加第 2 列的值;2. 如果使用 cpu 类型的 poll thread , poll thread 的数量不能超过 cpu vps

的数量。

Page 8: Informix 数据库培训内容

IBM Software Group

Resident

RESIDENT 0 # Forced residency flag (Yes = 1, No = 0)

数据库所使用的内存页是否驻留,即不被交换出去。

Page 9: Informix 数据库培训内容

IBM Software Group

MULTIPROCESSOR MULTIPROCESSOR 0

# 0 for single-processor, 1 for multi-processor

是否为多 CPU 的机器。配置建议 : 多 cpu 的机器上配置为 1 ;

Page 10: Informix 数据库培训内容

IBM Software Group

Numcpuvps— 关键参数 NUMCPUVPS 1 # Number of user (cpu) vps

Informix 数据库所使用的 cpu 的个数,是关键的参数配置建议:1.1 个 cpu 的机器配置为 1;

2.2 个 cpu 的机器,如果还有别的应用运行在相同的机器上,配置为 1 ,否则配置为 2 ;

3. 对于 cpu 数据较多的机器,可以在系统运行的高峰期通过操作系统的监控工具来分析 cpu 的繁忙程度,来决定分配给数据库的 cpu 数目;

Aix 的监控工具为 nmon 或 sar

Hp-Ux 的监控工具为 top

4. 对于应用程序和数据库运行在同一台机器上的情况,由于 cpu 可能来回切换次数较多,建议通过 batchmark 测试来决定给数据库的 cpu 的数目。

Page 11: Informix 数据库培训内容

IBM Software Group

SINGLE_CPU_VP

SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps to one

是否为单 CPU 的机器,单 CPU 的机器上配置为 1 ,多 CPU 的机器上配置为 0

Page 12: Informix 数据库培训内容

IBM Software Group

cpu 邦定 –关键参数 AFF_SPROC 0 # 邦定 cpu 的 cpu 起始编号 AFF_NPROCS 0 # 邦定 cpu 的数目

Cpu 的起始编号从 0 开始。建议:1. 邦定的 cpu 的数目和 numcpuvps 的值相同,和 poll thread 的数目相同

( 当使用 cpu 类型的 poll thread 时 )

2. 使用 cpu 邦定,减少 cpu 的切换次数;当 AFF_NPROCS 为 0 时,将不使用 CPU 邦定。

在 9.3 for Aix 之前的版本,需要通过操作系统命令 bindprocessor ,使用root 账户来绑定 cpu 。

Page 13: Informix 数据库培训内容

IBM Software Group

Locks – 关键参数

LOCKS 8000000 # 最大的锁的个数配置建议:1. 如果表使用行级锁,锁定一条记录,申请一个锁;如果使用页级锁,相

同页面上的记录使用同一个锁;2. 一个锁占用的内存是 44 字节;3. 最大数目是 8000000;

4. 如果小型机的内存足够大,建议将其配置为 8000000 ,即最大值;5. 应用运行过程中,如果锁不够,事务将回滚

Page 14: Informix 数据库培训内容

IBM Software Group

Buffers— 关键参数 BUFFERS 2000 # 用于缓冲数据页和索引页注意事项: 大小以 2K 为单位;配置建议: 通过运行 onstat –p 察看读写命中率和 ovbuff 等值来调整;

Page 15: Informix 数据库培训内容

IBM Software Group

Numaiovps— 关键参数 NUMAIOVPS # aio vp 的数目aio vp 用于处理 io 请求。配置建议: 建议使用 kio ,不要使用 aio ;使用 kio 之后,将此参数的值配置为 2

或 4 。可以通过运行 onstat –g rea 来监控 vp 等待的情况;

Page 16: Informix 数据库培训内容

IBM Software Group

日志缓冲 PHYSBUFF 128 # 物理日志缓冲 (Kbytes)

LOGBUFF 128 # 逻辑日志缓冲 (Kbytes)

配置建议:1. 从 buffers 中申请, physbuff 的个数为 2 个, logbuff 的个数为 3 个,

个数是不可调的;2. 至少配置为 128 ;3. 对于 unbuffered log 类型的数据库,不要配置的过大,配置过大会浪费

内存;

Page 17: Informix 数据库培训内容

IBM Software Group

Cleaners – 关键参数 CLEANERS 12 # 清页线索的数目配置建议:1. 清页线索用于将 buffers 中的脏页刷新到 disk 上,因此配置的太小,会

影响 Checkpoint 和 LRU writes 的性能。2. 一般配置为和 lrus 的数目相同, 32 位产品上的最大值为 128 , 64 位

产品上的最大值为 512 。

Page 18: Informix 数据库培训内容

IBM Software Group

Shmvirtsize— 关键的参数 SHMVIRTSIZE 120000 # 初始 Virtual Segment 的大小配置建议:1. 以 K 为单位;2. 用于用户连接,数据字典缓冲, Statement Cashe , HPL 等3. 配置太小,会申请很多的 shmadd 段,导致性能下降;4. 最好使用 1 个 Virtual Segment ,可以通过运行 onstat –g seg 来监控 vi

rtual

segment 的数目;

Page 19: Informix 数据库培训内容

IBM Software Group

SHMADD

SHMADD 8192 #下一个 Virtual segments 的大小 (Kbytes)

当 shmvirtsize 不够用时,所动态申请的内存段大小;

Page 20: Informix 数据库培训内容

IBM Software Group

shmtotal

SHMTOTAL 0

# informix 使用的内存上限 (Kbytes).

配置建议: 使用缺省值 0 ,即不要限制;

Page 21: Informix 数据库培训内容

IBM Software Group

CKPTINTVL— 关键参数 CKPTINTVL 300 # checkpoint间隔配置建议:1. 以秒为单位2.OLTP 系统不宜配置的太大; DSS 类的应用可以配置的大一些;3. 当要大量的装载数据时,可以配置的大些,以减少 checkpoint 的次数,缩短装数据的时间。

4. 根据 onstat –m 的输出调整

Page 22: Informix 数据库培训内容

IBM Software Group

LRUS— 关键参数 LRUS 128 # LRU队列的数目配置建议:1. 配置的尽量大些,以避免 buffer waits

2. 配置为和 cleaners 相同的值;

Page 23: Informix 数据库培训内容

IBM Software Group

LRU_MAX_DIRTY 和 LRU_MIN_DIRTY— 关键参数 LRU_MAX_DIRTY 60 # LRU percent dirty begin cleaning limit

LRU_MIN_DIRTY 50 # LRU percent dirty end cleaning limit

配置建议:1. 当一个 LRU队列的脏页的百分比到达 LRU_MAX_DIRTY 时,会触发 L

RU Writes ,当刷新到 LRU_MIN_DIRTY 时停止刷新;2. 运行 dbimport 或 load 时,建议分别调整为 90 和 80 ,以降低 disk io

的次数,缩短装数据的时间;4. 从 9.3 版本之后,这两个参数可以配置为小数,主要是为了使用大内存

机器的需要;

Page 24: Informix 数据库培训内容

IBM Software Group

RA_PAGES 和 RA_THRESHOLD

RA_PAGES 16 # 每次预读的页面的次数 RA_THRESHOLD 15

# 下次预读开始之前,上次预读所处理的剩余的页面数配置建议:1. 在页面大小为 4K 页面的系统中,一般分别配置为 16 和 15;

2. 在页面大小为 2K 页面的系统中,一般分别配置为 32 和 30;

Page 25: Informix 数据库培训内容

IBM Software Group

LTXHWM

LTXHWM 40 #长事务的高水位线

用于定义当 active transaction 的使用百分比达到多少时,即定义为系统发生了长事务;

配置建议:不大于 50;

Page 26: Informix 数据库培训内容

IBM Software Group

Dbspacetemp – 关键参数 DBSPACETEMP tmpdbs1,tpmdbs2 # 缺省的系统连时表空间

配置建议:1. 用于存放临时数据;

Page 27: Informix 数据库培训内容

IBM Software Group

optcompind— 关键参数 OPTCOMPIND 0 # To hint the optimizer

用途:影响优化器选用表连接的方式配置建议:1.OLTP 的系统中配置为 0 ,使用 nested loop join ;2.DSS 的系统中配置为 2. 使用 hash join;

Page 28: Informix 数据库培训内容

IBM Software Group

2.性能监控

Page 29: Informix 数据库培训内容

IBM Software Group

onstat –D 监控 io 读写是否倾斜INFORMIX-OnLine Version 7.12.UC2 -- On-Line -- Up 122 days 20:48:40 -- 726

16 s Dbspaces address number flags fchunk nchunks flags owner name c3fa80e8 1 1 1 1 N informix rootdbs c3fa84b0 2 2001 2 1 N T informix tempdbs c3fa8518 3 1 3 1 N informix db1 c3fa8580 4 1 4 1 N informix db2 4 active, 2047 maximum Chunks address chk/dbs offset page Rd page Wr pathname c3fa8150 1 1 0 1259 289 /home/informix/ROOTDBS c3fa8228 2 2 0 11 11 /home/informix/TEMPDBS c3fa8300 3 3 0 6 0 /home/informix/db1 c3fa83d8 4 4 0 6 0 /home/informix/db2 4 active, 2047 maximum

Page 30: Informix 数据库培训内容

IBM Software Group

onstat –F 监控是否有 LRU Write及次数 INFORMIX-OnLine Version 7.12.UC2 -- On-Line -- Up 122 days 20:5

1:45 -- 72616 s

Fg Writes LRU Writes Chunk Writes

0 103 311

address flusher state data

c3faa444 0 I 0 = 0X0

states: Exit Idle Chunk Lru

State ----- I 空闲 C 正在执行 checkpoint

L 正在执行 LRU Writes

Page 31: Informix 数据库培训内容

IBM Software Group

onstat –l 监控物理日志和逻辑日志写

INFORMIX-OnLine Version 7.12.UC2 -- On-Line -- Up 122 days 20:56:26 -- 72616 s

Physical Logging

Buffer bufused bufsize numpages numwrits pages/io

P-2 0 16 274 22 12.45

phybegin physize phypos phyused %used

10003f 500 433 0 0.74

Logical Logging

Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io

L-2 0 16 2437 113 31 21.6 3.6

address number flags uniqid begin size used %used

c3ecc55c 1 U-B---- 7 100233 250 250 100.00

c3ecc578 2 U---C-L 8 10032d 250 106 42.40

c3ecc594 3 F------ 0 100427 250 0 0.00

c3ecc5b0 4 F------ 0 100521 250 0 0.00

c3ecc5cc 5 U-B---- 5 10061b 250 250 100.00

c3ecc5e8 6 U-B---- 6 100715 250 250 100.00

Page 32: Informix 数据库培训内容

IBM Software Group

onstat –m 察看数据库日值的最后 20 行, checkpoint 时间和间隔

Mon Nov 4 11:23:51 1996

11:23:51 Logical Log 7 Complete.

11:27:10 Checkpoint Completed: duration was 0 seconds.

Tue Dec 31 11:16:01 1996

11:16:01 Checkpoint Completed: duration was 0 seconds.

11:21:00 Checkpoint Completed: duration was 0 seconds.

11:26:01 Checkpoint Completed: duration was 0 seconds.

11:36:01 Checkpoint Completed: duration was 0 seconds.

Page 33: Informix 数据库培训内容

IBM Software Group

onstat –p 可以监控许多指标 INFORMIX-OnLine Version 7.12.UC2 -- On-Line -- Up 122 days 20:58:17 -- 7

2616 s

Profile

dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached

1535 1548 13734 88.82 484 818 3280 85.24

isamtot open start read write rewrite delete commit rollbk

10135 1520 1284 3057 875 6 7 20 0

ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes

0 0 0 39.04 28.34 10 70772

bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans

241 1 11196 0 0 0 174 101

ixda-RA idx-RA da-RA RA-pgsused lchwaits

31 0 329 360 40

Page 34: Informix 数据库培训内容

IBM Software Group

onstat –R 监控 lrus队列的写的情况 INFORMIX-OnLine Version 7.12.UC2 -- On-Line -- Up 122 days 20:59:53 -- 7261

6 s 8 buffer LRU queue pairs # f/m length % of pair total 0 F 25 100.0% 25

1 m 0 0.0% 2 f 25 100.0% 25 3 m 0 0.0% 4 f 25 100.0% 25 5 m 0 0.0% 6 f 25 100.0% 25 7 m 0 0.0% 8 f 25 100.0% 25 9 m 0 0.0% 10 f 25 100.0% 25 11 m 0 0.0% 12 f 25 100.0% 25

可以协助你配置 lru_max_dirty 和 lru_min_dirty 的值

Page 35: Informix 数据库培训内容

IBM Software Group

onstat –g ppf 察看全表扫描的次数较多的表的 partnum

Onstat -g ppf INFORMIX-OnLine Version 7.13.UC2 -- On-Line -- Up 3 days 15:51:58 -- 213

816 Kbytes Partition profiles

partnum lkrqs lkwts dlks touts isrd iswrt isrwt isdel bfrd bfwrt seqsc 12 0 0 0 0 733836 0 0 0 538183 0 0 15 0 0 0 0 253950 0 0 0 605030 0 0 20 0 0 0 0 1039 0 0 0 122354 0 0 22 0 0 0 0 852962 0 0 0 0 0 0 23 0 0 0 0 172 0 0 0 0 0 0 24 0 0 0 0 6 0 0 0 0 0 0 25 0 0 0 0 36 0 0 0 0 0 0 26 0 0 0 0 115627 0 0 0 24 24 0 28 0 0 0 0 18 0 0 0 0 0 0 40 0 0 0 0 136669 0 0 0 40 24 0 43 0 0 0 0 1035 0 0 0 0 0 0

Page 36: Informix 数据库培训内容

IBM Software Group

onstat –g seg 监控 virtual segment 的个数 IBM Informix Dynamic Server Version 9.40.FC4 -- On-Line -- Up 03:26:39 --

49728 Kbytes

Segment Summary:

id key addr size ovhd class blkused blkfree

1382041601 1382041601 c000000 9568256 215632 R 2299 37

1382041602 1382041602 c920000 8388608 896 V 1433 615

1382041603 1382041603 d120000 8388608 896 V 3 2045

1382041604 1382041604 d920000 8192000 896 V 1 1999

1382041605 1382041605 e0f0000 8192000 896 V 1 1999

1382041606 1382041606 e8c0000 8192000 896 V 1 1999

Total: - - 50921472 - - 3738 8694

Page 37: Informix 数据库培训内容

IBM Software Group

onstat –g rea 监控哪种类型 vp 个数不够

IBM Informix Dynamic Server Version 9.40.FC4 -- On-Line -- Up 03:29:23 -- 49728 Kbytes

Ready threads:

tid tcb rstcb prty status vp-class name

1cpu sqlexec

Page 38: Informix 数据库培训内容

IBM Software Group

onstat –g sql #session_id# /onstat –g ses #session_id#

IBM Informix Dynamic Server Version 9.40.FC3 -- On-Line -- Up 20:25:10 -- 65600 Kbytes

Sess SQL Current Iso Lock SQL ISAM F.E.

Id Stmt type Database Lvl Mode ERR ERR Vers Explain

211 SELECT stores7 CR Not Wait 0 0 9.03 Off

Current statement name : slctcur

Current SQL statement :

select * from orders

Last parsed SQL statement :

select * from orders

通过 onstat –g sql –r 2 可以捕捉到执行时间较长的 sql语句

Page 39: Informix 数据库培训内容

IBM Software Group

增加 Dictionary Cache -- 用户表超过 250 个以上

onstat –g dic

DD_HASHSIZE 97

DD_HASHMAX 211

Page 40: Informix 数据库培训内容

IBM Software Group

免费网站

www.oninit.com/onstat

Page 41: Informix 数据库培训内容

IBM Software Group

应用程序性能优化 从应用架构上进行精心的设计,好的架构的设计是性能的保证; SQL语句的执行效率; 良好的索引策略; 至少每隔 1周执行 update statistics ;如果有条件每天执行 update statistics high; 保证数据库优化器选择最高效的执行路径;

Page 42: Informix 数据库培训内容

IBM Software Group

SQL语句执行性能 从应用程序上优化,会从根本上提高系统的性能, sql语句是应用程序

的一部分; 避免在数据量较大的表上进行全表扫描,会导致 CPU 过长时间的做 Di

sk IO ;

Page 43: Informix 数据库培训内容

IBM Software Group

如何确认 SQL语句的执行性能

执行时间是唯一的度量标准,执行开销和执行时间不成正比 :

time dbaccess #user_db# #your.sql#

Page 44: Informix 数据库培训内容

IBM Software Group

如何确认 SQL语句的执行路径

SQL语句的执行路径有两种方式: Index Path

Sequential Scan

在执行 sql语句之前,先执行下列 sql语句之一: set explain on;

set explain on avoid_execute; #并不真正执行 sql语句, 9.30 版本才有的新 特性。

Informix online 将此 SQL语句的执行计划保存在当前目录的 sqexplain.out 文件中。

Page 45: Informix 数据库培训内容

IBM Software Group

执行计划案例QUERY

SELECT tab1.c2

FROM tab1,tab2

WHERE tab1.c2 = tab2.c2 AND tab1.c2 MATCHES "systable*"

Estimated Cost: 321

Estimated # of Rows Returned: 148

1) miller3.tab1: SEQUENTIAL SCAN

Filters: miller3.tab1.c2 MATCHES 'systable*'

2) miller3.tab2: INDEX PATH

(1) Index Keys: c2 (Key-Only) (Serial, fragments: ALL)

Lower Index Filter: miller3.tab2.c2 MATCHES 'systable*'

DYNAMIC HASH JOIN

Dynamic Hash Filters: miller3.tab1.c2 = miller3.tab2.c2

Page 46: Informix 数据库培训内容

IBM Software Group

良好的索引策略 按照 SQL语句中的 where 条件中的字段来定义索引; 应用开发人员不必关心 where 字句中字段的顺序; 选择性最高的字段放在复合索引的最前面,依次类推。哪些字段的选择

性较高: 出现在等于表达式中的字段; 唯一值很多的字段; 不同值个数低于 10 的字段不要出现在索引字段中,会增加更新表的开销;

从执行计划中可以看到 SQL语句所使用的索引; 可指定索引;

Page 47: Informix 数据库培训内容

IBM Software Group

update statistics 数据库优化器依据下面的 4张系统表中的数据来选择每个 sql语句最优

的执行路径; systable;

syscolumns;

sysindices;

sysdistrib

update statistics 有 3 种运行模式: low

medium

high

其中 medium 和 high 的方式会修改 sysdistrib 表,因此 update statistics medium |high 将比缺省的 update statistics, 即 low模式,更能保证系统有较好的执行性能;

Page 48: Informix 数据库培训内容

IBM Software Group

指定索引 SELECT --+ index(emp index_name)

name, salary, deptname

FROM emp e, dept d

WHERE loc = “Denver”

AND e.dno = d.dno

Page 49: Informix 数据库培训内容

IBM Software Group

4.AIX/HP环境的性能监控和优化

Page 50: Informix 数据库培训内容

IBM Software Group

设置 kio 请求的数目

export IFMX_AIXKAIO_NUM_REQ = 2048

Page 51: Informix 数据库培训内容

IBM Software Group

增加 informix 使用的内存量 在 aix 操作系统上,系统缺省的给文件缓冲预留了很多的内存,主要目的是为了提高文件读写的速度;但当数据库中的 chunk全部使用 raw device 时,文件缓冲部分的内存就显得有点浪费,原因是访问 raw device 上的数据不需要通过文件缓冲;在 aix 上有两个参数定义了文件缓冲的上限和下限百分比,参数名称为 maxperm 和 minperm ,其缺省值为 80 和 20 ,

当数据库使用 raw device 时,将上面的两个参数设置为 10 和 5 即可。设置的方法如下:

vmo –p –o maxclient%=10

vmo –p –o minperm%=5

vmo –p –o maxperm%=10

其中 maxclient 和 maxperm 有依赖关系,因此需要一起进行调整。在调整前后,可以通过 nmon 工具进行监控,你会发现剩余的内存明显的多了出来,因此你可以配置更多的内存给下面的 informix 参数:

LOCKS BUFFERS SHMVIRTSIZE

从而进一步提高 informix 数据库的运行性能。

Page 52: Informix 数据库培训内容

IBM Software Group

监控工具监控内存的使用 nmon 可以免费下载的工具 ,监控剩余内存等多项指标监控每个 cpu的利用率 sar –P ALL 1 100

ulimit –a 中的 nofiles值和数据库用户连接数有关系

Page 53: Informix 数据库培训内容

IBM Software Group

IDS9.30 之前的 cpu 绑定

onstat –g sch 查看进程号 使用 root 用户 bindprocessor #pid# #cpu_number#

Page 54: Informix 数据库培训内容

IBM Software Group

HP 上的监控和配置

Page 55: Informix 数据库培训内容

IBM Software Group

配置 kaio

– INFORMIX环境变量修改: export IFMX_HPKAIO_NUM_REQ=2300

export KAIOON=1

操作系统设备 在小型机 kernel drive 中加入 asyncdsk设备,重构操作系统后,系统重新启动 进入 SAM ,将 asyncdsk 置为 in ,重构操作系统后,系统重新启动 确认在小型机 /dev 目录下生成 /dev/async 设备 如果没有 asyncdsk设备,可以通过以下方法生成

su root #/usr/sbin/mknod /dev/async c 101 0

3) # chmod 0666 /dev/async

设定 KAIO设备相关权限 1) Create the /etc/privgroup file

# touch /etc/privgroup

Page 56: Informix 数据库培训内容

IBM Software Group

配置 kaio

2) Add the MLOCK privilege to the informix user group# vi /etc/privgroupinformix MLOCK3) Use the setprivgrp command to set the new privilege# setprivgrp -f /etc/privgroup4) Run the getprivgrp command to verify that the new privilege is in place# getprivgrpglobal privileges: CHOWNinformix: MLOCK

重起数据库 查看数据库 kio 线索出现 查看 online.log 或 onstat –g ath 确认 kaio生效 eg:

11:18:23 HPUX Version B.11.11 -> Using flag/select style KAIO

11:18:23 HP KAIO concurrent requests changed from 1000 to 2300

Page 57: Informix 数据库培训内容

IBM Software Group

HP 上的监控工具

top 监控每个 cpu的使用情况 glance 可以监控多个指标,如 disk busy,memory ,cpu等 iostat 监控每个 disk繁忙的程度 ulimit -a 检查用户限定值, nofiles值和数据库用户连接数有关系

Page 58: Informix 数据库培训内容

IBM Software Group

5.ToubleShooting

应用程序中的错误诊断; 降低数据库出故障的可能; 宕机分析

Page 59: Informix 数据库培训内容

IBM Software Group

应用程序中的错误诊断; 在应用程序日志中同时显示 sqlcode 和 isamcode

sqlcode=sqlca.sqlcode

isamcode=sqlca.sqlerrd[1]

一个 sqlcode 对应于多个 isamcode , isamcode 是唯一的,通过 isamcode 可以准确地定位错误;

在应用程序中设置锁等待时间,提高交易成功率 set lock mode to wait 20;

Page 60: Informix 数据库培训内容

IBM Software Group

finderr 107 SAM error: record is locked.

Another user request has locked the record that you requested or the file (table) that contains it. This condition is normally transient. A program can recover by rolling back the current transaction, waiting a short time, and re-executing the operation. For interactive SQL, redo the operation. For C-ISAM programs, review the program logic and make sure that it can handle this case, which is a normal event in multiprogramming systems. You can obtain exclusive access to a table by passing the ISEXCLLOCK flag to isopen. For SQL programs, review the program logic and make sure that it can handle this case, which is a normal event in multiprogramming systems. The simplest way to handle this error is to use the statement SET LOCK MODE TO WAIT. For bulk updates, see the LOCK TABLE statement and the EXCLUSIVE clause of the DATABASE statement

Page 61: Informix 数据库培训内容

IBM Software Group

降低数据库出故障的可能 安装操作系统补丁时,先关闭数据库; 在联机交易的繁忙时间段,不要执行批量的删除或更新操作,避免长事

务发生或批量操作阻塞联机交易; 双机的环境中做到及时地 lv 同步,避免数据库切换到备机上之后发生 c

hunk 对应的 lv找不到的情况; 备份逻辑日志,避免数据丢失; 对有删除操作的表进行定期的重组,保证:

数据存放在物理上连续,有较好的运行性能; 释放删除之后的空间给其他的表或索引使用;

Extent 数目 ,每个表的 extent总数目是有上限的 在 4k 页面的操作系统上单个表的 extent总数避免超过 400;

在 2k 页面的操作系统上单个表的 extent总数避免超过 200;

关闭 fuzzy checkpoint,提高数据库的强壮性 :export NOFUZZYCKPT=1

Page 62: Informix 数据库培训内容

IBM Software Group

宕机分析 提供数据库产生的 af 和 share memory dump 文件, Informix 工程师会

根据此文件分析宕机的原因。