SQL引擎从接受SQL语句到执行SQL语句需要经历的步骤如图1和表1所示。其中,红色字体部分为DBA可以介入实施调优的环节。 图1 SQL引擎执行查询类SQL语句的流程 表1 SQL引擎执行查询类SQL语句的步骤说明 步骤 说明 语法&am…
SQL调优的唯一目的是“资源利用最大化”,即CPU、内存、磁盘IO、网络IO四种资源利用最大化。所有调优手段都是围绕资源使用开展的。所谓资源利用最大化是指SQL语句尽量高效,节省资源开销,以最小的代价实现最大的效益。比如做典型点查询的时候,…
对慢SQL语句进行分析,通常包括以下步骤: 操作步骤 收集SQL中涉及到的所有表的统计信息。在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左…
在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。 背景信息 ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。…
根据数据库的SQL执行机制以及大量的实践,总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。如果遵守这些规则,常常能够大幅度提升业务查询效率。 使用union all代替union union在合并两个…
本节将介绍影响GaussDB SQL调优性能的关键CN配置参数。 表1 CN配置参数 参数/参考值 描述 enable_nestloop=on 控制查询优化器对嵌套循环连接(Nest Loop Join)类型的使用。当设置为“on”后,优化…
在某些场景下,数据类型的隐式转换可能会导致潜在的性能问题。请看如下的场景: SET enable_fast_query_shipping = off; CREATE TABLE t1(c1 VARCHAR, c2 VARCHAR); CRE…
GaussDB数据库支持行执行引擎和向量化执行引擎,分别对应行存表和列存表。列存表和向量化执行引擎具有以下优点: 一次一个batch,读取更多数据,节省IO。 batch中记录较多,CPU cache命中率提升。 Pipeline模式执行,…
SQL PATCH主要设计给DBA、运维人员及其他需要对SQL进行调优的角色使用,用户通过其他运维视图或定位手段识别到业务语句存在计划不优导致的性能问题时,可以通过创建SQL PATCH对业务语句进行基于Hint的调优。目前支持行数、扫描方…
该特性是数据库内核开发人员对慢SQL深度分析使用的特性,不建议非内核开发人员使用。 该特性开启后,会在执行DML期间记录优化器相关信息到系统表中,这样会导致原本的读事务变成了写事务,从而导致要求必须在读事务里执行的函数无法执行,例如函数pg…