云服务器内容精选

  • 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。多个表扫描出的多个结果位图之间可再做 BitmapAnd或者BitmapOr操作,相比于Index Scan还需要对表与表之间筛选出来的元组进行比对,可减少过滤时间。 Bitmap Heap Scan,位图堆扫描,该算子的下层通常有Bitmap Index Scan,作用为通过扫描下层算子返回的位图(bitmap)来判断哪些元组符合条件并取出然后向上返回。当优化器通过代价估算选择采用Bitmap Index Scan的扫描方式,且需要返回符合条件的元组时,通常上层会配套使用Bitmap Heap Scan来通过扫描位图过滤选取元组并返回。 BitmapOr,位图或操作,该算子作用为将下层的bitmap进行或操作,返回操作后的位图。 BitmapAnd,位图与操作,该算子作用为将下层的bitmap进行与操作,返回操作后的位图。 使用Bitmap Index Scan和Bitmap Heap Scan的前提条件为:GUC参数enable_bitmapscan设置为on。
  • 算子说明 在索引扫描中,数据库使用语句指定的索引列,通过遍历索引树来检索行。数据库为一个值扫描索引时,发生n次I/O 就能找到其要查找的值,其中n即B-tree索引的高度。Index Scan通常用于检索表数据,数据库以轮流方式先读取索引块,找到对应的索引键值,然后通过索引键对应的tid去读取相应的表元组。在数据量大,但是查询结果集较小的场景下,Index Scan的效率往往高于Seq Scan。
  • 典型场景 查询某个表中的特定行:当查询语句中包含WHERE子句时,如果WHERE子句中的条件可以通过索引列进行匹配,那么 GaussDB 就可能会使用Index Scan来查找符合条件的行。 排序:当查询语句中包含ORDER BY子句时,如果ORDER BY子句中的列可以通过索引进行排序,那么GaussDB就可能会使用Index Scan来进行排序操作。 聚合:当查询语句中包含GROUP BY子句时,如果GROUP BY子句中的列可以通过索引进行分组,那么GaussDB就可能会使用Index Scan来进行聚合操作。 连接:当查询语句中包含JOIN操作时,如果JOIN操作中的列可以通过索引进行匹配,那么GaussDB就可能会使用Index Scan来进行连接操作。
  • 算子说明 Sample Scan是一种扫描表的方式,它可以在查询过程中随机地从表中抽取一部分数据进行查询,而不是扫描整个表。Sample Scan配合TABLESAMPLE关键字使用,使用方式为[ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]。这种技术通常用于大型表或者需要随机抽样的查询场景,可以提高查询效率。
  • 示例 示例:采样查询 --数据准备。 gaussdb=# CREATE TABLE t1 (c1 number, c2 number, c3 number); CREATE TABLE gaussdb=# INSERT INTO t1 VALUES (generate_series(1,100), 2, 3); INSERT 0 100 --执行结果。 gaussdb=# EXPLAIN SELECT c1 FROM t1 tablesample system(10); QUERY PLAN ---------------------------------------------------- Sample Scan on t1 (cost=0.00..272.00 rows=10000 width=6) Sampling: system (10::double precision) (2 rows) --删除。 gaussdb=# DROP TABLE t1; 上述示例中,Sample Scan算子输出信息如下所示。 信息名称 含义 Sample Scan 算子的名称。 Sampling 算子采样的方式,示例中采用system作为采样方法,采样的比例为10%。
  • 算子说明 在GaussDB中,Foreign Scan是一种用于访问外部数据源的扫描器。它可以将外部数据源中的数据作为关系型数据库中的表来处理,从而实现对外部数据源的查询和操作。在GaussDB中,Foreign Scan可以通过扩展API来实现。用户可以编写自己的扩展程序,以实现对外部数据源的访问和操作。同时,GaussDB还提供了一些常用的扩展程序,如FDW(Foreign Data Wrapper),可以用于访问其他关系型数据库中的数据。
  • 算子说明 WorkTable Scan是一种基于内存的查询优化技术,它可以将查询结果缓存在内存中,以提高查询性能。当GaussDB执行一个查询语句时,它会将查询结果存储在一个临时表中,然后使用WorkTable Scan来扫描这个临时表,以获取查询结果。WorkTable Scan的优点是可以减少磁盘I/O操作,提高查询性能。但是,它也有一些缺点,比如会消耗大量的内存空间,可能会导致内存溢出等问题。因此,在使用WorkTable Scan时,需要根据具体情况进行调整和优化。
  • 示例 示例:调用系统函数。 gaussdb=# EXPLAIN SELECT * FROM generate_series(2,4); QUERY PLAN ------------------------------------------------------------------------ Function Scan on generate_series (cost=0.00..10.00 rows=1000 width=4) (1 row) 上述示例中,Function Scan算子输出信息如下所示。 信息名称 含义 Function Scan 算子的名称。
  • 示例 示例:调用系统函数。 gaussdb=# EXPLAIN SELECT * FROM generate_series(2,4); QUERY PLAN ------------------------------------------------------------------------ Function Scan on generate_series (cost=0.00..10.00 rows=1000 width=4) (1 row)
  • 算子说明 行号扫描,该算子主要利用行号(ctid)过滤元组并返回。ASTORE场景下,数据按行存储在HEAP PAGE中,在B-tree 索引中除了存储字段的value,还会存储对应的行号,因此GaussDB中支持通过行号进行快速检索。 行号的写法为: (page_number,item_number) -- page_number从0开始编号,item_number从1开始编号 通过给定的ctid值找到在磁盘或缓存中对应的元组。
  • 算子说明 WorkTable Scan是一种基于内存的查询优化技术,它可以将查询结果缓存在内存中,以提高查询性能。当GaussDB执行一个查询语句时,它会将查询结果存储在一个临时表中,然后使用WorkTable Scan来扫描这个临时表,以获取查询结果。WorkTable Scan的优点是可以减少磁盘I/O操作,提高查询性能。但是,它也有一些缺点,比如会消耗大量的内存空间,可能会导致内存溢出等问题。因此,在使用WorkTable Scan时,需要根据具体情况进行调整和优化。
  • 算子说明 在索引扫描中,数据库使用语句指定的索引列,通过遍历索引树来检索行。数据库为一个值扫描索引时,发生n次 I/O 就能找到其要查找的值,其中 n 即 B-tree索引的高度。Index Scan通常用于检索表数据,数据库以轮流方式先读取索引块,找到对应的索引键值,然后通过索引键对应的tid去读取相应的表元组。在数据量大,但是查询结果集较小的场景下,Index Scan的效率往往高于Seq Scan。
  • 典型场景 查询某个表中的特定行:当查询语句中包含WHERE子句时,如果WHERE子句中的条件可以通过索引列进行匹配,那么GaussDB就可能会使用Index Scan来查找符合条件的行。 排序:当查询语句中包含ORDER BY子句时,如果ORDER BY子句中的列可以通过索引进行排序,那么GaussDB就可能会使用Index Scan来进行排序操作。 聚合:当查询语句中包含GROUP BY子句时,如果GROUP BY子句中的列可以通过索引进行分组,那么GaussDB就可能会使用Index Scan来进行聚合操作。 连接:当查询语句中包含JOIN操作时,如果JOIN操作中的列可以通过索引进行匹配,那么GaussDB就可能会使用Index Scan来进行连接操作。
  • 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。多个表扫描出的多个结果位图之间可再做BitmapAnd或者BitmapOr操作,相比于Index Scan还需要对表与表之间筛选出来的元组进行比对,可减少过滤时间。 Bitmap Heap Scan,位图堆扫描,该算子的下层通常有Bitmap Index Scan,作用为通过扫描下层算子返回的位图(bitmap)来判断哪些元组符合条件并取出然后向上返回。当优化器通过代价估算选择采用Bitmap Index Scan的扫描方式,且需要返回符合条件的元组时,通常上层会配套使用Bitmap Heap Scan来通过扫描位图过滤选取元组并返回。 BitmapOr,位图或操作,该算子作用为将下层的bitmap进行或操作,返回操作后的位图。 BitmapAnd,位图与操作,该算子作用为将下层的bitmap进行与操作,返回操作后的位图。 使用Bitmap Index Scan和Bitmap Heap Scan的前提条件为:GUC参数enable_bitmapscan设置为on。
  • 算子说明 在GaussDB中,Foreign Scan是一种用于访问外部数据源的扫描器。它可以将外部数据源中的数据作为关系型数据库中的表来处理,从而实现对外部数据源的查询和操作。在GaussDB中,Foreign Scan可以通过扩展API来实现。用户可以编写自己的扩展程序,以实现对外部数据源的访问和操作。同时,GaussDB还提供了一些常用的扩展程序,如FDW(Foreign Data Wrapper),可以用于访问其他关系型数据库中的数据。
提示

您即将访问非华为云网站,请注意账号财产安全