优化方向:
- 数据库参数
- 索引、统计信息、执行计划
- SQL语句、表结构
- 数据库架构
- 数据库参数
2. 索引
索引优点:大大加快数据检索的速度
索引缺点:会占用存储空间,延迟 DML 操作
在以下场景下可考虑创建索引:
- 仅当要通过索引访问表中很少的一部分行(1%~20%)。
- 索引可覆盖查询所需的所有列,不需额外去访问表。
存在下列情况将导致无法使用索引:
- 组合索引中,条件列中没有组合索引的首列。
- 条件列带有函数或计算。
- 索引过滤性能不好时。
如对一张 10 万条记录的表进行条件查询,获取 5 万条数据,通过索引进行查找效率低于全表扫描,将放弃使用索引。
3. 统计信息
统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况 等的一类信息。比如,表的行数,块数,平均每行的大小,索引的高 度、叶子节点数,索引字段的行数,不同值的大小等,都属于统计信 息。统计信息对优化器至关重要,是执行计划精确执行的必备条件。
达梦统计信息分为三类:表统计信息,列统计信息,索引统计信息。
4. 执行计划
什么是执行计划? 一条 SQL 语句在 DM 数据库中执行过程或访问路径的描述
--通过 EXPLAIN 命令查看
EXPLAIN SELECT * FROM SYSOBJECTS;
5. SQL语句
定位查询慢SQL:
方法一
--开启 SQL 日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);
--关闭 SQL 日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);
方法二
显示最近 1000 条执行时间较长的 SQL 语句
SELECT * FROM V$LONG_EXEC_SQLS;
显示服务器启动以来执行时间最长的 20 条 SQL 语句
SELECT * FROM V$SYSTEM_LONG_EXEC_SQLS;
各字段详细信息介绍
列名 | 说明 |
SESS_ID | 会话 ID,会话唯一标识 |
SQL_ID | 语句 ID,语句唯一标识 |
SQL_TEXT | SQL 文本 |
EXEC_TIME | 执行时间(毫秒) |
FINISH_TIME | 执行结束时间 |
N_RUNS | 执行次数 |
SEQNO | 编号 |
TRX_ID | 事务号6. |
6. 表结构
分区表
分区表的优点: 改善查询的性能、增加可用性、维护方便、均衡 I/O
水平分区类型:范围分区(range),列表分区(list),哈希分区(hash), 间隔分区(range 分区的一种)
物化视图
物化视图就是将查询结果预先计算并存在一个特殊的表里。物化视图主要是用于数据库仓库环境下,加快查询速度。物化视图的数据来自 于基表,基表发生变化,物化视图可以根据刷新方式来进行数据的 同步。
7. 数据库架构
读写分离 分散会话
MPP 分散数据,并行计算