Informix 数据库维护指南v1.0 - 图文

更新时间:2024-06-02 18:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Informix数据库维护指南

Informix数据库维护指南

(V0.1)

中国建设银行信息技术管理部

北京数据中心 2012年5月

Informix数据库维护指南

修改记录

编号 日期 描述 版本 作者 开放系统平1 2012/04/16 初始版本 台管理部 颜凯 2 2012/06/27 更新HDR切换方式及场景 颜凯 审核 发布日期

本文档中所包含信息属内部资料,请注意保存。 ?Copy Right 2011 by China Construction Bank

北京数据中心

第2页 共 97页

Informix数据库维护指南

目录

1

前言 .......................................................................................................................................................4 1.1 编写目的 .......................................................................................................................................4 1.2 前提和假设 ...................................................................................................................................4 1.3 预期读者 .......................................................................................................................................4 性能和容量管理 ....................................................................................................................................5 2.1 内存使用 .......................................................................................................................................5 2.2 锁的使用 ..................................................................................................................................... 11 2.3 CPU使用 .................................................................................................................................... 12 2.4 日志使用 ..................................................................................................................................... 16 2.5 Checkpoint事件 .......................................................................................................................... 21 2.6 读写I/O ....................................................................................................................................... 24 2.7 网络 ............................................................................................................................................. 29 2.8 统计更新 ..................................................................................................................................... 30 2.9 索引使用 ..................................................................................................................................... 31 2.10 空间管理 ..................................................................................................................................... 33 2.11 任务管理 ..................................................................................................................................... 36 可用性管理 .......................................................................................................................................... 42 3.1 数据库可用性 ............................................................................................................................. 42 3.2 数据库备份 ................................................................................................................................. 46 3.3 数据库集群SDS ......................................................................................................................... 47 3.4 数据库集群HDR ........................................................................................................................ 52 3.5 数据库集群控制软件CM .......................................................................................................... 58 常用信息查询语句 .............................................................................................................................. 61 4.1 实例总体信息 ............................................................................................................................. 61 4.2 CPU ............................................................................................................................................. 66 4.3 内存 ............................................................................................................................................. 67 4.4 磁盘 ............................................................................................................................................. 69 4.5 网络 ............................................................................................................................................. 74 4.6 Session ......................................................................................................................................... 75 4.7 SQL .............................................................................................................................................. 78 4.8 Lock ............................................................................................................................................. 81 4.9 事务 ............................................................................................................................................. 83 4.10 数据库基本信息 ......................................................................................................................... 84 4.11 数据库空间使用率 ..................................................................................................................... 85 4.12 表 ................................................................................................................................................. 85 4.13 索引 ............................................................................................................................................. 90 4.14 存储过程 .......................................................................................................................................1 附录 .......................................................................................................................................................2 系统目录表 ............................................................................................................................................3

2

3

4

5 6

北京数据中心

第3页 共 97页

Informix数据库维护指南

1 前言

1.1 编写目的

对Informix数据库日常所需的管理工作进行的归纳和总结。用于指导管理员采用正确的方式对数据库进行管理。

1.2 前提和假设

如非特别说明,本规范叙述的产品特性、操作命令、用户界面均基于Informix Database 11.50和11.70 版本,可能有不适用其它版本的情况。如遇此情况,请参考其它版本厂商技术手册中对应的说明。

1.3 预期读者

项目基础设施可行性研究、设计和实施人员,项目组应用系统设计人员,相关运行维护技术人员。

北京数据中心

第4页 共 97页

Informix数据库维护指南

2 性能和容量管理

2.1 内存使用

2.1.1 内存命中率

管理项描述:内存中载入数据页的命中率

影响方式 :较低的命中率会导致数据库性能底下,增加磁盘的读写操作 监控方式 :对该值进行趋势监控,设定波动预警

onstat -p 命令输出的 read catch 项

检查标准 :1)针对在线交易系统,不低于 98% 2)针对批量交易系统,不低于 95% 3)监控波动范围 %5- 规避方式 :逐步增加数据库BUFFER

onstat -p 命令输出范例 IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 1 days 03:46:49 -- 160552 Kbytes Profile dskreads pagreads bufreads êched dskwrits pagwrits bufwrits êched 9434 10587 502071 98.13 9667 16373 89267 89.17 isamtot open start read write rewrite delete commit rollbk 479961 22611 23143 210101 19148 3805 10315 9335 162 gp_read gp_write gp_rewrt gp_del gp_alloc gp_free gp_curs 2 0 0 0 0 0 2 ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes 0 0 0 3.92 5.99 113 113 bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans 116 1 251373 0 0 0 2508 3869 ixda-RA idx-RA da-RA logrec-RA RA-pgsused lchwaits 0 815 893 0 1092 8597 2.1.2 内存段

管理项描述:内存段的核心参数定义过小,会影响数据库申请新的内存段 影响方式 :内存不足会导致应用操作因资源不足失败 监控方式 :长期定点监控内存段的使用 1)使用命令 onstat -g seg

2)数据库总内存段得使用,不超过5个

北京数据中心

第5页 共 97页

Informix数据库维护指南

3) 操作系统检查

单进程最大同时访问内存段数量限制

单用户最大申请内存段数量限制 单次申请内存段大小限制 规避方式 :控制数据库内存总量不超过5个

修改ONCOFNIG配置文件中相关参数的设置

SHMADD - The size, in KB, of additional virtual shared SHMVIRTSIZE - The initial size, in KB, of the virtual NETTYPE ipcshm,1,50,NET 核对各个操作系统相关核心参数的设置

onstat -g seg 命令输出范例 IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 1 days 04:09:49 -- 160552 Kbytes Segment Summary: id key addr size ovhd class blkused blkfree 3309571 52cb4801 44000000 114188288 892276 R 27875 3 3342340 52cb4802 4ace6000 33439744 197024 V 7941 223 3375109 52cb4803 4ccca000 8388608 50192 V 680 1368 3407878 52cb4804 4d4ca000 8388608 50192 V 13 2035 Total: - - 164405248 - - 36509 3629 (* segment locked in memory) No reserve memory is allocated 2.1.3 内存驻留

管理项描述:数据库将使用内存全部驻留在物理内存中 影响方式:过大的驻留内存会影响系统中可用内存的总量

增加系统内存做换入换出几率,降低系统性能

监控方式:检查数据库是否开启内存驻留参数 1) RESIDENT 不等于 0

2) 使用操作命令检查系统换入换出情况,根据个操作系统相关要求调整驻留参数

规避方式:建议禁止打开驻留选项, 即 RESIDENT参数值为0

北京数据中心

第6页 共 97页

Informix数据库维护指南

RESIDENT参数值检查 onstat -c|grep RESIDENT # RESIDENT - Controls whether shared memory is resident. RESIDENT 0 2.1.4 内存使用量

管理项描述:数据库使用的内存总量,较物理内存总量比重大

影响方式 :当有系统中有额外的内存开销时,增加系统内存的换入换出几率,降低

系统性能

监控方式:定点检查informix使用内存总量与系统物理内存的占比 1) 所占比重 小于 50%

2) 使用操作命令检查系统换入换出情况,根据个操作系统相关要求调整

驻留参数

规避方式:以系统中50%物理内存量为最大值,配置相关参数。 SHMADD - The size, in KB, of additional virtual shared SHMVIRTSIZE - The initial size, in KB, of the virtual

BUFFERPOOL - Specifies the default values for buffers and LRU BUFFERPOOL entry. The onconfig.std file contains IDS adds a BUFFERPOOL entry to the onconfig file BUFFERPOOL entry, except that the default LOCKS - The initial number of locks when Informix starts.

检查操作系统总内存及相关核心参数设置 dbaccess sysmaster select * from sysmachineinfo; 北京数据中心

第7页 共 97页

Informix数据库维护指南

检查数据库当前使用内存 onstat - IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 1 days 04:24:26 -- 160552 Kbytes 2.1.5 内存段增量

管理项描述:单次申请增加内存的设置过大, 超过系统内剩余可用内存的总量 影响方式:不能成功申请到内存段,造成应用因资源问题失败

监控方式:定点检查增量内存设置是否大于系统剩余可用内存 1) 检查SHMADD参数的大小

2) 使用操作系统命令,检查剩余可用内存的大小 规避方式:尽量保持系统可用内存在50%的水平

系统可用内存检查方式参照2.1.4, 检查数据库当前SHMADD配置方式如下 onstat -c|grep SHMADD # SHMADD - The size, in KB, of additional virtual shared # EXTSHMADD - The size, in KB, of each extension shared 北京数据中心

第8页 共 97页

Informix数据库维护指南

SHMADD 8192 EXTSHMADD 8192 2.1.6

线程堆栈溢出

管理项描述:数据库使用线程堆栈存放线程使用的所有内存 影响方式:堆栈溢出将导致数据库宕机 监控方式:定点监控线程堆栈使用情况

1) onstat -g sts

检查标准

1) 当前使用内存字节数 大于 总分配内存数 2) 当前使用内存字节数为负数

规避方式:一旦发现有线程堆栈溢出,要安排主动停机并重新启动。做主动防御。

onstat -g sts命令输出范例

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 1 days 04:38:35 -- 160552 Kbytes Stack usage:

TID Total Max Current Thread Name bytes % bytes %

2 36352 2548 7 720 1 lio vp 0 3 36352 2296 6 720 1 pio vp 0 4 36352 4412 12 720 1 aio vp 0 5 134656 2712 2 720 0 msc vp 0 6 36352 1640 4 736 2 fifo vp 0 7 69120 9884 14 3680 5 main_loop() 8 69120 2308 3 592 0 soctcppoll 9 69120 13640 19 4000 5 soctcplst 10 36352 1668 4 880 2 flush_sub(0) 11 36352 1668 4 880 2 flush_sub(1) 12 36352 1668 4 880 2 flush_sub(2) 13 36352 1668 4 880 2 flush_sub(3) 17 36352 1668 4 880 2 flush_sub(7) 18 36352 3504 9 720 1 aio vp 1 19 36352 3372 9 720 1 aio vp 2 20 36352 3372 9 720 1 aio vp 3 21 36352 3372 9 720 1 aio vp 4 26 69120 652 0 640 0 aslogflush 27 69120 3668 5 576 0 btscanner_0 28 69120 3560 5 1008 1 readahead_0 44 69120 5384 7 1280 1 defragclean 45 69120 6468 9 4496 6 onmode_mon 46 69120 5112 7 672 0 periodic 55 134656 19800 14 2976 2 dbScheduler 北京数据中心

第9页 共 97页

Informix数据库维护指南 56 134656 26120 19 3584 2 dbWorker1 57 134656 17756 13 3584 2 dbWorker2 145 69120 572 0 304 0 bf_priosweep() 2.1.7 Buffer wait

管理项描述:内存某数据页有集中访问现象,或BUFFER页换出过于频繁命中率较

低,需要从磁盘中读取

影响方式: 1)较大的等待量会影响应用的执行效率

2)可能存在运行异常的session上时间占用某数据页 3)应用并发量较大,都等待同一资源,导致效率下降 监控方式: 对Buffer资源的使用进行趋势监控

1) onstat -p 2) onstat -b

规避方式:找到等待资源的热点,即页所属的表、索引、日志Buffer ,增加或分散

对应资源

onstat -p命令参照2.1.1, onstat -b 命令输出范例

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 1 days 04:38:35 -- 160552 Kbytes Buffers

address userthread flgs pagenum memaddr nslots pgflgs xflgs owner waitlist

70000003177c3e0 0 823 8:421907 70000003c43c000 49 890 10 0 0 700000035ccb760 0 823 8:434055 7000000bebac000 27 890 10 0 0 7000000361bf0e8 0 823 8:141756 7000000c80cd000 34 8890 10 0 7000001706dfa10

700000036617760 0 823 8:234726 7000000d03ac000 87 890 10 0 0 700000038a4e920 0 c23 19:395326 700000114664000 2 1 10 0 0 700000038a50ba8 0 23 19:395331 7000001146a5000 0 804 10 0 7000001706d69b0

700000038a51648 0 c23 24:395353 7000001146b9000 3 1 10 0 0 700000038aaea08 0 823 8:471901 7000001151b1000 54 890 10 0 0 700000038b03540 0 823 8:472343 700000115ba8000 37 890 10 0 0 700000038c09aa8 0 c23 24:395415 700000117a85000 2 801 10 0 7000001706d2ff0

700000038c62c88 0 10c23 13:141894 700000118501000 3 2801 10 0 0 700000038f79400 0 823 8:60685 70000011e200000 27 8890 10 0 0 700000038fb7f00 0 823 8:52012 70000011e960000 40 8890 10 0 0 700000039a307e0 0 23 13:114451 7000001324bc000 0 804 10 0 0 700000039f9f9a8 0 c07 19:395395 70000013c865000 1 1 80 7000001706d6278 0 70000003a184780 0 823 8:67743 700000140170000 62 8890 10 0 0 70000003a198288 0 10c23 13:179969 7000001403c1000 2 2801 10 0 0 70000003a4e0438 0 823 8:179764 700000146697000 48 8890 10 0 7000001706cd218

70000003aecc3c8 0 823 8:202873 700000159169000 35 8890 10 0 0 70000003b6210b0 0 823 8:317276 700000166e36000 28 8890 10 0 0 70000003b737958 0 823 8:316135 700000168efb000 28 8890 10 0 0 148 modified, 1250000 total, 2097152 hash buckets, 4096 buffer size

北京数据中心

第10页 共 97页

Informix数据库维护指南

2.2 锁的使用

2.2.1 锁当前使用情况

管理项描述:锁资源总量有上限限制

影响方式:锁资源不足,会使应用因该资源不足而失败

监控方式:对锁资源的使用进行趋势监控 1) onstat -k

2) 或 online.log 记录的额外锁申请日志

规避方式:分析应用的锁占用情况,在不影响并发的情况下放大锁级别

当前锁分配数量,以及锁溢出状况 onstat -k |tail -2 4 active, 20000 total, 16384 hash buckets, 0 lock table overflows 2.2.2 锁资源消耗内存

管理项描述:锁资源总量会受到系统内可用内存的资源限制

影响方式:9.4版本中每一个锁会占用44个字节的内存,11.5版本中每个锁占用120字节的内存,内存不足会导致锁资源受限,最终使应用因该资源不足而失败

监控方式:对锁资源的使用进行趋势监控 1) onstat -k

2) online.log 记录的锁申请信息 3) 操作系统命令查看剩余可用内存数量

规避方式:分析应用的锁占用情况,在不影响并发的情况下放大锁级别

当前锁使用量参看2.2.1 , 锁消耗内存计算方式 9.40, 10.0. 版本,一个锁占44字节, 北京数据中心

第11页 共 97页

Informix数据库维护指南

total lock num * 44 11.5版本,一个锁占120字节 total lock num * 120 2.2.3 锁资源溢出

管理项描述:锁资源总量有上限限制

影响方式: 应用的数据量随上线时间不断增长,做同样的应用所需锁得数量也不断

增长,最终超过锁资源上限。

监控方式:对锁资源的使用进行趋势监控 1) onstat -k

2) online.log 记录的额外所申请日志

规避方式:分析应用的锁占用情况,在不影响并发的情况下放大锁级别 当前使用量和溢出情况参看2.2.1, 锁总量 ? 32位系统 锁最大值 IDS11.50 8,000,000 + 99 * 100,000 IDS7.31, IDS9.4, IDS10.0 8,000,000 + 16 * 100,000 ? 64位系统 锁最大值 IDS11.50 500,000,000 + 99 * 1,000,000 IDS7.31,IDS9.4,IDS10.0 8,000,000 + 16 * 100,000 2.3 CPU使用

2.3.1 CPU VP 数量

管理项描述:数据库使用的CPU数量

影响方式:未给操作系统及其他应用留下做够的CPU资源

监控方式:定点检查CPU VP参数配置 1) onconfig中VPCALSS 定义

2) 操作系统提供系统层CPU数量查看方式

北京数据中心

第12页 共 97页

Informix数据库维护指南

规避方式:CPU VP = TOTAL CPU - n(特殊需求预留CPU) - 1CPU 系统用

注:配置中的数量是系统中可以查看到的CPU核数,即逻辑CPU的数量 系统内CPU信息参看2.1.4, 当前配置CPU VP数量 onstat -c |grep VPCLASS | grep -i CPU # VPCLASS cpu - Configures the CPU VPs. The format is: # VPCLASS cpu, num=, VPCLASS cpu,num=1,noage 2.3.2 CPU VP 使用率

管理项描述:数据库使用的CPU的使用率

影响方式:如果分配给数据库的CPU使用率很高,将无法继续提高系统的处理性能

监控方式:定点检查CPU 使用率

1) CPU使用率大于70% 报警

2) 操作系统提供系统层CPU使用率查看方式 规避方式:增加CPU VP数量,或考虑增加系统物理CPU数量

2.3.3 CPU VP 使用均衡

管理项描述:数据库使用的每个CPU,其使用率是否均衡

影响方式:按CPU编号排列,编号越大的CPU,使用频率会越低,无法进行利用,进而提高整体处理能力

监控方式:定点检查各个CPU 使用率

1) 编号最大的CPU使用率小于CPU VP1 50%时提示 2) 操作系统提供系统层CPU使用率查看方式 规避方式:使用CPU绑定设置

系统内CPU信息参看2.1.4, 当前配置CPU 绑定形式 onstat -c |grep VPCLASS | grep -i CPU # VPCLASS cpu - Configures the CPU VPs. The format is: 北京数据中心

第13页 共 97页

Informix数据库维护指南

# VPCLASS cpu, num=, VPCLASS cpu,num=58,aff=6-119,noage 2.3.4 物理CPU 编号连续性

管理项描述:CPU绑定,依靠CPU的编号进行设置

影响方式:如果CPU物理编号不连续,部分CPU绑定将失效,数据库将失去部分预想的CPU处理能力

监控方式:定点检查系统中CPU编号是否连续,且是否有绑定设置 1) onconfig 中 AFF_CPU 参数 2) 操作系统提供CPU编号查看方式

规避方式:使用区间CPU绑定方式 参看2.3.3 2.3.5 CPU user 及 sys 占比

管理项描述:分析计算类CPU时间与系统调用CPU时间的占比 影响方式:计算类的CPU时间占比应在80%以上较为合理

监控方式:定点检查系统中CPU user 及 sys的比例 1) 操作系统提供CPU查看方式

规避方式:1) 操作系统分析sys调用的主要原因

2) 通过调优减少sys使用

CPU User 及 Sys使用查看 onstat -g glo IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 01:59:07 -- 160552 Kbytes MT global info: sessions threads vps lngspins 北京数据中心

第14页 共 97页

Informix数据库维护指南 0 34 15 4 sched calls thread switches yield 0 yield n yield forever total: 164849 136270 14502 85950 13037 per sec: 49 42 0 36 0 Virtual processor summary: class vps usercpu syscpu total cpu 1 0.60 1.10 1.70 aio 9 0.00 0.37 0.37 lio 1 0.00 0.62 0.62 pio 1 0.00 0.10 0.10 adm 1 0.00 0.01 0.01 msc 1 0.00 0.00 0.00 fifo 1 0.00 0.00 0.00 total 15 0.60 2.20 2.80 2.3.6 CPU VP 绑定 与 网卡CPU绑定重叠

管理项描述:HP平台避免数据库使用的CPU,与系统绑定的网卡CPU重叠 影响方式:降低网卡CPU的处理能力,即降低应用连接的网络效率

监控方式:定点检查系统中网卡是否绑定CPU 1) 操作系统提供网卡CPU绑定查看方式

规避方式:HP平台避开数据库使用的CPU来绑定网卡

2.3.7 AIO VP 数量

管理项描述:AIO VP以同步方式处理IO

影响方式:当启用KAIO时,AIO VP的数量应限定为4。未使用KAIO的情况下,

AIO的数量应为chunk的数量+2。当未配置AIO VP的数量时,系统默认启动chunk数量*2 的AIO 进程。造成系统进程数量过多,影响性能。

监控方式:定点检查数据库AIO参数配置 1) onconfig 中 AIOVP 配置

规避方式:禁止AIOVP参数配置为空

北京数据中心

第15页 共 97页

Informix数据库维护指南

2.3.8 CPU cache 是否打开

管理项描述:为 CPU VP设置缓存 影响方式:提高CPU VP 性能

监控方式:定点检查数据库CPU Catch配置

1) onconfig 中 VP_MEMORY_CACHE_KB 配置

规避方式:设置该参数 VP Cache查看 onstat -c |grep VP_MEMORY # VP_MEMORY_CACHE_KB - Specifies the amount of private memory VP_MEMORY_CACHE_KB 1024 2.4 日志使用

2.4.1 物理日志大小

管理项描述:物理日志存放BUFFER修改的前映像

影响方式:过小的设置会触发频繁的checkpoint事件,影响系统性能

监控方式:定点检查物理日志设置 1) onstat -d

2) onconfig 中 BUFFER size 3) onstat -g ckpt

规避方式:逐步增大物理日志

当BUFFER的大小大于4G时,物理日志的大小可从4G 至 BUFFER*1.1

逐步调整,避免checkpoint过频繁

BUFFER设置 onstat -c|grep BUFFERPOOL 北京数据中心

第16页 共 97页

Informix数据库维护指南

BUFFERPOOL size=2K , buffers=50000 , lrus=8 , lru_min_dirty=50.00 , lru_max_dirty = 60.00 物理日志设置 onstat -c|grep PHY # PHYSFILE - The size, in KB, of the physical log on disk. # PHYSFILE = Size of BUFFERS * 1.1 # PHYSBUFF - The size of the physical log buffer, in KB PHYSFILE 30000 PHYSBUFF 128 2.4.2 用户库日志模式

管理项描述:数据库的日志模式,决定逻辑日志同步方式 影响方式:unbuffer模式性能要高,buffer模式安全性稍差

监控方式:定点检查数据库日志模式

1) sysmaster中 抽取数据库日志模式 2) onstat -l

规避方式:讨论日志模式的合理性

使用onmonitor命令 菜单status→Databases Dynamic Server: Status Parameters Dbspaces Mode Force-Ckpt ... Status menu to view Dynamic Server. =================================================================== STATUS: Profile Userthreads Spaces Databases Logs Archive ... Display system profile information. =================================================================== -----------------------------On-Line------- Press CTRL-W for Help. -------- Press ESC to return to the Status Menu. Use arrow keys to move the cursor. DATABASES When Log Database Name Owner In Dbspace Created Status sysmaster informix rootdbs 03/13/2012 U 北京数据中心

第17页 共 97页

Informix数据库维护指南

sysuser informix rootdbs 03/13/2012 U sysadmin informix rootdbs 03/13/2012 U stores_demo informix datadbs01 03/21/2012 B Total # of databases -> 5 2.4.3 逻辑日志需求总量

管理项描述:逻辑日志用于存放数据库的所有变更操作 影响方式:预留总够的时间,用于发现与逻辑日志相关的问题

监控方式:定点检查数据库日志的使用量, 大于 2 天 1) onstat -l 2) online.log统计

规避方式:增加逻辑日志的大小,及数量 当天逻辑日志滚动数量 v_infodir=`su - informix -c \v_date=`date |awk '{print $1,$2,$3}'` v_year=`date +%Y` v_daylognum=`awk '/'\$v_infodir |awk '/'\|grep \loguniq\ 逻辑日志总数量 v_lognum=`su - informix -c \ 2.4.4 特殊时期业务对日志总量需求

管理项描述:逻辑日志用于存放数据库的所有变更操作 影响方式:数据库逻辑日志的写入量,大于系统备份的速度

监控方式:定点检查数据库日志的备份情况, 未备份数量 小于 5% 1) onstat -l

北京数据中心

第18页 共 97页

Informix数据库维护指南

2) online.log统计

规避方式:优化备份方式 逻辑日志监控命令 onstat -l IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 00:08:13 -- 160552 Kbytes Physical Logging Buffer bufused bufsize numpages numwrits pages/io P-1 0 64 543 11 49.36 phybegin physize phypos phyused %used 1:263 15000 4454 15 0.10 Logical Logging Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io L-3 0 32 7367 911 635 8.1 1.4 Subsystem numrecs Log Space used OLDRSAM 7361 1027636 HA 2 88 DDL 4 1392 address number flags uniqid begin size used %used 4ae7fcf8 1 U---C-L 25 1:15263 5000 1594 31.88 4ae7fd40 4 U-B---- 20 1:36561 5000 5000 100.00 4ae7fd88 5 U-B---- 21 1:41561 5000 5000 100.00 4ae7fdd0 6 U-B---- 22 2:53 5000 5000 100.00 4ae7fe18 2 U-B---- 23 1:20263 5000 5000 100.00 4ae7fe60 3 U-B---- 24 1:25263 5000 5000 100.00 未备份逻辑日志数量检查 onstat -l | grep \ 2.4.5 长事物水位设置

管理项描述:由于交易的并发,事物的操作会以分布的方式记录在逻辑日志当中 影响方式:分布区间过大,会触发长事务机制,导致事物失败并回滚

监控方式:定点检查事物的逻辑日志分布情况, 小于 20%

1) onstat -l

北京数据中心

第19页 共 97页

Informix数据库维护指南

2) onstat -x

规避方式:优化应用的执行效率 实例水位设置 onstat -c|grep HWM # LTXHWM - The percentage of the logical logs that can be # LTXEHWM - The percentage of the logical logs that have been # LTXHWM and LTXEHWM because the server can add new logical logs # If dynamic logging is off, set LTXHWM and LTXEHWM to # When using Enterprise Replication, set LTXEHWM to at least 30% # higher than LTXHWM to minimize log overruns. LTXHWM 70 LTXEHWM 80 2.4.6 大事务监控

管理项描述:由于交易的并发,事物的操作会以分布的方式记录在逻辑日志当中 影响方式:分布区间过大,会触发长事务机制,导致事物失败并回滚

监控方式:定点检查事物的逻辑日志分布情况, 小于 20% 1) onstat -l 2) onstat -x 实例水位设置 onstat -x IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 00:34:57 -- 160552 Kbytes Transactions address flags userthread locks begin_logpos current logpos isol rb_time retrys coord 4af4f018 A---- 4af1f018 0 - - COMMIT - 0 4af4f270 A---- 4af1f5fc 0 3 10 COMMIT - 0 4af4f4c8 A---- 4af1fbe0 0 - - COMMIT - 0 4af4f720 A---- 4af201c4 0 6 11 COMMIT - 0 4af4f978 A---- 4af207a8 0 - - COMMIT - 0 4af4fbd0 A---- 4af20d8c 0 - - COMMIT - 0 23 active, 128 total, 26 maximum concurrent 大事务检查 对每一个事物,使用 Current logpos - Begin_logpos 即为事务跨逻辑日志个数,占总逻辑日志个数超过20%即可判定为大事务 北京数据中心

第20页 共 97页

Informix数据库维护指南

2.5 Checkpoint事件

2.5.1 checkpoint时间频度

管理项描述:数据库在检查点时,同步内存数据到磁盘 影响方式:检查点事件发生时,数据库性能较低

监控方式:定点检查数据库状态 1) onstat - 2) onstat -g ckpt

规避方式:频繁发生的检查点事件,会增加数据库被阻塞的风险,所以要尽量减少Block time, Wait time , Long time的发生。可以评估以下情况的可能性

1)逻辑日志量较交易发生量较小(监控间隔) 2)BUFFER量较交易发生量较小 3)备份异常 4)数据更改操作量大

5)自动checkpoint事件(v11)

检查Checkpoint事件的详细信息

onstat -g ckp

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 00:48:24 -- 160552 Kbytes

AUTO_CKPTS=On RTO_SERVER_RESTART=Off

Critical Sections Physical Log Logical Log

Clock Total Flush Block # Ckpt Wait Long # Dirty Dskflu Total Avg Total Avg Interval Time Trigger LSN Time Time Time Waits Time Time Time Buffers /Sec Pages /Sec Pages /Sec 1296 13:42:00 Startup 25:0x2ab0b0 0.2 0.1 0.0 0 0.0 0.0 0.0 18 18 7 0 1 0 1297 13:47:00 CKPTINTVL 25:0x638018 0.3 0.3 0.0 0 0.0 0.0 0.0 633 633 532 1 909 3 1298 13:57:01 CKPTINTVL 25:0x63a018 0.0 0.0 0.0 0 0.0 0.0 0.0 1 1 17 0 2 0 1299 14:12:02 CKPTINTVL 25:0x63c018 0.0 0.0 0.0 0 0.0 0.0 0.0 1 1 2 0 2 0 1300 14:22:03 CKPTINTVL 25:0x69f018 0.1 0.1 0.0 0 0.0 0.0 0.0 158 158 139 0 99 0 1301 14:27:03 CKPTINTVL 25:0x6a1018 0.0 0.0 0.0 0 0.0 0.0 0.0 1 1 13 0 2 0

Max Plog Max Llog Max Dskflush Avg Dskflush Avg Dirty Blocked pages/sec pages/sec Time pages/sec pages/sec Time 200 200 0 135 0 0

北京数据中心

第21页 共 97页

Informix数据库维护指南

Checkpoint事件的触发类型 Event that triggered the checkpoint. An asterisk (*) indicates that the checkpoint requested was a transaction-blocking checkpoint. Events include Admin, Startup, CKPTINTVL, LongTX, Recovery, Backup, Plog, Llog, Misc, RTO, CDR, Pload, Conv/Rev, Reorg, HDR, User, and Lightscan 2.5.2 checkpoint耗时

Checkpoint耗时主要发生在两个阶段;

1) Checkpoint Req 即事件的申请阶段, 需要等待进入核心阶段的事务退出核心区,该阶段为阻塞阶段。

在这个阶段,事务操作的执行性能 和 同时并行的任务数量 将决定该阶段checkpoint事件的时间。

2) Checkpoint Inp 即事件的内部处理阶段,非阻塞阶段。

在这个阶段,checkpoint执行磁盘同步操作,因此磁盘I/O 速度,系统读写I/O并行压力将决定该阶段的checkppint事件的时间。

Online.log文件中,记录了checkpoint的历史信息。

oncheck -g ckp 命令中,记录了最近几次checkpoint的详细信息。

2.5.3 LRU、Cleaner设置

LRU 及 Cleaner 参数设置的不合理,会导致脏页全部在checkpoint期间集中写出,影响I/O的性能。可以通过监控 LRU write , FG write , Chunk write的比例,来合理设置 LRU 及 Cleaner的值。

LRU 写是在触发 LRU_MAX_DIRTY 值后,将 LRU队列清除到 LRU_MIN_DIRTY的设置。

CLEANER参数决定可以同时并行的LRU清除操作。

磁盘写入方式状态分析 onstat -F 北京数据中心 第22页 共 97页

Informix数据库维护指南

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 01:46:46 -- 160552 Kbytes Fg Writes LRU Writes Chunk Writes 0 0 869

address flusher state data # LRU Chunk Wakeups Idle Tim 4af1f5fc 0 I 0 0 11 6398 6395.277 4af1fbe0 1 I 0 0 2 6389 6395.097 4af201c4 2 I 0 0 1 6388 6395.392 4af207a8 3 I 0 0 1 6388 6395.381 4af20d8c 4 I 0 0 1 6388 6395.323 4af21370 5 I 0 0 1 6388 6395.339 4af21954 6 I 0 0 1 6388 6395.327 4af21f38 7 I 0 0 1 6388 6395.327

LRU 设置 及 状态检查

onstat -R

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 01:48:28 -- 160552 Kbytes

Buffer pool page size: 2048

8 buffer LRU queue pairs priority levels # f/m pair total % of length LOW HIGH 0 f 6250 100.0% 6250 6248 2 1 m 0.0% 0 0 0 2 f 6250 100.0% 6250 6248 2 3 m 0.0% 0 0 0 4 f 6250 100.0% 6250 6250 0 5 m 0.0% 0 0 0 6 f 6250 100.0% 6250 6249 1 7 m 0.0% 0 0 0 8 F 6250 100.0% 6250 6248 2 9 m 0.0% 0 0 0 10 f 6250 100.0% 6250 6249 1 11 m 0.0% 0 0 0 12 f 6250 100.0% 6250 6248 2 13 m 0.0% 0 0 0 14 f 6250 100.0% 6250 6247 3 15 m 0.0% 0 0 0

0 dirty, 50000 queued, 50000 total, 65536 hash buckets, 2048 buffer size

start clean at 60.000% (of pair total) dirty, or 3750 buffs dirty, stop at 50.000% CLEANER参数的设置 onstat -c|grep CLEAN

# CLEANERS - The number of page cleaner threads CLEANERS 8

北京数据中心

第23页 共 97页

Informix数据库维护指南

2.6 读写I/O

2.6.1 物理日志与逻辑日志的位置

逻辑日志与物理日志,在系统初始化的时候,都是存放在rootdbs中。由于其使用特性,逻辑日志和物理日志的写操作是实例中写访问最频繁的两种操作。

如果物理日志,与逻辑日志存放在同一个DBspace中,将造成比较严重的写冲突,且访问集中。

因此应尽量避免将两种日志存放于底层物理相关的两个磁盘、卷、卷组中。

逻辑及物理日志位置查看 oncheck -pe DBspace Usage Report: rootdbs Owner: informix Created: 03/13/2012 Chunk Pathname Pagesize(k) Size(p) Used(p) Free(p) 1 /home/informix/IDS1170/data/rootdbs_chk01 2 50000 48655 1345 Description Offset(p) Size(p) ------------------------------------------------------------- -------- ----------------------------------------------------------- RESERVED PAGES 0 12 CHUNK FREELIST PAGE 12 1 rootdbs:'informix'.TBLSpace 13 250 PHYSICAL LOG 263 15000 LOGICAL LOG: Log file 1 15263 5000 LOGICAL LOG: Log file 2 20263 5000 LOGICAL LOG: Log file 3 25263 5000 sysmaster:'informix'.sysdatabases 30263 4 system:'informix'.syslicenseinfo 30267 16 2.6.2 ROOTDBS数据要求

数据库根空间内,存放了所有系统数据库。由于系统库不能迁出根空间,因此要保证跟空间及根空间的第一个chunk有足够的空间,用于存放于系统表相关的记录。

如果根空间不足,会导致增加dbspace,chunk,extent等操作不成功。创建新的数据库,及其表等操作也要在系统库中增加记录。

由于用户库的数据增量通常会需要很大的空间,且波动的可能较大,因此应尽量避免将用户库与系统库同时放在根空间中。需要将用户库迁出根空间。

北京数据中心

第24页 共 97页

Informix数据库维护指南

使用onmonitor命令 菜单status→Databases Dynamic Server: Status Parameters Dbspaces Mode Force-Ckpt ... Status menu to view Dynamic Server. =================================================================== STATUS: Profile Userthreads Spaces Databases Logs Archive ... Display system profile information. =================================================================== -----------------------------On-Line------- Press CTRL-W for Help. -------- Press ESC to return to the Status Menu. Use arrow keys to move the cursor. DATABASES When Log Database Name Owner In Dbspace Created Status sysmaster informix rootdbs 03/13/2012 U sysuser informix rootdbs 03/13/2012 U sysadmin informix rootdbs 03/13/2012 U stores_demo informix datadbs01 03/21/2012 B Total # of databases -> 5 系统库名称列表 sysadmin, sysmaster, sysutils , sysuser, sysha 2.6.3 I/O操作分析

I/O集中访问请求过多,会造成磁盘访问繁忙,应尽量将磁盘访问分配到不同的设备上,减小I/O集中访问对系统造成的影响。

主要减小集中访问的方式有: 1) 2) 3)

同一张表的数据与索引分开存放

访问总量较大的DBspace中,将部分表或索引迁出 逻辑日志与物理日志分开存放

查看chunk I/O 信息 北京数据中心

第25页 共 97页

Informix数据库维护指南

onstat -g iof

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 2 days 23:54:35 -- 160552 Kbytes

AIO global files:

gfd pathname bytes read page reads bytes write page writes io/s 3 rootdbs_chk01 13479936 6582 54761472 26739 378.2 op type count avg. time seeks 0 N/A reads 2619 0.0039 writes 14908 0.0024 kaio_reads 0 N/A kaio_writes 0 N/A

4 logdbs01_chk01 8192 4 8777728 4286 353.7 op type count avg. time seeks 0 N/A reads 4 0.0032 writes 2704 0.0028 kaio_reads 0 N/A kaio_writes 0 N/A

5 phydbs_chk01 8192 4 2048 1 501.3 op type count avg. time seeks 0 N/A reads 4 0.0021 writes 1 0.0017 kaio_reads 0 N/A kaio_writes 0 N/A

6 tempdbs01_chk01 2048 1 8192 4 94.0 op type count avg. time seeks 0 N/A reads 1 0.0055 writes 3 0.0124 kaio_reads 0 N/A kaio_writes 0 N/A

表访问情况信息

onstat -g ppf

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 2 days 23:57:09 -- 160552 Kbytes

Partition profiles

partnum lkrqs lkwts dlks touts isrd iswrt isrwt i sdel bfrd bfwrt seqsc rhitratio 0x6 0 0 0 0 4 0 0 0 0 0 0 0 0x1f 0 0 0 0 19 0 0 0 0 0 0 0 0x21 0 0 0 0 3 0 0 0 0 0 0 0

北京数据中心

第26页 共 97页

Informix数据库维护指南

0x26 0 0 0 0 6480 0 0 0 0 0 0 0 0x28 0 0 0 0 57 0 0 0 0 0 0 0 0x29 0 0 0 0 702 0 0 0 0 0 0 0 0x2a 0 0 0 0 19 0 0 0 0 0 0 0 0x2f 0 0 0 0 37 0 0 0 0 0 0 0 0x57 0 0 0 0 100 26 0 0 0 0 0 0 0x58 0 0 0 0 38 0 0 0 0 0 0 0 0x59 0 0 0 0 1 0 0 0 0 0 0 0 0x100001 0 0 0 0 0 0 0 0 24304 0 0 100 0x100002 29015 0 0 0 10239 0 0 0 30993 1 14 100 0x100003 0 0 0 0 0 0 0 0 50 0 0 98 0x100004 126993 0 0 0 126987 0 0 0 273079 0 0 100 表位置定位 表PARTNUM组成 = 0xDDDTTTTT DDD 为16进制的dbspace编号 TTTTT 为表在 dbspace的逻辑编号 2.6.4 CHUNK设备选择

裸设备分为字符设备和块设备两种,针对Informix的访问特性,使用字符设备的性能要好于块设备。

Unix系统在创建裸设备时,通常对同一个裸设备会生成上述的两种设备。在挂载时需要认真选择。

裸设备属性查看方式, Linux下 ls /dev crw-rw---- 1 root audio 14, 12 Apr 20 13:28 adsp crw------- 1 root root 10, 175 Apr 20 13:28 agpgart crw-rw---- 1 root audio 14, 4 Apr 20 13:28 audio crw------- 1 root root 10, 62 Apr 20 13:28 autofs brw-rw---- 1 root floppy 2, 0 Apr 20 13:28 fd0 brw-rw---- 1 root floppy 2, 84 Apr 20 13:28 fd0u1040 brw-rw---- 1 root floppy 2, 88 Apr 20 13:28 fd0u1120 brw-rw---- 1 root floppy 2, 28 Apr 20 13:28 fd0u1440 设备属性列,第一个字符C表示字符设备,如果是B表示为块设备 北京数据中心

第27页 共 97页

Informix数据库维护指南

2.6.5 KAIO

在informix内部,执行读写操作有两种形式,一种为AIO即异步IO,一种为KAIO即核心异步IO.

AIO通常能够用于裸设备和磁盘文件的读写,而KAIO仅能用于裸设备的读写。 由于KAIO对于磁盘的访问方式,消耗CPU时间更短。因此在使用裸设备的情况下,应打开系统对KAIO特性的支持,在开启informix的KAIO功能。在$INFORMIXDIR/release/en_us/0333/*machine_notes*.txt 文件中,即机器说明文件,描述了该种操作系统是否支持KAIO,以及如何在该系统上打开informix的KAIO功能。

AIX操作系统默认情况下已经打开KAIO功能。 KAIO线程数量,与实例内使用的CPU VP数量相同。 检查数据库初始化以后是否已经打开KAIO

onstat -g ath # Print all threads

IBM Informix Dynamic Server Version 11.50.FC6 -- On-Line -- Up 13 days 23:10:37 -- 40749020 Kbytes

Threads:

tid tcb rstcb prty status vp-class name

2 c00000080c619cf0 0 1 IO Idle 60lio* lio vp 0 3 c00000080ce7f460 0 1 IO Idle 61pio* pio vp 0 4 c00000080ceab890 0 1 IO Idle 62aio* aio vp 0 5 c00000080ced7cc0 0 1 IO Idle 63msc* msc vp 0 6 c00000080cf0c460 0 1 IO Idle 64fifo* fifo vp 0 7 c00000080cf39890 0 1 IO Idle 65aio* aio vp 1 8 c00000080cf65cc0 0 1 IO Idle 66aio* aio vp 2 9 c00000080cf92460 0 1 IO Idle 67aio* aio vp 3 10 c00000080cfbeaa0 c00000080b68b030 3 sleeping secs: 1 53cpu main_loop() 11 c00000080c74bcf0 0 1 running 68soc* soctcppoll 12 c00000080c7a2cf0 0 1 running 69soc* soctcppoll 35 c00000080c598cc0 0 2 sleeping forever 1cpu* soctcplst 36 c00000080c61acc0 0 2 sleeping forever 3cpu* soctcplst 37 c00000080c673cc0 c00000080b68b888 1 sleeping secs: 1 40cpu flush_sub(0) 38 c00000080c69dcc0 c00000080b68c0e0 1 sleeping secs: 1 54cpu flush_sub(1) 39 c00000080c69ecc0 c00000080b68c938 1 sleeping secs: 1 54cpu flush_sub(2) 40 c00000080c69fcc0 c00000080b68d190 1 sleeping secs: 1 54cpu flush_sub(3) 41 c00000080c6c9cc0 c00000080b68d9e8 1 sleeping secs: 1 54cpu flush_sub(4) 42 c00000080c6cacc0 c00000080b68e240 1 sleeping secs: 1 58cpu flush_sub(5) 270 c00000080efc6920 c00000080ee01240 2 sleeping secs: 1 54cpu aslogflush

271 c00000080efc6b90 c00000080ee01a98 1 IO Wait 4cpu btscanner_0 273 c00000080efc65c0 c00000080edfe888 1 IO Wait 41cpu btscanner_1 276 c00000080efc6030 0 3 running 3cpu* kaio 411 c0000008112f8950 0 3 IO Idle 35cpu* kaio 416 c00000080efe8520 0 3 running 19cpu* kaio 北京数据中心

第28页 共 97页

Informix数据库维护指南 422 c00000081132f6a0 0 3 IO Idle 28cpu* kaio 433 c0000008113b6430 0 3 running 9cpu* kaio 444 c00000081125d5b0 0 3 IO Idle 18cpu* kaio 457 c0000008100743f0 c00000080ee009e8 3 sleeping secs: 1 1cpu* onmode_mon 458 c0000008100746c0 c00000080ee3f328 3 sleeping secs: 1 59cpu periodic 479 c00000081101d0e0 c00000080ee04450 1 cond wait bp_cond 25cpu bf_priosweep() 5281 c000000857a13030 c0000008113c72d8 1 cond wait netnorm 34cpu sqlexec 5282 c000000857a39780 c0000008113c7b30 1 cond wait netnorm 1cpu sqlexec 5283 c000000857a95030 c0000008113c8388 1 cond wait netnorm 44cpu sqlexec 5289 c0000008596c8cf0 c0000008113c9c90 1 cond wait netnorm 21cpu sqlexec 5290 c000000859719570 c0000008113ca4e8 1 cond wait netnorm 14cpu sqlexec 5291 c00000085975f450 c00000080ee251f8 1 cond wait netnorm 59cpu sqlexec 5292 c00000082e71ac10 c00000080ee39760 1 cond wait netnorm 44cpu sqlexec 5293 c00000085a0d7030 c0000008113cad40 1 cond wait netnorm 13cpu sqlexec 2.7 网络

2.7.1 数据库总连接数限制

数据库经常使用两种连接方式,一种为 TCP方式,另一种为共享内存方式,即SHM方式。

TCP没有明显的连接上限设置,连接上限仅取决于操作系统内关于网络连接数及文件描述符的限制,因为打开一个TCP连接即相当于打开一个文件,需要占用一个文件描述符。

SHM有连接上限的限制,连接上限就是在CONFIG配置参数内设定的值,不能动态增加。 SHM连接数量监控 onstat -g ntu IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 00:01:42 -- 161084 Kbytes global network information: #netscb connects read write q-free q-limits q-exceed alloc/max 11/ 11 2 0 7 7/ 0 0/ 134 10/ 0 0/ 0 Individual thread network information (basic): netscb type thread name sid fd poll reads writes q-nrm q-pvt q-exp 4b482ac8 ipcshm sqlexec 30 0 0 5 5 0/ 0 0/ 0 0/ 0 4b47ac88 ipcshm sqlexec 29 0 0 0 0 0/ 0 0/ 0 0/ 0 4b478ac8 ipcshm sqlexec 28 0 0 0 0 0/ 0 0/ 0 0/ 0 4ca009c0 ipcshm sqlexec 27 0 0 0 0 0/ 0 0/ 0 0/ 0 4b480c58 ipcshm sqlexec 26 0 0 0 0 0/ 0 0/ 0 0/ 0 4c837c48 ipcshm sqlexec 25 0 0 0 0 0/ 0 0/ 0 0/ 0 北京数据中心 第29页 共 97页

Informix数据库维护指南

4b460de0 ipcshm sm_discon 8 0 0 0 0 0/ 0 0/ 0 0/ 0 4b456d38 ipcshm sm_listen 5 0 0 2 0 0/ 0 0/ 0 0/ 0 4b44ec48 soctcp soctcplst 4 1 5 0 0 0/ 0 0/ 0 0/ 0 4b44aac8 ipcshm sm_poll 3 0 0 8 0 0/ 0 0/ 0 0/ 0 4b44cd98 soctcp soctcppoll 2 0 5 0 0 0/ 0 0/ 0 0/ 0 2.7.2 连接数增长的趋势

利用上述监控方式,长期记录连接数量,预测未来连接数需求,据此更改相关操作系统及数据库的配置参数。

2.8 统计更新

2.8.1 统计更新策略及粒度设置

When to Execute Number of rows has changed significantly or After migration from previous version of database server For all columns that are not the leading column of any index Queries have non-indexed join columns or filter columns Queries have an indexed join columns or filter columns UPDATE STATISTICS Statement UPDATE STATISTICS LOW DROP DISTRIBUTIONS UPDATE STATISTICS LOW UPDATE STATISTICS MEDIUM DISTRIBUTIONS ONLY UPDATE STATISTICS HIGH table (leading columin index) Queries have a multicolumn indexed defined on join columns or filter UPDATE STATISTICS HIGH table (first differincolumns column in multicolumn index) Queries have a multicolumn indexed defined on join columns or filter UPDATE STATISTICS low table (all columns columns multicolumn index) Queries have many small tables (fit into one extent) Queries use SPL routines UPDATE STATISTICS HIGH on small tables UPDATE STATISTICS for procedure 2.8.2 统计更新执行时机

统计更新操作并不会对数据上锁,因此不会阻碍应用程序的运行。但是在统计更新的工作过程中会有很频繁的I/O操作,影响系统性能。

需要选择合适的时机来执行统计更新操作: 1) 2)

新建表以后

执行大量的数据变更操作后,例如删除,插入,更新

第30页 共 97页

北京数据中心

Informix数据库维护指南

3) 4)

业务低谷期及批量操作操作结束后 数据库版本升级后

2.9 索引使用

2.9.1 大表的顺序扫描

顺序扫描是查询语句经常使用的一种访问数据的方式,无论其检索目标数据结果是多少,使用该方式都将逐一访问表内的所有数据。

在查询成本方面,大多数情况下,索引扫描要比顺序扫描有更高的执行效率。仅在表数据量很小的情况下,才会选择使用顺序扫描。

顺序扫描在以下情况中会发生: 1) 2) 3)

表记录数很少,索引查询路径的优势不明显 表上没有合适的索引设置,导致查询只能走全表扫描

表上有索引设置,但是没有做过统计更新,导致优化器无法做查询路径

判断,只能走全表扫描 4)

表的记录数由少逐渐变多,在这一变化过程中,数据分布信息仍停留在

记录较少时期的状态,没有及时更新,导致优化器有可能根据错误的成本决策选择走顺序扫描。

实例中顺序扫描的检查 onstat -p IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 00:00:23 -- 152892 Kbytes Profile dskreads pagreads bufreads êched dskwrits pagwrits bufwrits êched 651 786 11947 94.55 63 103 1228 94.87 isamtot open start read write rewrite delete commit rollbk 10427 751 953 4440 457 72 39 43 0 gp_read gp_write gp_rewrt gp_del gp_alloc gp_free gp_curs 2 0 0 0 0 0 1 ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes 0 0 0 0.07 0.76 1 1 bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans 16 0 6928 0 0 0 15 30 ixda-RA idx-RA da-RA logrec-RA RA-pgsused lchwaits 0 102 80 0 99 340 北京数据中心

第31页 共 97页

Informix数据库维护指南

表上顺序扫描的检查 onstat -g ppf IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 00:01:35 -- 161084 Kbytes Partition profiles partnum lkrqs lkwts dlks touts isrd iswrt isrwt isdel bfrd bfwrt seqsc rhitratio 0x6 0 0 0 0 1 0 0 0 0 0 0 0 0x100001 0 0 0 0 0 0 0 0 314 0 0 100 0x100002 407 0 0 0 130 0 0 0 410 1 3 100 0x100004 720 0 0 0 714 0 0 0 1604 0 10 99 0x100005 360 0 0 0 360 0 0 0 793 0 0 97 2.9.2 索引使用率

为表增加索引可以优化该表的查询效率,但是在增加索引后,也会增加插入操作的成本,增加表的存储空间需求。

如果索引的使用程度非常低、甚至是不使用时,对该表进行维护操作,例如重建索引、统计更新等就会消耗很多不必要的维护成本。

因此需要监控表上索引的使用情况。对访问较少的索引或没有访问的索引可讨论其使用必要性后,进行删除。

可通过命令 onstat -g ppf 对索引的访问情况进行记录,如没有访问记录的索引可进行重点分析其有效性。

2.9.3 索引层数

索引是一个树形结构,索引的层数对访问数据的效率有很重要的意义。索引的层数取决于如下几个因素:

1) 2) 3)

表中数据的总量 索引列的长度

索引字段数据的多样性,多指字段开始的几位字符串的变化程度。变化

度越高,索引性能越高 4)

索引的填充度

定期检查索引树的层数,一般不要超过5层。过大的树结构会明显降低索引的访问效率。当索引树过深时,可采取如下方式改进:

北京数据中心

第32页 共 97页

Informix数据库维护指南

1) 重建索引

2) 重建复合索引,并选择变化率较高的字段排在前面 3) 对索引进行表达式分片 4) 对非唯一性索引,进行随机分片 索引层数的检查 Select * from sysindexes 2.10 空间管理

2.10.1 DBSpace空间使用率

DBspace的空间不能自动增加,因此当空闲空间不足时,会影响驻留在该空间的表的信息插入。

应每日监控空间使用率,当空间使用率超过80%时,应该增加新的CHUNK到该空间内。

2.10.2 表空间分配

由于结构定义的限制,单个表空间存在如下限制: 1) 2) 3)

表空间总数据页限制 表空间总记录数限制 表空间extent数量的动态限制

Table-Level Parameters (based on 2K page size) Data rows per fragment Data pages per fragment Row length Key parts per index Maximum bytes per index key 北京数据中心

Maximum Capacity per Table 4,277,659,295 16,775,134 32,767 16 2K page size = 387 4K page size = 796

第33页 共 97页

Informix数据库维护指南

Table-Level Parameters (based on 2K page size) Maximum Capacity per Table 8K page size = 1615 12K page size = 2435 16K page size = 3254 Number of columns 32K 2.10.3 计算表的EXTENT最大值

计算表能分配的extent上限计算方式如下

1. 运行oncheck命令获得对象的物理地址(表、索引)

oncheck -pt databasename:tablename

the following shows sample output for oncheck -pt. oncheck -pt Output

TBLspace Report for stores7:wbyrne.sfe_enquiry Physical Address 7002c7

Number of special columns 18 Number of keys 0

Number of extents 65 Number of data pages 960

1. 拆分物理地址为chunk编号和页号(最后五位数字),然后运行 oncheck -pP chunk# page# , 并以0x表示16进制数字 the Physical Address is 7002c7. Therefore, chunk# is 0x007 (or 0x07) and the page# is 0x0002c (or 0x2c) in the followingoncheck command:

oncheck -pP 0x7 0x2c

The following shows sample output for oncheck -pp 0x7 0x2c. oncheck -pp chunk# page# Output

addr stamp nslots flag type frptr frcnt next prev 7002c7 112686 5 2 PARTN 828 1196 0 0 slot ptr len flg 1 24 92 0 2 116 40 0 3 156 144 0 4 300 0 0

北京数据中心

第34页 共 97页

Informix数据库维护指南

5 300 528 0

2. 在oncheck -pP的命令输出中,找到frcnt 标示下的数字,将这个数字除以8后得到的结果,就是还能够分配的extent的数量。 In the sample oncheck -pP , the frcnt column shows the value 1196. The following calculation shows the number of additional:

Additional_extents = trunc (frcnt / 8) = trunc (1196 / 8) = 149

3. 如要获得能够分配的最大extent的总数,需要加上已分配的extent数量。oncheck -pt的输出中 Number to extents行

Maximum_number_extents = Additional_extents + Number_of_extents

In the sample oncheck -pt , the Number of extents line shows the value 65. The following calculation shows the maximum number of extents for this table:

Maximum_number_extents = 149 + 65 = 214

2.10.4 Serial字段取值

序列类型的字段,在使用时会自动递增。由于每个数据类型都有自己的最大值,因此要时常监控字段值当前使用,防止序列值循环从最小开始时对系统的影响。

Data Type SERIAL SERIAL8 Description Stores a 4-byte positive integer that the database server generates. Values can range from 1 to (2**31)-1 (that is, from 1 to 2,147,483,647). Stores an 8-byte positive integer value that the database server generates. Values can range from 1 to (2**63)-1 (that is, from 1 to 9,223,372,036,854,775,807). 2.10.5 页锁机制

表的锁模式会影响应用的并发程度,因此要注意在重建表时,由于数据库默认的锁模式的页模式,因此需要对锁模式进行修改。

锁模式对程序并发程度的影响由大到小的顺序为: 1)

表级锁

第35页 共 97页

北京数据中心

Informix数据库维护指南

2) 3) 4)

页级锁 行级锁 键值锁

2.10.6 sysutils 库是否定期清理

sysutils数据库用于存放ONBAR备份操作的所有相关记录,因此经过一段时间后,systuils库会因为记录过多,性能会有所下降。建议定期使用 onsmsync命令清除过期的备份信息,包括存储端的备份。例如

onsmsync -i “1-6” #清除18个月前的所有备份信息 有如下sysutils的清理策略供参考: 1) 与后台存储的备份失效时间保持一致

2) 与rootdbs使用空间的策略保持一致,即空间剩余比例

3) 自定义失效时间策略,定期执行。执行的区间大于后台存储失效策略。

2.11 任务管理

2.11.1 Ready就绪队列及 Active 运行队列

监控Informix任务运行状态:

onstat -g rea命令的输出,从Ready队列的长度判断由于CPU资源紧张而造成的任务等待数。

onstat -g act命令的输出, 从 Active队列判断并行任务的数量、种类及是否有任务长期占用CPU VP执行(执行效率低) 就绪队列监控 onstat -g rea IBM Informix Dynamic Server Version 11.50.FC6 -- On-Line -- Up 13 days 23:10:38 -- 40749020 Kbytes 北京数据中心

第36页 共 97页

Informix数据库维护指南

Ready threads: tid tcb rstcb prty status vp-class name 5044115 c0000008a7f7ec40 c00000086688c660 1 ready 18cpu sqlexec 9170689 c0000008a98150e0 c0000008810de9a0 1 ready 16cpu sqlexec 运行队列监控 onstat -g act IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 18:45:32 -- 161084 Kbytes Running threads: tid tcb rstcb prty status vp-class name 8 4c5be018 0 1 running 1cpu* soctcppoll 9 4c5bed10 0 1 running 8shm* sm_poll 2.11.2 SQL执行时间

在Informix 11.50版本中,增加了一个新的特性,可以通过设置SQLTRACE参数记录SQL的执行情况,包括SQL的执行时间信息。 就绪队列监控 onstat -g his IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 19:02:30 -- 161084 Kbytes Statement history: Trace Level Med Trace Mode Global Number of traces 500 Current Stmt ID 1 Trace Buffer size 1000 Duration of buffer 4 Seconds Trace Flags 0x0000DF11 Control Block 0x4d54d6a8 Statement # 0: @ 0x4d54d6c0 Database: sysadmin Statement text: INSERT INTO command_history ( cmd_ret_msg, cmd_user, cmd_hostname, cmd_executed, cmd_ret_status ) VALUES (?, ?, ?, ?, ?) INSERT using table [ command_history ] 北京数据中心

第37页 共 97页

Informix数据库维护指南

Iterator/Explain

================

ID Left Right Sender Next Est Cost Est Rows Num Rows Partnum Type 1 0 0 0 0 1 1 1 1048843 Insert

Statement information:

Sess_id User_id Stmt Type Finish Time Run Time TX Stamp PDQ 34 500 INSERT 09:08:20 0.0209 2bccb2 0

Statement Statistics:

Page Buffer Read Buffer Page Buffer Write Read Read % Cache IDX Read Write Write % Cache 4 11 63.64 0 0 4 100.00

Lock Lock LK Wait Log Num Disk Memory Requests Waits Time (S) Space Sorts Sorts Sorts

12 0 0.0000 508 B 0 0 0

Total Total Avg Max Avg I/O Wait Avg Rows Executions Time (S) Time (S) Time (S) IO Wait Time (S) Per Sec 1 0.0209 0.0209 0.0209 0.0051 0.0202 47.8308

Estimated Estimated Actual SQL ISAM Isolation SQL Cost Rows Rows Error Error Level Memory 50 248 1 0 0 CR 70544 SQLTRACE的打开方式

ONCONFIG配置参数 SQLTRACE

SQLTRACE [level=low|high],[ntraces=number of traces],[size=size of each trace buffer],[mode=global|userid]

例如:

SQLTRACE level=high,ntraces=1000,size=20,mode=global

输出详细信息,跟踪1000条语句,每条语句最大20k的空间,全局模式

该参数需要重新启动才能生效。

或在sysadmin数据库内执行如下SQL,动态开启

EXECUTE FUNCTION admin ( \

不建议平时运行是开启此参数,待出现性能问题时动态打开

2.11.3 死锁

北京数据中心

第38页 共 97页

Informix数据库维护指南

死锁反应应用程序中存在的逻辑错误,Informix数据库会自动检查实例内的应用是否存在处于死锁的进程,如果存在将强制一方失败返回,另一方获得相应资源继续工作。

当遇到死锁时,应用会得到主要错误 -143 ISAM error: deadlock detected.

实例内死锁状态 onstat -p IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 19:15:22 -- 161084 Kbytes Profile dskreads pagreads bufreads êched dskwrits pagwrits bufwrits êched 4593 5360 259409 98.24 4754 7829 37223 87.23 isamtot open start read write rewrite delete commit rollbk 246233 10284 12286 128484 9616 1766 2380 4047 47 gp_read gp_write gp_rewrt gp_del gp_alloc gp_free gp_curs 2 0 0 0 0 0 2 ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes 0 0 0 1.42 2.51 81 81 bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans 81 0 117922 10 0 0 1171 2531 ixda-RA idx-RA da-RA logrec-RA RA-pgsused lchwaits 0 619 1067 0 1011 3945 死锁操作涉及的表 onstat -g ppf IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 19:16:52 -- 161084 Kbytes Partition profiles partnum lkrqs lkwts dlks touts isrd iswrt isrwt isdel bfrd bfwrt seqsc rhitratio 0x100001 0 0 0 0 0 0 0 0 4069 0 0 100 0x100002 780 0 0 0 339 0 0 0 1105 1 7 100 0x100003 0 0 10 0 0 0 0 0 16 0 0 94 0x100004 5928 0 0 0 5846 0 0 0 12824 0 0 100 2.11.4 SQL错误

应用程序上线运行后,除了返回SQLCODE 100 和 0两个值,其他返回都可以视为在程序逻辑、使用上存在错误或有没有考虑到的情况。因此应经常检查应用程序的SQL返回码状态。

北京数据中心

第39页 共 97页

Informix数据库维护指南

应用的SQL返回码

onstat -g sql

IBM Informix Dynamic Server Version 11.70.UC4 -- On-Line -- Up 19:36:39 -- 161084 Kbytes

Sess SQL Current Iso Lock SQL ISAM F.E.

Id Stmt type Database Lvl Mode ERR ERR Vers Explain 27 sysadmin DR Wait 5 0 0 - Off 26 SELECT sysadmin DR Wait 5 -143 0 - Off 25 sysadmin DR Wait 5 0 0 - Off 查询具体的SQL信息

onstat -g ses ses_id

session #RSAM total used dynamic id user tty pid hostname threads memory memory explain 6253252 fesp - 103874 IPSSAP03 1 176128 140480 off

tid name rstcb flags curstk status 161004391 sqlexec 70000025a5e4c50 ---PR-- 8800 ready-

Memory pools count 2

name class addr totalsize freesize #allocfrag #freefrag

6253252 V 700000281142040 172032 34840 282 14 6253252*O0 V 70000025c007040 4096 808 1 1

name free used name free used overhead 0 6576 scb 0 144 opentable 0 8960 filetable 0 2048 log 0 16536 temprec 0 6304 keys 0 4632 ralloc 0 37184 gentcb 0 1744 ostcb 0 3400 sort 0 104 sqscb 0 26712 sql 0 72 rdahead 0 1120 hashfiletab 0 552 osenv 0 3784 buft_buffer 0 8432 sqtcb 0 8880 fragman 0 1016 udr 0 2280

sqscb info

scb sqscb optofc pdqpriority optcompind directives

700000259be4050 70000027851d028 0 0 0 1

Sess SQL Current Iso Lock SQL ISAM F.E.

Id Stmt type Database Lvl Mode ERR ERR Vers Explain

6253252 SELECT proddb CR Not Wait 0 0 9.35 Off

Current SQL statement :

北京数据中心

第40页 共 97页

本文来源:https://www.bwwdw.com/article/exq6.html

Top