MySql数据库优化
导语
在日常开发中,我们的数据往往存储在数据库中,但是由于数据库本身是持久化存储,数据的查询速度受到磁盘IO瓶颈的限制,同时,随着数据量的增长,数据的查询也会因为单表数据量的巨大,影响查询速度。所以我们需要对数据库进行优化,提高系统的响应效率。
1,数据库优化手段
索引优化。
添加查询缓存。
优化数据库SQL语句。
2,数据库优化必须了解的知识
2.1 慢查询
1,查看慢查询的状态
show variables like '%quer%'
2,开启慢查询
set global log_slow_queries = on;
3,修改慢查询最短时间为1秒
set global long_query_time = 1;
4,查看MySQL执行过的慢查询SQL语句
show variables like '%quer%';
2.2 执行计划
数据库查询优化中需要了解MySQL执行计划命令,查看sql的执行效率。
3,索引优化
3.1 关于索引
- 作用
加快以索引字段为条件的查询效率。
- 创建索引的语法
create index 索引名字 on 表(字段);
- 删除索引
drop index 索引名字;
- 查询某张表中创建了哪些索引
show index from 表名;
- 索引特点
①索引会占用存储空间,比较少。
②MySQL会自动为primary 列和unique 列自动增加索引。
③MySQL数据库对数据做DML操作时,需要同时做维护索引的操作。
隐含之意,就是索引会降低数据库增删改的效率。
- 使用原则
一般会对sql中的where条件字段或者order by字段建立索引。
3.2 索引应用场景
实际项目中,如果从业务角度出发,发现经常会用到某个字段,对表数据进行查询,或者根据经常用到某个字段的排序,则该数据是需要增加索引的。
4,查询缓存
在数据库操作对象DAO处增加查询缓存。
参考
Ehcache
缓存,或者MyBatis+Ehcache
整合方案、Hibernate
二级缓存Ehcache
。
需要注意的问题是,要注意数据的一致性,所以缓存思路如下:
1,只对查询结果进行缓存。
2,缓存结果存放要以业务逻辑相关为划分单位。比如,如果是单表,则可以创建一个缓存区域,与该表对应,如果业务中涉及到表连接操作,要将查询结果缓存在这多张表的查询结果都要缓存在对应的一个缓存区域中。
当执行增删改的时候,为了避免出现脏数据。
基于以上的特点,缓存原则是对那些查询需求远大于增删改需求的数据,进行缓存。例如:新闻网站的首页数据、电商的类别数据等。
5,sql优化
这一部分查看我的博客:SQL优化