达梦数据库SQL调优 您所在的位置:网站首页 sql怎么调优 达梦数据库SQL调优

达梦数据库SQL调优

2024-01-10 22:45| 来源: 网络整理| 查看: 265

一、概述

SQL 调优作为数据库性能调优中的最后一个环节,对查询性能产生着直接的影响。在进 行正式的 SQL 调优前,用户首先要关注下列几点:

1.达梦数据库安装时的配置参数是否符合应用场景需求;

2.达梦数据库的 INI 配置文件中各项参数是否已经处于最优配置;

3.应用系统中数据库设计是否合理。

二、目标

SQL 调优的整体目标是使用最优的执行计划,这意味着 IO 以及 CPU 代价最小。具体而言调优主要关注下列方面:

1、表扫描

如果计划中对某大表使用了全索引扫描,那么用户需要关注是否存在着该表的某个查询 条件使得过滤后可以淘汰至少一半的数据量。通过添加相应的索引,全索引扫描可能被转换 为范围扫描或等值查找。

添加的二级索引可以包含该表上所有被选择项以避免 BLKUP2 操作 符的查找操作带来的第二次 IO 开销,但无疑这会增加二级索引的大小。用户需权衡二者的 利弊以选择正确的处理方式。

2、连接操作的顺序和类型

多表连接时,不同的连接顺序会影响中间结果集数量的大小,这时调优的目标就是要找到一种能使中间结果保持最小的连接顺序。

对于给定的一个连接或半连接,DM 可以用 HASH 连接、嵌套循环连接、索引连接或者是归并连接实现。通过分析表的数据量大小和索引信息,SQL 调优目标是选择最适宜的操作符。

对半连接而言,HASH 连接还可细分为左半 HASH 和右半 HASH。用户可以通过始终对数据量小的一侧建立 HASH 来进行调优。

3、分组操作

分组操作往往要求缓存所有数据以找到属于同一组的所有数据,在大数据量情况下这会 带来大量的 IO。用户应该检查 SQL 查询和表上索引信息,如果可以利用包含分组列的索引, 那么执行计划就会使用排序分组从而不用缓存中间结果。

三、确定高负载的 SQL

在打开监控开关(ENABLE_MONITOR=1、MONITOR_TIME=1)后,可以通过查询动态视图 V$LONG_EXEC_SQLS 或 V$SYSTEM_LONG_EXEC_SQLS来确定高负载的 SQL 语句。 前者显示最近 1000 条执行时间较长的 SQL 语句,后者显示服务器启动以来执行时间最长的20 条 SQL 语句。例如:

SELECT * FROM V$LONG_EXEC_SQLS;

或者:

SELECT * FROM V$SYSTEM_LONG_EXEC_SQLS; 四、自动 SQL 调整

使用查询优化向导工具,输入需要进行调整的 SQL 语句,向导工具将在分析完执行计划 后给出推荐索引的提示。用户只需按提示建立相应索引即可。

五、开发有效的SQL语句

SQL 语言是一种相当灵活的结构化查询语言。用户可以利用多种不同形式的查询语句完成相同的查询功能。为了使执行效率达到最优,用户需要参考以下原则以开发出有效的 SQL语句:

1.避免使用 OR 子句

OR 子句在实际执行中会被转换为类似于 UNION 的查询。如果某一个 OR 子句不能利用上索引则会使用全表扫描造成效率低下,应避免使用。

如果 OR 子句都是对同一列进行过滤,用户可以考虑使用 IN VALUE LIST 的过滤形式。如:

SELECT ... WHERE CITY = 'SHANGHAI' OR CITY = 'WUHAN' OR CITY = 'BEIJING';

调整为

SELECT ... WHERE CITY IN( 'SHANGHAI','WUHAN','BEIJING');

2.避免使用困难的正则表达式

在 SQL 语言中,LIKE 关键字支配通配符匹配,含通配符的表达式被称为正则表达式。有的正则表达式可以自动优化为非匹配的。例如:a LIKE 'L%'可以优化为 a>='L' AND a ='LM' AND a



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有