1、查询优化的广义内容
查询重用技术(重用查询结果、重用查询计划)、查询重写规则(关系代数、启发式规则、子查询优化等)、查询算法优化(单表扫描、两表连接、多表连接)、并行查询优化、分布式查询优化、其他优化
2、查询优化的侠义内容
(1)代数优化,即逻辑优化
依据关系代数的等价变换做一些逻辑变换,比如查询重写规则,运用关系代数和启发式规则
(2)非代数优化,即物理优化
根据数据读取、表连接方式、表连接顺序、排序等技术对查询进行优化,比如查询算法优化,运用了基于代价估算的多表连接算法求解最小花费的技术。
3、数据库调优
(1)类型
A、人工调优
B、基于案例调优
C、自调优
(2)阶段
A、需求分析阶段(应用估算、系统选型)
读多写少,还是读写均匀,是否读写分离等,区分是事务型应用还是分析型应用,系统最大并发量/压力值等
B、项目设计期(数据模型设计)
单机、集群、数据库选型等
C、开发期(sql设计)
ER模型设计、逻辑分布策略(分库、分区、分表)、物理存储策略(日志与数据存储分开等减少IO)、索引(在查询频繁的对象上建立合适的索引),编写正确、高效的sql语句。
D、测试与试运行(模型系统预运行)
查询重用、数据库参数配置、压力测试等
E、上线和维护(系统监控与分析)
应用系统表现、操作系统环境监控(内存、CPU、IO)、数据库内部状态监控、日志分析(慢查询、异常事件等)