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

Persist plan and Query-Blocker

Persist plan功能支持在SQL參數(shù)化級(jí)別使Hints持久化。Query-Blocker功能支持參數(shù)化SQL的攔截,實(shí)現(xiàn)SQL防火墻的功能。本文適用于AnalyticDB MySQL版3.1.4及以上版本的集群。

功能介紹

在集群級(jí)別開啟高級(jí)優(yōu)化特性,可能影響范圍較大。通過(guò)Persist plan設(shè)置指定SQL的Hints,可以使Hints只對(duì)相同Pattern(即參數(shù)化后的SQL)的SQL生效。Persist plan規(guī)則支持通過(guò)系統(tǒng)表查看和刪除。

說(shuō)明
  • 通過(guò)Persist plan設(shè)置指定SQL的Hints時(shí),不會(huì)執(zhí)行當(dāng)前SQL。

  • 相同Pattern指用?替代SQL里的常量,例如SELECT、WHERE中的常量條件,LIMIT m、n等。

語(yǔ)法結(jié)構(gòu)

  • 計(jì)算SQL參數(shù)化后的Pattern和Sign:PARAMETERIZE $sql

  • 針對(duì)指定SQL Pattern,添加Hints:/*+hints*/ PERSIST_PLAN $sql

  • 針對(duì)指定SQL Pattern,刪除Hints:DELETE_PLAN $sqlDELETE_PLAN_BY_SIGN $Sign

  • 查詢指定SQL是否配置過(guò)Hints:

    • PERSIST_PLAN_CHECK $sql

    • SELECT * FROM INFORMATION_SCHEMA.KEPLER_PERSIST_PLAN_SUMMARY

  • 查詢配置過(guò)Hints的所有SQL Pattern:SELECT * FROM INFORMATION_SCHEMA.KEPLER_PERSIST_PLAN_SUMMARY

典型應(yīng)用:攔截SQL Pattern

使用/*+query_blocker=true*/ persist_plan + SQL,針對(duì)指定Pattern攔截同類型的Bad SQL。示例如下:

/*+query_blocker=true*/
PERSIST_PLAN
SELECT t1.c1
FROM t1
    INNER JOIN t2 ON t1.c1 = t2.c1
WHERE t1.c2 < 9999;

Persist Plan示例

  • 計(jì)算SQL參數(shù)化后的Pattern&Sign

    針對(duì)以下SQL計(jì)算其對(duì)應(yīng)的Pattern和Sign值,示例如下:

    PARAMETERIZE
    SELECT
      t1.c1
    FROM
      t1
      INNER JOIN t2 ON t1.c1 = t2.c1
    WHERE
      t1.c2 < 9999;

    執(zhí)行命令的結(jié)果如下:

    sign

    sql

    2506ed2c1f53ea59a1ef996a98a50411

    SELECT t1.c1 FROM t1 INNER JOIN t2 ON t1.c1 = t2.c1 WHERE t1.c2 < ?

  • 針對(duì)指定SQL Pattern,添加Hints

    為相同Pattern的SQL,執(zhí)行nested loop join策略,示例如下:

    /*+nested_loop_join=true*/
    PERSIST_PLAN
    SELECT t1.c1FROM t1
        INNER JOIN t2 ON t1.c1 = t2.c1
    WHERE t1.c2 < 9999;
  • 查詢指定SQL是否配置過(guò)Hints

    PERSIST_PLAN_CHECK
    SELECT t1.c1
    FROM t1
        INNER JOIN t2 ON t1.c1 = t2.c1
    WHERE t1.c2 < 9999;

    執(zhí)行命令的結(jié)果如下:

    sign

    Hints

    hitAppiled

    sql

    2506ed2c1f53ea59a1ef996a98a50411

    nested_loop_join=true

    12

    SELECT t1.c1 FROM t1 INNER JOIN t2 ON t1.c1 = t2.c1 WHERE t1.c2 < ?

    說(shuō)明
    • PERSIST_PLAN_CHECK $sql命令在DMS數(shù)據(jù)管理服務(wù)系統(tǒng)中執(zhí)行時(shí),執(zhí)行命令成功,但不會(huì)顯示上表中的結(jié)果。若您想看到具體返回信息,請(qǐng)登錄MySQL客戶端執(zhí)行。

    • 返回結(jié)果中,hitApplied字段表示創(chuàng)建該規(guī)則后被應(yīng)用的次數(shù),若更新該規(guī)則,hitApplied字段會(huì)清零,重新開始計(jì)數(shù)。

  • 查詢配置過(guò)Hints的所有SQL Pattern

    SELECT * FROM INFORMATION_SCHEMA.KEPLER_PERSIST_PLAN_SUMMARY;
  • 針對(duì)指定SQL Pattern,刪除Hints

    AnalyticDB MySQL版支持刪除指定SQL Pattern的Hints,您可以選擇以下任意一種實(shí)現(xiàn)方式:

    • 使用DELETE_PLAN $sql命令,刪除Hints。

      DELETE_PLAN
      SELECT t1.c1
      FROM t1
          INNER JOIN t2 ON t1.c1 = t2.c1
      WHERE t1.c2 < 9999;
    • 使用DELETE_PLAN_BY_SIGN命令,根據(jù)Sign值刪除Hints。

      DELETE_PLAN_BY_SIGN 2506ed2c1f53ea59a1ef996a98a50411;
      說(shuō)明

      查詢SQL Pattern的Sign值有以下兩種方法:

      • 通過(guò)PARAMETERIZE $sql,在返回結(jié)果中查看Sign值。

      • 通過(guò)SELECT * FROM INFORMATION_SCHEMA.KEPLER_PERSIST_PLAN_SUMMARY,在返回結(jié)果中查看Sign值。