以下是我用INFORMIX DATABASE的一点体会,分享给大家,欢迎大家一起探讨!
1. 日志缓冲
如果不怕丢失几个事务则最好用缓冲日志,这样可以得到更好的性能.
如果数据性很重要,则最好用非缓冲日志.
2. DSS SERVER的优化有三个目标:
1>. 总查询通过量最大化
可以将ONCONFIG文件中的PDQPRIORITY设置限制小于25%
2>. 每个查询处理时间最小化
可以将ONCONFIG文件中的PDQPRIORITY设置限制大于50%
3>. 平衡优先级
可以将ONCONFIG文件中的PDQPRIORITY设置限制大于25%,小于50%
3. OLTP SERVER的优化有三个目标:
1>. 更新活动通过量最大化
使用缓冲日志
将检验点间隔最大化,周期最小化
可以将ONCONFIG文件中的PDQPRIORITY设置限制为0
增加物理日志长度
最大化写入缓冲百分比
其实以上的目标也是会矛盾的,关键在于如何取舍.
2>. 查询活动通过量最大化
最大化BUFFERS
可以将ONCONFIG文件中的PDQPRIORITY设置为0或1
最大化读取缓冲百分比
3>. 事务安全最大化
最小化CKPTINTVL
使用非缓冲日志
使用冗余磁盘和I/O路径
减少物理日志长度
4. 简单查询SERVER的优化有三个目标:
最大化BUFFERS,它一般>=40%RAM
可以将ONCONFIG文件中的PDQPRIORITY设置<25%
5. 内存问题
INFORMIX可以使用的内存是不限制的,给多少用多少,下面以IDS7.X为例:
缓冲区最多 768000 PAGES (OS 3GBW/4KB)
DSS内存最多1G
锁最多8000000
逻辑日志缓冲区 3个 LOGSIZE最大2G, TOTAL 6G
物理日志缓冲区 2个 PHYSFILE最大2G, TOTAL 4G
数据字典缓冲区 没有限制,可以调整参数DD_HASHSIZE和 DD_HASHMAX
onstat -g dic确定数据字典缓冲区是否接近容量
存储过程缓冲区 没有限制,可以调整参数PC_HASHSIZE和PC_POOLSIZE
onstat -g prc确定存储过程缓冲区是否接近容量
数据分布缓冲区 可以调整参数DS_HASHSIZE和DS_POOLSIZE
onstat -g dsc确定数据分布缓冲区是否接近容量
6. 磁盘问题
磁盘是越多越好的
多些驱动器比大的驱动器好
采取RAID磁盘阵列
7. 内核限制
不同的OS有不同的内核,这是可以调整的.
8. 内存参数
onstat -g seg确定共享内存分配和查询内存分区
SHMVIRTSIZE确保最低正常负荷内存,如果消息日志文件中表示动态新共享内存的消息很多,则要增加此参数的数值.
SHMADD至少应为SHMVIRTSIZE的10%
SHMTOTAL除非很小的系统,否则社为0让内存增长.
9. 分块表和大量区域
用oncheck -pt 和 oncheck -pe检查表的区域数及其在磁盘上的布局
一般说表格超过33个区域系统比较慢,可以压缩表格来解决
1>. 删除表格重建並重新装入数据
2>. 重新创建索引
3>. 将表和索引放在不同的DBSPACE