(一) 并行查询的概述
1. 并行查询操作的概述
- 通过大的数据查询分成许多小的并行任务,每个任务由一个线索进行完成,每个线索运行在不同的物理CPU上,通过多个CPU共同完成一个任务,达到真正的并行
- gbase8s数据库的并行查询功能称为PDQ(Parallel Data Query),其充分利用了多CPU的能力,并行操作如下
-
- 并行扫描
- 并行连接
- 并行排序
- 并行分组
- 并行汇总
- 有些操作可能会导致PDQ不生效,不生效的场景如下
-
- 使用了cursor stability事务隔离级别
- 定义为for update或者with hold的游标
- 相关子查询
- 查询中包含了SPL调用:select col from tab where clo2=proc();
2. 并行排序的场景
- 以下场景中,如果有必要,会进行并行排序,如果数据量大,会利用磁盘空间,如果数据量小,则全部在内存中进行排序
-
- select语句中具有oracle或group by子句,但不能通过索引去排序
- select语句通过unique和distinct排除重复的记录
- 创建索引时需要对键值排序
3. 并行功能的开启
- 并行参数:
-
- PSORT_NPROCS:设置了一个用户连接可以使用的排序线索的数目
-
-
- 大于1表示多个一个用户可以多线索执行
- 不论是否设置,索引创建的排序部分都会以并行方式进行,这个参数决定了为每个btree appender线索初始化多少个排序线索,没有设置默认为2
-