关闭

informix数据库调优

标签: 数据库informixGbase时间序列
766人阅读 评论(0) 收藏 举报
分类:

调优思路整理如下

一、PDQ

即利用infomix提供的PDQ(并行数据库查询)功能,并结合Power8处理器的SMT特性来提高SQL查询效率

PDQ允许数据库服务器将查询一个方面的某个工作分发给几个处理器。例如:如果查询要求聚集,则数据库服务器可以将聚集工作分发给几个处理器。而这次比赛的第二个题目,刚好用到了时间序列的AggregateRange 聚集函数,特别适用PDQ查询的场景。

SMT命令

Linux Power8服务器设置SMT命令如下:
1、查看smt

[root@loofweek ~]# ppc64_cpu --smt

2、关闭smt

[root@loofweek ~]# ppc64_cpu --smt=off

3、设置smt

[root@loofweek ~]# ppc64_cpu --smt=8

使用PDQ

使用PDQ时,首先要申明所做的操作是PDQ操作,通过执行:set pdqpriority high可以打开PDQ开关。执行完以后,应关闭PDQ开关:set pdqpriority low;其次,为了更好的发挥PDQ技术,应该对操作的数据表进行数据分割;最后运用PDQ技术应该选择多CPU的机器。当使用如下操作时,将不能启动 PDQ:
(1)查询使用了”cursor stablility”的隔离等级;
(2)查询使用了update游标或者游标定义为”with hold”;
(3)查询使用了嵌套子查询;
(4)查询中使用了存储过程;
(5)查询中不包含scan,join,sort,group,aggregate。

PDQ监控

使用onstat -g mgm可以监控PDQ使用情况。

二、CPU VP参数设置

NUMCPUVPS

NUMCPUVPS设置为能够处理承接任务的最小的数,这个数目小于或等于系统中可利用的CPU数,建议不要将CPU VP数设置成大于可用CPU数目。通常对于联机事务处理(OLTP)应用:NUMCPUVPS=实际CPU数量-1(对于单CPU系统,该参数应为1);对于联机分析处理(OLAP)应用:NUMCPUVPS=实际CPU数量。

通过ONCONFIG文件配置NUMCPUVPS

NUMAIOVPS

AIO,负责磁盘I/O任务;(KAIO),通过ONCONFIG文件进行配置NUMAIOVPS参数,一般配置为CHUNK的个数,当使用KAIO时,配置为2个即可;

其它
PIO,负责物理日志写任务,系统自动分配1~2个VPS;
LIO,负责逻辑日志写任务, 系统自动分配1~2个VPS

监控命令

1、onstat -g rea

/usr/informix >onstat -g rea 
Informix Dynamic Server Version 9.30.FC5 -- On-Line -- Up 36 days 00:22:32 - 
- 5352416 Kbytes 
Ready threads: 
tid tcb rstcb prty status vp-class name

命令说明:
onstat -g rea监控了就绪队列中的线程数目。包括准备运行而且在等待资源的线程。理想的状态下是输出极少的条目或者不显示任何条目。如果输出的某种 VP 类条目持续增长, 那么就要考虑在该类中添加VP。

2、onstat-g ioq

onstat -g ioq 监控AIO队列,监控I/O请求队列LEN和MAXLEN来观察AIO的情况。
onstat -g ioq指令的输出中,最需要关注的列是len列。len列的值应该总是为 0 或接近于 0。如果该列的值很高并持续增长,那么我们可能需要添加另一个 AIO/KAIO 虚拟处理器来减少磁盘 I/O 负载。

三、内存使用效率的参数调整和监控

Informix IDS 使用的内存部分被数据库服务器线程以及其他用户和虚拟进程共享,所以这部分的内存叫做共享内存,共享内存减少磁盘 I/O, 提供了最快地进行进程间通信的方法,还可以使数据库服务器减少总的内存使用。

Informix IDS共享内存分为四个部分:驻留部分、虚处理部分、消息部分和虚拟扩展区部分,其中消息部分只有在客户机和服务器采用共享内存方式连接时才有,而且尺寸很小。虚拟扩展区也极小,它包含了用于 DataBlade 模块的线程 heaps 和其他在用户定义的虚拟处理器中运行的用户定义例程。

命令 onstat -p是监控内存的另一个命令。其输出结果中的两个%cache显示了读写高速缓存比例的百分比,一般在80%到90%之间,如果低于80%,要调节BUFFERS参数值。ovlock 字段表明 IDS 在使用了最大数量的锁之后尝试过再使用锁的次数,如果该数字非零,可能需要提高配置文件中 LOCKS 参数的值。ovbuf 字段表明 IDS 在使用了最大数量的缓冲区之后尝试过再使用缓冲区的次数。如果该数字很大,比如说超过 100000,就需要提高 BUFFERS 参数,以便用户在需要从磁盘访问数据时不必等待缓冲区。在监控内存的使用情况时还可以采用Unix系统命令vmstat。

写这篇文章最直接原因是完成Power8实验室极限算法挑战赛物联网智能家居时间序列分析中调优部分的任务,由于时间及服务器资源紧张问题,并未在实际中进行参数调优及比较,实在有些小遗憾。

参阅资料如下:

1、论如何开发优质高效的Informix数据库应用程序

2、Informix调优

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:166530次
    • 积分:2553
    • 等级:
    • 排名:第14923名
    • 原创:61篇
    • 转载:4篇
    • 译文:0篇
    • 评论:55条
    最新评论