在GBase 8c数据库中,执行计划性能调优是一个重要的环节。它涉及到对数据库查询的效率和性能进行优化。以下是一些关于GBase 8c执行计划性能调优的建议和步骤:
执行计划显示信息
- EXPLAIN statement:只生成执行计划,不实际执行。其中statement代表SQL语句。
- EXPLAIN ANALYZE statement:生成执行计划,进行执行,并显示执行的概要信息。显示中加入了实际的运行时间统计,包括在每个规划节点内部花掉的总时间(以毫秒计)和它实际返回的行数。
- EXPLAIN PERFORMANCE statement:生成执行计划,进行执行,并显示执行期间的全部信息。当定位SQL运行慢问题时,如果SQL长时间运行未结束,建议通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及其实际的运行信息,以便更精准地定位问题原因。
调优流程
1)收集SQL中涉及到的所有表的统计信息。
在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左右性能问题是因为没有收集统计信息。具体请参见更新统计信息。
2)通过查看执行计划来查找原因。
如果SQL长时间运行未结束,通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精准地定位问题原因。
3)审视和修改表定义。
4)针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体参见典型SQL调优点。
5)通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。
语法格式
显示SQL语句的执行计划,支持多种选项,对选项顺序无要求。
EXPLAIN [ ( option [, ...] ) ] statement;
其中选项option子句的语法为。
ANALYZE [ boolean ] |
ANALYSE [ boolean ] |
VERBOSE [ boolean ] |
COSTS [ boolean ] |
CPU [ boolean ] |
BUFFERS [ boolean ] |
TIMING [ boolean ] |
PLAN [ boolean ] |
FORMAT { TEXT | XML | JSON | YAML }
显示SQL语句的执行计划,且要按顺序给出选项。
EXPLAIN { [ { ANALYZE | ANALYSE } ] [ VERBOSE ] | PERFORMANCE } statement;
参数说明
- statement
指定要分析的SQL语句。
- ANALYZE boolean | ANALYSE boolean
显示实际运行时间和其他统计数据。
取值范围:
TRUE(缺省值):显示实际运行时间和其他统计数据。
FALSE:不显示。
- VERBOSE boolean
显示有关计划的额外信息。
取值范围:
TRUE(缺省值):显示额外信息。
FALSE:不显示。
- COSTS boolean
包括每个规划节点的估计总成本,以及估计的行数和每行的宽度。
取值范围:
TRUE(缺省值):显示估计总成本和宽度。
FALSE:不显示。
- CPU boolean
打印CPU的使用情况的信息。
取值范围:
TRUE(缺省值):显示CPU的使用情况。
FALSE:不显示。
- BUFFERS boolean
包括缓冲区的使用情况的信息。
取值范围:
TRUE:显示缓冲区的使用情况。
FALSE(缺省值):不显示。
- TIMING boolean
包括实际的启动时间和花费在输出节点上的时间信息。
取值范围:
TRUE(缺省值):显示启动时间和花费在输出节点上的时间信息。
FALSE:不显示。
- PLAN
是否将执行计划存储在plan_table中。当该选项开启时,会将执行计划存储在PLAN_TABLE中,不打印到当前屏幕,因此该选项为on时,不能与其他选项同时使用。
取值范围:
ON(缺省值):将执行计划存储在plan_table中,不打印到当前屏幕。执行成功返回EXPLAIN SUCCESS。
OFF:不存储执行计划,将执行计划打印到当前屏幕。
- FORMAT
指定输出格式。
取值范围:TEXT、XML、JSON和YAML。
默认值:TEXT。
- PERFORMANCE
使用此选项时,即打印执行中的所有相关信息。
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。