日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Dynamic Join Filter

Dynamic Join Filter通過(guò)動(dòng)態(tài)收集Hash Join的右表Join鍵信息,在Join計(jì)算前過(guò)濾左表中無(wú)法Join匹配的數(shù)據(jù),從而提升AnalyticDB PostgreSQL版的Hash Join的性能。

注意事項(xiàng)

  • 內(nèi)核版本為V6.3.8.0及以上版本。如何升級(jí)內(nèi)核版本,請(qǐng)參見(jiàn)版本升級(jí)

  • 僅支持Legacy優(yōu)化器,不支持ORCA優(yōu)化器。關(guān)于優(yōu)化器的詳細(xì)信息,請(qǐng)參見(jiàn)查詢性能優(yōu)化指導(dǎo)

  • 僅支持Laser計(jì)算引擎。關(guān)于Laser計(jì)算引擎的詳細(xì)信息,請(qǐng)參見(jiàn)Laser計(jì)算引擎的使用

  • 不支持執(zhí)行計(jì)劃中包含IntiPlan的SQL。

  • 支持UDP網(wǎng)絡(luò)模式,不支持TCP網(wǎng)絡(luò)模式。

功能介紹

Hash Join是AnalyticDB PostgreSQL版中常用的算子,95%以上的關(guān)聯(lián)查詢是通過(guò)Hash Join實(shí)現(xiàn)的,由于Hash Join涉及到磁盤讀寫、網(wǎng)絡(luò)交互和大量的計(jì)算,通常會(huì)成為查詢中的瓶頸。

AnalyticDB PostgreSQL版于V6.3.8.0版本支持Dynamic Join Filter功能,通過(guò)動(dòng)態(tài)收集Hash Join的右表Join鍵信息,在Join計(jì)算前過(guò)濾左表中無(wú)法Join匹配的數(shù)據(jù),減少不必要的磁盤讀取、網(wǎng)絡(luò)和CPU計(jì)算開(kāi)銷,從而提升Hash Join的性能。Dynamic Join Filter原理示意圖如下:

Dynamic Join Filter

關(guān)閉或開(kāi)啟Dynamic Join Filter功能

Dynamic Join Filter功能默認(rèn)為開(kāi)啟狀態(tài),您可以通過(guò)修改adbpg_enable_dynamic_join_filter參數(shù)關(guān)閉或開(kāi)啟Dynamic Join Filter功能,操作方法如下:

  • 會(huì)話級(jí)別關(guān)閉Dynamic Join Filter功能:

    SET adbpg_enable_dynamic_join_filter TO off;
  • 會(huì)話級(jí)別開(kāi)啟Dynamic Join Filter功能:

    SET adbpg_enable_dynamic_join_filter TO on;

上述方法僅支持會(huì)話級(jí)別關(guān)閉或開(kāi)啟Dynamic Join Filter功能,如需實(shí)例級(jí)別關(guān)閉或開(kāi)啟Dynamic Join Filter功能,請(qǐng)提交工單聯(lián)系技術(shù)支持進(jìn)行修改。

使用示例

以下示例以TPC-H測(cè)試集中的lineitem和part表作為測(cè)試數(shù)據(jù)表,使用TPC-H中的Q17語(yǔ)句為例對(duì)比開(kāi)啟或關(guān)閉Dynamic Join Filter功能后的查詢耗時(shí)。

說(shuō)明

本文的TPC-H的實(shí)現(xiàn)基于TPC-H的基準(zhǔn)測(cè)試,并不能與已發(fā)布的TPC-H基準(zhǔn)測(cè)試結(jié)果相比較,本文中的測(cè)試并不符合TPC-H基準(zhǔn)測(cè)試的所有要求。

  1. 使用TPC-H在本地生成1 GB測(cè)試數(shù)據(jù),操作方法,請(qǐng)參見(jiàn)生成測(cè)試數(shù)據(jù)

  2. 創(chuàng)建用于測(cè)試的lineitem和part表,建表語(yǔ)句如下:

    CREATE TABLE LINEITEM (
        L_ORDERKEY    BIGINT NOT NULL,
        L_PARTKEY     INTEGER NOT NULL,
        L_SUPPKEY     INTEGER NOT NULL,
        L_LINENUMBER  INTEGER NOT NULL,
        L_QUANTITY    NUMERIC(15,2) NOT NULL,
        L_EXTENDEDPRICE  NUMERIC(15,2) NOT NULL,
        L_DISCOUNT    NUMERIC(15,2) NOT NULL,
        L_TAX         NUMERIC(15,2) NOT NULL,
        L_RETURNFLAG  CHAR(1) NOT NULL,
        L_LINESTATUS  CHAR(1) NOT NULL,
        L_SHIPDATE    DATE NOT NULL,
        L_COMMITDATE  DATE NOT NULL,
        L_RECEIPTDATE DATE NOT NULL,
        L_SHIPINSTRUCT CHAR(25) NOT NULL,
        L_SHIPMODE     CHAR(10) NOT NULL,
        L_COMMENT      VARCHAR(44) NOT NULL
    ) WITH (APPENDONLY=TRUE, ORIENTATION=COLUMN)
    DISTRIBUTED BY (L_ORDERKEY, L_LINENUMBER);
    
    CREATE TABLE PART (
        P_PARTKEY     INTEGER NOT NULL,
        P_NAME        VARCHAR(55) NOT NULL,
        P_MFGR        CHAR(25) NOT NULL,
        P_BRAND       CHAR(10) NOT NULL,
        P_TYPE        VARCHAR(25) NOT NULL,
        P_SIZE        INTEGER NOT NULL,
        P_CONTAINER   CHAR(10) NOT NULL,
        P_RETAILPRICE NUMERIC(15,2) NOT NULL,
        P_COMMENT     VARCHAR(23) NOT NULL
    ) WITH (APPENDONLY=TRUE, ORIENTATION=COLUMN)
    DISTRIBUTED BY (P_PARTKEY);
  3. 使用\COPY命令導(dǎo)入1 GB測(cè)試數(shù)據(jù),語(yǔ)句如下:

    \COPY LINEITEM FROM 'lineitem.tbl' with DELIMITER '|' NULL '';
    \COPY PART FROM 'part.tbl' with DELIMITER '|' NULL '';
  4. 查看關(guān)閉Dynamic Join Filter功能的情況下,Q17查詢的執(zhí)行耗時(shí)。具體步驟如下:

    1. 關(guān)閉Dynamic Join Filter功能:

      SET adbpg_enable_dynamic_join_filter TO off;
    2. 執(zhí)行TPC-H Q17查詢:

      SELECT
          sum(l_extendedprice) / 7.0 as avg_yearly
      FROM
          lineitem,
          part
      WHERE
          p_partkey = l_partkey
          and p_brand = 'Brand#54'
          and p_container = 'SM CAN'
          and l_quantity < (
              SELECT
                  0.2 * avg(l_quantity)
              FROM
                  lineitem
              WHERE
                  l_partkey = p_partkey
          );
    3. 返回結(jié)果如下,查詢耗時(shí)為3468ms:

           avg_yearly
      ---------------------
       336452.465714285714
      (1 row)
      
      Time: 3468.411 ms
  5. 查看開(kāi)啟Dynamic Join Filter功能的情況下,Q17查詢的執(zhí)行耗時(shí)。具體步驟如下:

    1. 開(kāi)啟Dynamic Join Filter功能:

      SET adbpg_enable_dynamic_join_filter TO on;
    2. 執(zhí)行TPC-H Q17查詢:

      SELECT
          sum(l_extendedprice) / 7.0 as avg_yearly
      FROM
          lineitem,
          part
      WHERE
          p_partkey = l_partkey
          and p_brand = 'Brand#54'
          and p_container = 'SM CAN'
          and l_quantity < (
              SELECT
                  0.2 * avg(l_quantity)
              FROM
                  lineitem
              WHERE
                  l_partkey = p_partkey
          );
    3. 返回結(jié)果如下,查詢耗時(shí)為305ms:

           avg_yearly
      ---------------------
       336452.465714285714
      (1 row)
      
      Time: 305.632 ms

通過(guò)以上示例可以看出,開(kāi)啟Dynamic Join Filter功能后,執(zhí)行時(shí)間從3468ms降低到305ms,有效地提升了執(zhí)行性能。