OceanBase GI

2021-06-30 09:17 更新

GI 算子用于并行執(zhí)行中,用于按照分區(qū)或者按照數據塊迭代整張表。

按照迭代數據的粒度劃分,GI 算子包括 PX PARTITION ITERATOR 和 PX BLOCK ITERATOR。

PX PARTITION ITERATOR

PX PARTITION ITERATOR 算子用于按照分區(qū)粒度迭代數據。

如下示例中,2 號算子按分區(qū)粒度迭代出數據。

obclient>CREATE TABLE t (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4;
Query OK, 0 rows affected (0.12 sec)

obclient>CREATE INDEX idx ON t (c1);
Query OK, 0 rows affected (0.12 sec)

obclient>EXPLAIN SELECT /*+FULL(t)*/ c1 FROM t\G;
*************************** 1. row ***************************
Query Plan:
======================================================
|ID|OPERATOR               |NAME    |EST. ROWS|COST  |
------------------------------------------------------
|0 |PX COORDINATOR         |        |400000   |427257|
|1 | EXCHANGE OUT DISTR    |:EX10000|400000   |247403|
|2 |  PX PARTITION ITERATOR|        |400000   |247403|
|3 |   TABLE SCAN          |T       |400000   |247403|
======================================================

Outputs & filters:
-------------------------------------
  0 - output([T.C1], [T.C2]), filter(nil)
  1 - output([T.C1], [T.C2]), filter(nil), dop=1
  2 - output([T.C1], [T.C2]), filter(nil)
  3 - output([T.C1], [T.C2]), filter(nil),
      access([T.C1], [T.C2]), partitions(p[0-3])

上述示例的執(zhí)行計劃展示中的 outputs & filters 詳細列出了 PX PARTITION ITERATOR 算子的輸出信息如下:

信息名稱

含義

output

該算子輸出的表達式。

filter

該算子上的過濾條件。

由于示例中 PX PARTITION ITERATOR 算子沒有設置 filter,所以為 nil。

PX BLOCK ITERATOR

PX BLOCK ITERATOR 算子用于按照數據塊粒度迭代數據。

相對于 PX PARTITION ITERATOR,PX BLOCK ITERATOR 算子按照數據塊迭代的方式粒度更小,能夠切分出更多的任務,支持更高的并行度。

obclient>EXPLAIN SELECT /*+PARALLEL(4)*/ c1 FROM t\G;
*************************** 1. row ***************************
Query Plan:
==================================================
|ID|OPERATOR           |NAME    |EST. ROWS|COST  |
--------------------------------------------------
|0 |PX COORDINATOR     |        |400000   |279171|
|1 | EXCHANGE OUT DISTR|:EX10000|400000   |189244|
|2 |  PX BLOCK ITERATOR|        |400000   |189244|
|3 |   TABLE SCAN      |T(IDX)  |400000   |189244|
==================================================

Outputs & filters:
-------------------------------------
  0 - output([T.C1]), filter(nil)
  1 - output([T.C1]), filter(nil), dop=4
  2 - output([T.C1]), filter(nil)
  3 - output([T.C1]), filter(nil),
      access([T.C1]), partitions(p[0-3])

上述示例的執(zhí)行計劃展示中的 outputs & filters 詳細列出了 PX BLOCK ITERATOR 算子的輸出信息,字段的含義與 PX PARTITION ITERATOR 算子相同。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號