检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
dop_num表示使用表扫描的并行度。 scandop指定扫描并行度的hint。
dop_num表示使用表扫描的并行度。 scandop指定扫描并行度的hint。
参数: scan_target:指定扫描对象,取值必须是schema、table或column的名称,但必须指定扫描对象的上级名称,比如扫描某列传入扫描对象为scheme_name.table_name.column_name。
参数: scan_target:指定扫描对象,取值必须是schema、table或column的名称,但必须指定扫描对象的上级名称,比如扫描某列传入扫描对象为scheme_name.table_name.column_name。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
问题分析 对于全表扫描场景下的长查询(例如持续两小时以上),在扫描到某个页面前,该页面发生大量集中并发更新(例如十万次以上更新),后续扫描到该页面时,需要访问大量历史版本获取可见元组(MVCC机制),由于单页扫描期间持有页面读锁,若此时刚好需要写入该页面,写入会被阻塞,直到页面元组读取完成
问题分析 对于全表扫描场景下的长查询(例如持续两小时以上),在扫描到某个页面前,该页面发生大量集中并发更新(例如十万次以上更新),后续扫描到该页面时,需要访问大量历史版本获取可见元组(MVCC机制),由于单页扫描期间持有页面读锁,若此时刚好需要写入该页面,写入会被阻塞,直到页面元组读取完成
如果以普通表的方式设计表结构则需要访问表全量的数据(Full Table Scan),如果以日期为分区键重新设计该表,那么原有的全表扫描会被优化成为分区扫描。当表内的数据量很大同时具有很长的历史周期时,由于扫描数据缩减所带来的性能提升会有明显的效果,如图2所示。
如果以普通表的方式设计表结构则需要访问表全量的数据(Full Table Scan),如果以日期为分区键重新设计该表,那么原有的全表扫描会被优化成为分区扫描。当表内的数据量很大同时具有很长的历史周期时,由于扫描数据缩减所带来的性能提升会有明显的效果,如图2所示。
Sample Scan 算子说明 Sample Scan是一种扫描表的方式,它可以在查询过程中随机地从表中抽取一部分数据进行查询,而不是扫描整个表。
Bitmap 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
表设计 总体上讲,良好的表设计需要遵循以下原则: 减少需要扫描的数据量。通过分区表的剪枝机制可以大幅减少数据的扫描量。 尽量减少随机I/O。通过聚簇可以实现热数据的连续存储,将随机I/O转换为连续I/O,从而减少扫描的I/O代价。
Seq Scan 算子说明 Seq Scan算子是所有扫描算子中具有普适性的一种,这个算子本质上的原理为对表按某个方向(前向/后向)进行顺序扫描,然后返回符合筛选条件的所有行。 典型场景 表无索引,需要对表进行扫描操作。 表有索引,但需要对表大部分数据进行扫描操作。
对于需要重复多次扫描的子节点(特别是扫描结果每次都相同时)可以减少执行代价。 典型场景 当查询语句涉及子查询,需要多次查询同一批数据时,优化器会选择Materialize算子来缓存子查询的结果,从而大大减少扫描的执行时间。
执行计划将显示SQL语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的JOIN算法。 执行计划的最关键的部分是语句的预计执行开销,影响计划生成器估算执行该语句将花费多长的时间。