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页
北京数据中心
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Informix 数据库维护指南v1.0 - 图文(7)在线全文阅读。
相关推荐: