3. IQ UTILITIES
在前一篇文章中介绍了IQ sql trace工具,在这篇文章中将向大家介绍IQ提供的另一个性能监控、诊断工具IQ UTILITIES。这个工具能够采集IQ内部组件的运行时统计信息,通过分析这些信息能够发现IQ Server存在的问题、瓶颈,从而为诊断问题提供线索。
(1) 说明
IQ Utilities是IQ提供的一个扩展SQL命令,它可以在所有IQ版本中使用,包括:IQ 12.6、IQ 12.7和IQ 15等。通过使用IQ utilities 命令我们可以启动或停止监控。当启动监控后,IQ会把监控结果信息写到server端的文件中。一个数据库连接上只能有一个main 监控文件和temp监控文件。一旦提交命令的连接退出,监控停止。
(2) 使用示例
IQ UTILITIES命令的具体语法,大家可以参考IQ的参考手册。下面给出一些例子来说明其用法:
--监控summary类信息
IQ UTILITIES MAIN INTO monitor START MONITOR '-summary -append -file_suffix summary-iqmon -interval 30';
IQ UTILITIES PRIVATE INTO monitor START MONITOR '-summary -append -file_suffix summary-iqmon -interval 60';
--监控cache类信息
IQ UTILITIES MAIN INTO monitor START MONITOR '-cache -append -file_suffix cache-iqmon -interval 30';
IQ UTILITIES PRIVATE INTO monitor START MONITOR '-cache -append -file_suffix cache-iqmon -interval 30'
--一个监控脚本的例子:iq_util_mon.sql
IQ UTILITIES MAIN INTO monitor START MONITOR '-summary -append -file_suffix summary-iqmon -interval 6';
WAITFOR DELAY '00:00:10'; --这个语句为了能够延迟退出,如果没有的话,那么连接立即退出就不
--能获得监控信息了。
(3) 重要的统计信息项
A. -summary 类中的重要信息项:
Finds: buffer cache被请求的次数(Find requests to the buffer cache).
如果Finds的值突然降到并保持为0,那么Server很可能发生“死锁”.
HR%: buffer cache命中率.是指无须发生物理I/O请求,buffer cache就可以满足请求的百分比。
HR%的值越高越好,如果设置的高速缓存足够大(通常该值为90%—100%),对于大的查询,Hit Rate可能一开始较低,但是当预取操作开始起作用时,Hit Rate会增大。
Reads/Writes: 物理“读/写”操作的次数。
GDirty: 某一操作为获取buffers(以LRU结构组织),必须停止(stall)以等待这些脏buffers中的数据写到磁盘上的次数。
如果GDIRTY大于0,则表明buffer cache中充满了脏数据。如果是上述情况,则需要移动清洗标志(wash marker)或者增加清扫夫线程(sweeper thread)的数量。
Pin%: buffer cache中被使用并且被锁住页面的百分比。
Dirty%: 被修改的buffers的百分比。应确保Dirty Percent值不大于85-90%,否则GDirty值将大于0。(也就是说Dirty%与GDirty有一定的相关)
InUse%: buffer cache中被使用的buffers的百分比。
B. -cache类中的重要信息项:
Finds: 同-summary。
Creats: 创建buffers操作被调用的次数。
Dests: destroy buffer操作被调用的次数。
Dirty: buffer被修改的次数。
HR%: 同-summary。
BWaits: 该统计值是一线程请求缓冲区中的buffer,但是由于buffer繁忙而等待的次数。通常这个统计值很小,但是在一些特定的情况下可能会比较高。例如:如果两个用户同时执行相同的查询,查询需要相同的页面,这样有一个查询必须等待另一个查询把数据读到缓冲区的buffer中。注意:-Bwait值正常情况下应该比较小。
Reads/Writes: 同-summary。
PF/PFMiss/PFFnd(PF/PFRead): PF:Prefetch请求的次数;PFRead:实际预读的次数。通常,我们希望预读能够命中在buffer cache中,如果没有命中就会执物理预读操作。太多的磁盘预读操作意味着内存不足,应考虑对内存的优化。
GDirty: 同-summary。
Pin%: 同-summary。
Dirty%: 同-summary。
阅读(2824) | 评论(0) | 转发(1) |