检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
优化器参数调整 本节将介绍影响GaussDB(DWS) SQL调优性能的关键CN配置参数,配置方法参见设置GUC参数。 表1 CN配置参数 参数/参考值 描述 enable_nestloop=on 控制查询优化器对嵌套循环连接(Nest Loop Join)类型的使用。当设置为“on”后,优化器优先使用Nest
例行重建索引 背景信息 数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。 数据库支持的索引类型包含B-tree索引、GIN索引和PSORT索引。 对于B-tree索引,例行重建索引可有效的提高查询效率。 如果数据发生大量删除
SQL调优进阶 SQL自诊断 语句下推调优 子查询调优 统计信息调优 算子级调优 数据倾斜调优 磁盘缓存主动预热调优 SQL语句改写规则 父主题: SQL调优
例行维护表 为了保证数据库的有效运行,数据库必须在插入/删除操作后,定期执行VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。 相关概念 使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因: VACUUM FU
GaussDB(DWS)业务读写阻塞,如何查看某个时间段的sql执行记录? 当您的数据库集群出现读写阻塞时,可通过TopSQL功能查看某个时间段所执行的sql语句,支持查看当前CN或者所有CN的sql语句。 TopSQL功能包括查看实时sql语句和历史sql语句: 实时sql语句查询请参见:实时TopSQL语句。
SQL查询执行流程 SQL引擎从接收SQL语句到执行SQL语句需要经历的步骤如图1和表1所示。其中,红色字体部分为DBA可以介入实施调优的环节。 图1 SQL引擎执行查询类SQL语句的流程 表1 SQL引擎执行查询类SQL语句的步骤说明 步骤 说明 1、语法&词法解析 按照约定的
SQL执行计划 SQL执行计划是一个节点树,显示GaussDB(DWS)执行一条SQL语句时执行的详细步骤。 使用EXPLAIN命令可以查看优化器为每个查询生成的具体执行计划。EXPLAIN给每个执行节点都输出一行,显示基本的节点类型和优化器为执行这个节点预计的开销值。 执行计划显示信息
审视和修改表定义 在分布式框架下,数据分布在各个DN上。一个或者几个DN的数据存在一块物理存储设备上,较好的表定义需要满足以下要求: 表数据均匀分布在各个DN上,以防止单个DN对应的存储设备空间不足造成集群有效容量下降。选择合适分布列,避免数据分布倾斜可以实现该点。 表Scan压
SMP并行执行 在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。 通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、网络、I/O等等。本质上SMP是一种以资源换取时间
SQL查询执行流程 SQL引擎从接收SQL语句到执行SQL语句需要经历的步骤如图1和表1所示。其中,红色字体部分为DBA可以介入实施调优的环节。 图1 SQL引擎执行查询类SQL语句的流程 表1 SQL引擎执行查询类SQL语句的步骤说明 步骤 说明 1、语法&词法解析 按照约定的
SQL执行计划 SQL执行计划是一个节点树,显示GaussDB(DWS)执行一条SQL语句时执行的详细步骤。 使用EXPLAIN命令可以查看优化器为每个查询生成的具体执行计划。EXPLAIN给每个执行节点都输出一行,显示基本的节点类型和优化器为执行这个节点预计的开销值。 执行计划显示信息
案例:NOT IN转NOT EXISTS NOT IN语句需要使用nestloop anti join来实现,而NOT EXISTS则可以通过hash anti join来实现。在join列不存在null值的情况下,not exists和not in等价。因此在确保没有null值时,可以通过将not
审视和修改表定义 在分布式框架下,数据分布在各个DN上。一个或者几个DN的数据存在一块物理存储设备上,较好的表定义需要满足以下要求: 表数据均匀分布在各个DN上,以防止单个DN对应的存储设备空间不足造成集群有效容量下降。选择合适分布列,避免数据分布倾斜可以实现该点。 表Scan压
SQL语句出错自动重试 GaussDB(DWS)支持在SQL语句执行出错时自动重试(下文简称CN Retry)。对于来自gsql客户端、JDBC、ODBC驱动的SQL语句,在SQL语句执行失败时,CN端能够自动识别语句执行过程中的报错,并重新下发任务进行自动重试。 该功能的限制和约束如下:
SQL语句出错自动重试 GaussDB(DWS)支持在SQL语句执行出错时自动重试(下文简称CN Retry)。对于来自gsql客户端、JDBC、ODBC驱动的SQL语句,在SQL语句执行失败时,CN端能够自动识别语句执行过程中的报错,并重新下发任务进行自动重试。 该功能的限制和约束如下:
案例:NOT IN转NOT EXISTS NOT IN语句需要使用nestloop anti join来实现,而NOT EXISTS则可以通过hash anti join来实现。在join列不存在null值的情况下,not exists和not in等价。因此在确保没有null值时,可以通过将not
SMP并行执行 在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。 通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、网络、I/O等等。本质上SMP是一种以资源换取时间
案例:改建分区表 逻辑上的一张表根据某种策略分成多个物理块进行存储,这张逻辑上的表称之为分区表,每个物理块则称为一个分区。一般对数据和查询都有明显区间段特征的表使用分区策略可通过较小不必要的数据扫描,从而提升查询性能 在查询时,可通过分区剪枝技术尽可能减少底层数据扫描,即缩小表的
案例:建立合适的索引 创建合适的索引可以加速对表中数据行的检索。索引占用磁盘空间,并且降低添加、删除和更新行的速度。如果需要非常频繁地更新数据或磁盘空间有限,则需要限制索引的数量。在表较大时再建立索引,表中的数据越多,索引的优越性越明显。建议仅在匹配如下某条原则时创建索引: 需要经常执行查询的字段。
案例:改建分区表 逻辑上的一张表根据某种策略分成多个物理块进行存储,这张逻辑上的表称之为分区表,每个物理块则称为一个分区。一般对数据和查询都有明显区间段特征的表使用分区策略可通过较小不必要的数据扫描,从而提升查询性能 在查询时,可通过分区剪枝技术尽可能减少底层数据扫描,即缩小表的