检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
查询表上指定。对于hdfs内表,由主表和delta表组成,delta表对用户不可见,故hint仅作用在主表上。 示例 为了hint使用索引扫描,需要首先在表item的i_item_sk列上创建索引,名称为i: 1 create index i on item(i_item_sk);
和灵活性。因而,GaussDB(DWS)中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。 GaussDB(DWS)扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为字符串。SQL语言的定义允许将常量字符串声明为具体的类型。例如:
和灵活性。因而,GaussDB(DWS)中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。 GaussDB(DWS)扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为字符串。SQL语言的定义允许将常量字符串声明为具体的类型。例,下面查询:
索引不合理 在基表扫描时,满足下述条件则上报相关告警: 对于行存表: 使用索引扫描,输出行数/扫描行数>1/1000且输出行数>1万行。 使用顺序扫描,输出行数/扫描行数<1/1000且输出行数<=1万行、扫描行数>1万行。 对于列存表: 使用索引扫描,输出行数/扫描行数>1/10000且输出行数>100。
索引不合理 在基表扫描时,满足下述条件则上报相关告警: 对于行存表: 使用索引扫描,输出行数/扫描行数>1/1000且输出行数>1万行。 使用顺序扫描,输出行数/扫描行数<1/1000且输出行数<=1万行、扫描行数>1万行。 对于列存表: 使用索引扫描,输出行数/扫描行数>1/10000且输出行数>100。
有访问特定索引的统计信息。 索引可以通过简单的索引扫描或“位图”索引扫描进行使用。位图扫描中几个索引的输出可以通过AND或者OR规则进行组合, 因此当使用位图扫描的时候,很难将独立对行抓取与特定索引进行组合, 因此,一个位图扫描增加pg_stat_all_indexes.idx_
有访问特定索引的统计信息。 索引可以通过简单的索引扫描或“位图”索引扫描进行使用。位图扫描中几个索引的输出可以通过AND或者OR规则进行组合, 因此当使用位图扫描的时候,很难将独立对行抓取与特定索引进行组合, 因此,一个位图扫描增加pg_stat_all_indexes.idx_
enable_indexscan=on 控制优化器对索引扫描规划类型的使用。 enable_indexonlyscan=on 控制优化器对仅索引扫描规划类型的使用。 enable_seqscan=on 控制优化器对顺序扫描规划类型的使用。完全消除顺序扫描是不可能的,但是关闭这个变量会让优化器在存在其他方法的时候优先选择其他方法。
enable_indexscan=on 控制优化器对索引扫描规划类型的使用。 enable_indexonlyscan=on 控制优化器对仅索引扫描规划类型的使用。 enable_seqscan=on 控制优化器对顺序扫描规划类型的使用。完全消除顺序扫描是不可能的,但是关闭这个变量会让优化器在存在其他方法的时候优先选择其他方法。
优化时应当优先考虑此算子的优化。 算子级调优示例 示例1:基表扫描时,对于点查或者范围扫描等过滤大量数据的查询,如果使用SeqScan全表扫描会比较耗时,可以在条件列上建立索引选择IndexScan进行索引扫描提升扫描效率。 1 2 3 4 5 6 7 8 9 10
优化时应当优先考虑此算子的优化。 算子级调优示例 示例1:基表扫描时,对于点查或者范围扫描等过滤大量数据的查询,如果使用SeqScan全表扫描会比较耗时,可以在条件列上建立索引选择IndexScan进行索引扫描提升扫描效率。 1 2 3 4 5 6 7 8 9 10
执行计划中的常见关键字说明: 表访问方式 Seq Scan/CStore Scan 全表顺序扫描。最基本的扫描算子,用于行/列存表的顺序扫描。 Index Scan/CStore Index Scan 行/列存表的索引扫描。行/列存表上存在索引,条件列为索引列。 优化器决定使用两步的规划:最底层的
对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。 cpu_tuple_cost 参数说明:设置优
对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。 cpu_tuple_cost 参数说明:设置优
执行计划中的常见关键字说明: 表访问方式 Seq Scan/CStore Scan 全表顺序扫描。最基本的扫描算子,用于行/列存表的顺序扫描。 Index Scan/CStore Index Scan 行/列存表的索引扫描。行/列存表上存在索引,条件列为索引列。 优化器决定使用两步的规划:最底层的
空间优势和顺序扫描性能优势将不复存在)。 场景2:脏数据&数据清理 某业务SQL总执行时间2.519s,其中Scan占了2.516s,同时该表的扫描最终只扫描到0条符合条件数据,过滤了20480条数据,即总共扫描了20480+0条数据却消耗了2s+,扫描时间与扫描数据量严重不符,
SMP适用场景: 支持并行的算子 计划中存在以下算子支持并行: Scan:支持行存普通表和行存分区表顺序扫描、列存普通表和列存分区表顺序扫描、HDFS内外表顺序扫描;支持GDS数据导入的外表扫描并行。以上均不支持复制表。 Join:HashJoin、NestLoop Agg:HashAgg
SMP适用场景: 支持并行的算子 计划中存在以下算子支持并行: Scan:支持行存普通表和行存分区表顺序扫描、列存普通表和列存分区表顺序扫描、HDFS内外表顺序扫描;支持GDS数据导入的外表扫描并行。以上均不支持复制表。 Join:HashJoin、NestLoop Agg:HashAgg
多个桶的数据源数据之间使用分隔符‘|’进行分割,LOCATION 'obs://bucket1/folder/ | obs://bucket2/',数据库将会扫描指定路径文件夹下面的所有对象。 format 外表中数据源文件的格式。 取值范围:CSV、TEXT,缺省值为TEXT。GaussDB(DWS)只支持CSV和TEXT格式。
系统IO长期飙升过高,查询偶发性变慢。 查看偶发慢业务慢时的执行计划信息,慢在cstore scan,且扫描数据量不大但扫描CU个数较多。 如图,一个CU能够存放6W条记录,而计划中7W记录需要扫描2000+ CU,说明当前可能存在小CU较多的情况 。 排查方法 查看相关表CU中数据分布情况,以下操作在DN执行。