暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB数据库-优化器GUC参数的Hint

CY 学数据库 2023-11-20
441

功能描述

设置本次查询执行内生效的查询优化相关GUC参数。hint的推荐使用场景可以参考各guc参数的说明,此处不作赘述。

语法格式

set( [@queryblock] param value)

参数说明

  • @queryblock 见指定Hint所处的查询块Queryblock章节,可省略,表示在当前查询块生效,该hint只在指定为最外层的queryblock时才会生效。
  • param:表示参数名。
  • value:表示参数的取值。
  • 目前支持使用Hint设置生效的参数有:
    • 布尔类:

      enable_bitmapscan,enable_hashagg,enable_hashjoin,enable_indexscan,enable_indexonlyscan,enable_gsiscan,enable_material,enable_mergejoin,enable_nestloop,enable_index_nestloop,enable_seqscan,enable_sort,enable_tidscan,enable_stream_operator,enable_stream_recursive,enable_broadcast,enable_fast_query_shipping,enable_trigger_shipping,enable_remotejoin,enable_remotegroup,enable_remotelimit,enable_remotesort,enable_inner_unique_opt

    • 整形类:

      best_agg_plan,query_dop

    • 浮点类:

      cost_weight_index,default_limit_rows,seq_page_cost,random_page_cost,cpu_tuple_cost,cpu_index_tuple_cost,cpu_operator_cost,effective_cache_size

    • 枚举类:

      try_vector_engine_strategy

    • 字符串类:

      node_name

      通过设置node_name可以指定当前的sql下发到node_name对应的dn上去执行。

      示例:

      select /*+ set(node_name datanode1) */ from table_name;

      其中,datanode1是从 pgxc_node 系统表里查询出来的数据节点的名称(不用加引号),table_name 是表名。该查询表示直接去datanode1上执行查询。

      须知:

      • node_name只支持在select语句里设置,如果在其他语句里设置将会不生效。
      • node_name只支持设置data node名字,不支持设置coodninator名字。
      • node_name不支持通过SET语句进行修改,只能用在plan hint里。
      • node_name不支持通过gs_guc进行修改。
      • node_name仅支持简单查询语句,不支持带union,union all子查询,多表关联等复杂查询语句。
      • 支持普通用户执行。
      • 不支持与行级访问控制同时使用,同时使用会报错。
  • 说明:
    • 设置不在白名单中的参数,参数取值不合法,或hint语法错误时,不会影响查询执行的正确性。使用explain(verbose on)执行可以看到hint解析错误的报错提示。
    • GUC参数的hint只在最外层查询生效,子查询内的GUC参数hint不生效。
    • 视图定义内的GUC参数hint不生效。
    • CREATE TABLE ... AS ... 查询最外层的GUC参数hint可以生效。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论