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

過濾條件不下推

更新時間:

本文介紹過濾條件不下推的使用場景與方法。

功能介紹

云原生數(shù)據(jù)倉庫AnalyticDB MySQL版在創(chuàng)建表時,默認為所有的字段創(chuàng)建了索引,使數(shù)據(jù)過濾的效率更高。然而在某些場景中,使用索引過濾數(shù)據(jù)不一定能得到較好的性能,甚至會影響整體性能。此時不建議繼續(xù)使用索引進行數(shù)據(jù)過濾。雖然用戶可以手動刪除某些字段的索引,但這種做法可能導致需要使用索引時卻沒有索引可用的問題。云原生數(shù)據(jù)倉庫AnalyticDB MySQL版過濾條件不下推功能,可以在查詢級別或?qū)嵗墑e暫時蔽掉某些字段的過濾條件下推能力,帶來更好整體查詢收益。

以下場景不建議使用索引過濾數(shù)據(jù):

  • 數(shù)據(jù)唯一值少。數(shù)據(jù)唯一值較少,意味著數(shù)據(jù)經(jīng)過過濾后返回的數(shù)據(jù)仍然很多,那么使用索引進行數(shù)據(jù)過濾的效果可能不一定好。

  • 磁盤IO壓力大。如果用戶業(yè)務的查詢特征是占用較多的IO資源,或者數(shù)據(jù)寫入較多導致占用了較多IO資源,那么使用索引進行數(shù)據(jù)過濾時,存在磁盤IO資源的爭搶,過濾效果也可能較差。

  • 同時有多個條件下推,且下推的條件中有LIKE、字符串比較等比較復雜的操作時,會對存儲節(jié)點相關(guān)資源消耗很大,影響整體的性能。

查看過濾條件是否下推

您可以通過執(zhí)行頁面查看過濾條件是否下推。

  1. 在查詢的執(zhí)行計劃頁簽,單擊包含TableScan算子的Stage。

    說明

    進入執(zhí)行計劃頁簽的步驟,請參見查看診斷結(jié)果

  2. 單擊查看Stage計劃

  3. 在Stage計劃頁面,單擊TableScan算子。

  4. 在右側(cè)屬性中,查看是否顯示PushedDownFilter屬性。如果顯示,表示該過濾條件已下推;否則表示沒有下推的過濾條件。sql-exe-plan-attribute

    說明

    通過執(zhí)行計劃,也可以確認過濾條件是否下推。

    • 彈性模式的集群,您可以查看下游Stage的執(zhí)行計劃中是否顯示Filter算子。如果顯示則表示該算子相關(guān)的過濾條件沒有下推。

    • 預留模式的集群,您可以查看當前Stage計劃中是否顯示Filter算子。如果顯示則表示該算子相關(guān)的過濾條件沒有下推。

查詢級別關(guān)閉特定字段的過濾條件下推能力

針對某個查詢,使用Hint關(guān)閉某些字段的過濾條件下推。只對使用了Hint的查詢生效,其他查詢不受影響。

語法

  • 內(nèi)核版本為3.1.4及以上,請使用下面的Hint:

    /*+ filter_not_pushdown_columns=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
  • 內(nèi)核版本為3.1.4以下,請使用下面的Hint:

    /*+ no_index_columns=[table1.colName1;colName2,table2.colName1] */
重要
  • 關(guān)閉特定字段的過濾條件下推能力既支持對同一個數(shù)據(jù)庫中的表使用Hint,也支持對不同數(shù)據(jù)庫中的表使用Hint。當3.1.4以下版本,跨庫使用Hint時,需要保證兩個庫中的表名不同,否則Hint可能會影響到不需要生效的表。3.1.4及以上版本的Hint通過Schema.table區(qū)分不同表,對不同庫中相同表名的表使用Hint時,不會影響查詢結(jié)果。

  • 查詢內(nèi)核版本的方法,請參見如何查看實例版本信息。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。

示例

  • 示例1:

    以3.1.4及以上的內(nèi)核版本為例,當前查詢,包含數(shù)據(jù)庫test01的表table01中字段idproduct的過濾條件不會下推。

    /*+ filter_not_pushdown_columns=[test01.table01:id|product] */
  • 示例2:

    以3.1.4及以上的內(nèi)核版本為例,當前查詢,包含數(shù)據(jù)庫test01的表table01中字段idproduct,數(shù)據(jù)庫test02的表table03中字段key的過濾條件不會下推。

    /*+ filter_not_pushdown_columns=[test01.table01:id|product;test02.table03:key] */
  • 示例3:

    以3.1.4以下的內(nèi)核版本為例,當前查詢,包含表table02中字段idproduct,表table03中字段key的過濾條件不會下推。

    /*+ no_index_columns=[table02.id;product,table03.key] */

集群級別關(guān)閉特定字段的過濾條件下推能力

您可以執(zhí)行以下命令,對當前集群的所有查詢,關(guān)閉特定字段的過濾條件下推能力。

語法

  • 內(nèi)核版本為3.1.4及以上版本,請使用下方語句:

    set adb_config filter_not_pushdown_columns=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2]
  • 內(nèi)核版本為3.1.4以下,請使用下面的語句:

    set adb_config no_index_columns=[tableName1.colName1;colName2,tableName2.colName1]
重要
  • 關(guān)閉特定字段的過濾條件下推能力既支持對同一個數(shù)據(jù)庫中的表使用Hint,也支持對不同數(shù)據(jù)庫中的表使用Hint。當3.1.4以下版本,跨庫使用Hint時,需要保證兩個庫中的表名不同,否則Hint可能會影響到不需要生效的表。3.1.4及以上版本的Hint通過Schema.table區(qū)分不同表,對不同庫中相同表名的表使用Hint時,不會影響查詢結(jié)果。

  • 查詢內(nèi)核版本的方法,請參見如何查看實例版本信息。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。

示例

以3.1.4及以上的內(nèi)核版本為例,當前集群的所有查詢中,只要過濾條件包含數(shù)據(jù)庫test02的表table02中字段id,該過濾條件就不下推。

set adb_config filter_not_pushdown_columns=[test02.table02:id]