1、查询优化技术
1)查询重用
1、查询结果的重用(nosql缓存查询结果)(mysql5.6 支持)
2、查询计划的重用(减少查询计划的生成开销)
2)查询重写规则 (mysql5.6 支持)
1、试图优化、子查询优化、
3) 查询算法优化(mysql5.6支持)
1、单表扫描算法
2、量表联合算法
3、多表联合算法
4)并行查询优化 (mysql.5.6 不支持)
5)分布式查询优化 (mysql5.6 不支持)
学习心法 ------ 只需要5步
1、读书而明理
2、听讲而释疑
3、练习而掌握
4、实战中巧遇大造化
5、再:读书/听讲/交流/思考/实战。。。。。。。。。。。。。
数据库调优
数据库调优勀使数据库运行的更快,其目标是:
使数据库 :
有更高的吞吐量
更短的响应时间
被调优的对象是整个数据库关系系统总体。
查询语句调优:
被调优的对象是一条查询语句。(不要只见树木不见森林,不要只看到sql的调优)。
如何进行调优:
1) 人工调优
主要依赖于人、效率低下、要求操作者完全理解常识依赖的原理,还需要对应用、数据库管理系统、操心系统及硬件有广泛的理解。最体现维护人员的价值。
2) 基于案例的调优
根据典型应用配置最优参数案例。
3)、自动调优
商业数据库,该方案还不完善。
数据库调优的五个阶段:
1、需求分析
2、项目设计
3、开发
4、测试与运行
5、上线和维护
数据库调优五个阶段的主要技术:
1、应用情况的估算
并发、峰值
2、数据系统选型策略
开源数据库还是商业的、中间件、硬件、网络等进行选型。
3、数据模型的设计
3.1 E-R模型设计 非规范可以改善系统查询性能
3.2 数据逻辑分布策略
目的是减少数据请求的不必要的数据量,把用户需要的数据返回;可用的技术如分区、分表(根据业务的不同进行分库分表
3.3 数据物理存储策略
目的是减少IO,如启用压缩技术,把索引和表的数据存储分库,不同的表数据分布于不同的表空间,不同表空间分布在不同的物理存储上。日志、索引、表空间等分布在不同的物理存储上。
3.4 索引: 适当的建立索引。
4、SQL设计
编写正确的、查询效率高的sql语句。这依赖的主要是“查询重用”编写语句的过程中要注意,要有意识地保证SQL能利用到索引。
5、数据库功能的启用
数据库为提高性能提供了一些功能,可合理使用,具体如下:
5.1 查询重用: 根据实际情况进行配置,可缓存查询执行计划、查询结果等。
5.2 数据库参数的设置: 数据缓冲区等、模型系统预运行、进行压力测试及早发现问题。
6、 系统监控与分析。
6.1 应用系统表现:
收集用户对应用系统的使用意见、系统存在的问题等,因为这些可能是用户在第一时间发现的。
6.2 OS环境监控
6.3 数据库内部状况监控: 如锁的情况,实时监控数据与历史进行对比。
6.4 日志分析: 在数据库的日志、操作系统的日志中找出异常事件,定位问题
3、