文档库 最新最全的文档下载
当前位置:文档库 › informix pdq配置

informix pdq配置

摘自:https://www.wendangku.net/doc/655198256.html,/post/40583/501418

PDQ(Parallel database query):并行数据库查询

PDQ(Parallel database query):并行数据库查询
一、几个与并行查询相关的配置参数或环境变量

1: DS_MAX_QUERIES 配置参数
指定: 可以并发运行的 PDQ 查询的最大个数。也即同一时刻大于 0 的 PDQ 查询的总数不能超过 DS_MAX_QUERIES
范围: 1至8M
初始值: 无
默认值: CPU VP * 2 * 128
动态修改: onmode -Q

2: DS_MAX_SCANS 配置参数
指定:一个查询可用的最大扫描线程个数
范围: 10至1M
初始值: 有 = 1M
动态修改: onmode -S
DBA应将 DS_MAX_SCANS 设置成一个较少的数,以防止IDS所需要的扫描线程数目过多。如果一个表有100个分段,并且使用系统默认值 DS_MAX_SCANS (1M),那么IDS将会并发100个扫描线程来读取该表。如果 DS_MAX_SCANS = 20,则可以确保 IDS 为并行扫描最多并发执行 20 个扫描线程。

3: MAX_PDQPRIORITY 配置参数
指定: PDQ 可获取的最大资源的百分比。
范围: 0至100
初始值: 有 = 100
动态修改: onmode -D
如果希望将更多的资源分配给OLAP,请减少 MAX_PDQPRIORITY 的值。

4: DS_TOTAL_MEMORY 配置参数
指定:所有并行查询可以使用的全部虚拟内存数量。
范围: 128*DS_MAX_QUERIES 至 1M(32位) 或 4G(64位)
初始值:无
默认值:如果 SHMTOTAL=0,并设置了 DS_MAX_QUERIES ,则 DS_TOTAL_MEMORY = DS_MAX_QUERIES * 128
如果 SHMTOTAL=0,但没设置 DS_MAX_QUERIES ,则 DS_TOTAL_MEMORY = CPU VP * 128 * 2
动态修改: onmode -M
如果监控 OS 时,发现页面调度增加时(即OS内存不足),则需降低 DS_TOTAL_MEMORY 的值,以保证OLAP可以继续。

5: PDQPRIORITY 环境变量
或者 set PDQPRIORITY 语句
指定:当前查询最终可以使用的资源数(也即优先级)
范围:-1 至 100

set PDQPRIORITY default:使用环境变量 PDQPRIORITY 指定的值

二、 哪些操作支持并行
IDS 采用以下两个步骤处理 insert update insert 操作:
步骤1: 取来符合条件的行;

步骤2: 执行 insert update insert 操作

所以:
1: delete 操作
IDS 可以并行执行步骤1

2: insert 操作
SELECT...INTO TEMP 和 INSERT INTO...SELECT 操作都可能被并行处理。其中 INSERT INTO...SELECT 的目的表可以是永久表或临时表

3: 创建索引

4: 相关子查询不能使用 PDQ,但不相关子查询可能使用 PDQ
所在IBM建议:只要有可能就用连接代替子查询

5: 对于排序、散列连接和group by 的操作,PDQ 将会有非常高的性能提升

但 UPDATE STATISTICS 不能并行处理

三、MGM(Memory Grant Manager):内存分配管理器
1: 因为 PDQ 会涉及到内存, CPU VP,扫描线程和磁盘I/O,所以IDS就有一个组件: MGM 用来协调这些资源。
MGM 可以管理并分配的资源包括:
每个

查询的扫描线程的数量
每个查询的线程数量
每个查询所占用的内存数量

2: 份额(Quantum)的概念
就像给表分配存储空间时使用Page的概念一样,在 PDQ 中分配内存的最小单位是份额。一个份额的大小= DS_TOTAL_MEMORY / DS_MAX_QUERIES
一般而言,Quantum 越小,内存分配效率越高。从上可知可以通过增加 DS_MAX_QUERIES 以减少一个内存份额的大小来提高并发查询的性能。

3: 一个查询可以启动的最大扫描线程的数量
scan_threads = min (nfrags, DS_MAX_SCANS * (pdqpriority / 100) * (MAX_PDQPRIORITY / 100) )
nfrags: 当前查询中所有分段表的最大分段个数。
例:
如果一个表有100个分段,并且使用系统默认值 DS_MAX_SCANS (1M),那么IDS将会并发100个扫描线程来读取该表。

4: 一个查询可以使用的内存
等于 DS_TOTAL_MEMORY * MAX_PDQPRIORITY% * pdqpriority%。然后四舍五入的换成N个 Quantum 。
例:如果 MAX_PDQPRIORITY = 80,当前查询的 pdqpriority = 50,则当前查询可以获得 80%*50%=40%的 DS_TOTAL_MEMORY 内存量。
所以如果通过把环境变量 PDQPRIORITY 设置成 90,则很可能会造成 208 错误。因为一个Session就占用了 90% 的PDQ内存,每二个Session只能等待第一个Session释放内存。一般最好在会话中设置 PDQPRIORITY 来提高性能,否则后果很严重。

注:
1、 在PDQ官方文档中,经常看到“保留”这个字,我一般会它理解成“申请”
2、 环境变量 PDQPRIORITY 在官方文档中是优先级的含义,但大多数情况下还有资源申请百分比的意思。可以理解如果希望得到的资源越多,它的优先级就越高。
3、 IDS首先通过 DS_TOTAL_MEMORY/DS_MAX_QUERIES 申请到 N 个名为“份额”的内存单元(N = DS_TOTAL_MEMORY * MAX_PDQPRIORITY% * pdqpriority% / (DS_TOTAL_MEMORY/DS_MAX_QUERIES)=DS_MAX_QUERIES * MAX_PDQPRIORITY% * pdqpriority%),当用户发出查询时,IDS将分配上面申请到的内存给当前查询。

4、 从 set explain 的结果可以显示是否使用了并行扫描,响应查询所需的最大线程数以及查询的连接类型。如果打开 PDQ,且优化器选择了并行扫描,则输出 Parallel ,其中 #of Secondary Thread 为除了用户会话线程以外所需要的线程数量,所以必需的线程总数为 #of Secondary Thread + 1。如果关闭了 PDQ,则输出 Serial。
5、 如果一个 session 有 N 个线程,则 onstat -u 则表明该会话正在运行决策支持查询(见《性能》P306即12章的第16页)
6、 在 onstat -g ath 的线程角色列(name)指明了该线程是否为扫描线程。
7、 在 onstat -g ses 的结果中显示每个会话分配的内存,使用的内存,启动的线程数。
8、 共享内存(SHMTOTAL)=常驻内存+虚拟内存(SHMVIRTSIZE)+消息部分,而 DS_TOTAL_MEMORY 是虚拟内存的一部分。如果通过 onmode -M 增加

DS_TOTAL_MEMORY ,则通过 onstat -g seg 可能看到标志为V的内存有对应的增加。因为 DS_TOTAL_MEMORY 不占用 BUUFERS 所使用的常驻内存内存,所以在不能重启IDS增加buffer时,可以试图使用 onmode -M 来加快查询。但注意 HPL 使用 BUUFERS ,而其它装载方法可以使用 PDQ 来改善性能。(https://www.wendangku.net/doc/655198256.html,/waiug/archive/iugnew2000Fall/How_to_PDQ.htm)
9、一些建议值:
对于OLTP系统:一般 DS_TOTAL_MEMORY 为 SHMTOTAL 的20%至50%。即把尽可能多的内存分配给 BUFFERS,而避免使用 PDQ,
对于DSS系统:一般 DS_TOTAL_MEMORY 为 SHMTOTAL 的50%至80%
对于专用DSS系统: DS_TOTAL_MEMORY 可以为 SHMTOTAL 的90%以上,但要小于 SHMTOTAL - 10MB.
10、一些建议:
(1) PDQPRIORITY * (MAX_DS_QUERIES/2) = 100
(2) 使用 PDQ后发现性能变差了。如果使用了索引,可以试图drop index,然后运行 Update Statistics 看一下结果,情况可能会变好。
(3) 经常 Update Statistics
以上参考:https://www.wendangku.net/doc/655198256.html,/waiug/archive/iugnew2000Fall/How_to_PDQ.htm 的第7部分: Final Tips

11、可以使用 onstat –g mgm 监控 MGM 的情况。

liahtobjtosh 发表于:2010.06.28 22:25 ::分类: ( informix读书笔记 ) ::阅读:(418次) :: 评论 (0) :: 引用 (0)

相关文档