informix PDQ相关

PDQ可以提供如下动作并行操作:
        扫描(parallel scans);
        关联(parallel joins);
        排序(parallel Sorts);
        分组(parallel  group);
        聚集(parallel aggregates)。
        
涉及参数如下:
MAX_PDQPRIORITY:
DS_MAX_QUERIES:并行PDQ查询的数量;
DS_TOTAL_MEMORY: DSS查询支持的最大内存;
DS_MAX_SCANS:最大扫描线程数,默认1024*1024 ; ;
DS_NONPDQ_QUERY_MEM:  最大=DS_TOTAL_MEMORY*25%

动态修改方法:
onmode -D   修改MAX_PDQPRIORITY
onmode -M   修改DS_TOTAL_MEMORY  
onmode -S   修改DS_MAX_SCANS
onmode -Q   修改DS_MAX_QUERIES  

如下操作可以使用PDQ:
1、select、update、delete、update 
2、create index
3、update statistics
4、hold cursors
5、User-Defined Routines, User-Defined Aggregates

以下查询不能使用到PDQ:
1、查询使用cursor stability 隔离级;
2、查询包含for update或with hold的字句;
3、查询包含子查询;
4、查询语句包含SPL函数;
5、对于delete操作,当删除的表中包含一个引用约束时;  
6、DDL语句

要使用PDQ,需要考虑如下因素:
1、使用set pdqpriority n;
2、使用分片表;
3、操作系统有多CPU,VPCLASS中cpu vp大于1;

PDQ以Quantum 为单位分配内存
1Quantum = DS_TOTAL_MEMORY/DS_MAX_QUERIES    
某个PDQ会话的内存分配的范围在1Quantum和DS_TOTAL_MEMORY*MAX_PDQPRIORITY*PDQPRIORITY之间.

如下环境变量需要注意:
PSORT_NPROCS:用来设置排序和聚集线程的数量;
DBUPSPACE=8192:50:3   {磁盘空间}:{内存大小} :{directive}:
磁盘空间用于设置update statistics medium|high时候的排序空间的大小;
内存大小用于设置在没有开启PDQ的情况下的排序内存的大小(4-50MB);
directive用于为update statistics设置如下directive:
=1:不使用任何索引排序 ,打印update statistics完整的执行计划 ,
=2:不使用任何索引排序,不打印执行计划
=3:选择可用的索引进行排序,打印完整的执行计划

 

小结:

PDQ的使用也有很多细节需要注意,所以我们尽可能了解什么情况下可以使得PDQ生效,至于什么情况下不生效就不去记录和分析了,太多了~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我曾阿牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值