mysql数据库优化

mysql数据库优化

1、数据库优化的目的:

避免出现页面访问错误:

  • 由于数据库连接timeout产生页面5xx错误
  • 由于慢查询造成页面无法加载
  • 由于阻塞造成数据无法提交

增加数据库的稳定性:

  • 很多数据库问题都是由于低效率的查询引起的

优化用户体验:

  • 流程页面的访问速度
  • 良好的网站功能体验

2、可以从几方面进行数据库优化

 3、SQL及索引优化

如何发现有问题的SQL?

使用MySQL慢查询日志对有效率问题的SQL进行监控

1、首先:show VARIABLES LIKE "slow_query_log";  查看服务器是否开启慢查询日志,如果:slow_query_log为off,就代表没有开启慢查询日志。

2、在开启慢查询日志之前,要通过命令show VARIABLES LIKE "%log%";      查看是否没有记录的索引记录在慢查询日志中,如果log_queries_not_using_indexes为off表示没有开启,通过命令SET GLOBAL log_queries_not_using_indexes=on;可以设置开启

3、设置慢查询日志记录的时间,通过命令SHOW VARIABLES LIKE "long_query_time";   查询时间为大于10秒的查询记录在慢查询日志中。可以通过SET GLOBAL long_query_time=1;来修改时间。

4、最后,如果上面设置都设置好了,就可以SET GLOBAL slow_query_log=on;来开启慢查询日志的记录了。

5、通过命令:SHOW VARIABLES LIKE "slow%";  查看慢日志存放的位置,如图:

 4、慢查日志的存储格式

SQL执行信息:

Query_time:查询执行时间    lock_time:查询锁定时间     Rows_sent:查询发送的行数    Rows_examined:查询扫描的行数

SQL执行时间:

SET timestamp:以时间戳形式的记录的执行时间。

 5、SQL及索引优化

如何分析SQL查询(数据库基于MySQL5.5版本,不同MySQL版本的优化器有一定的差别

6、慢查日志的分析工具

  1、mysqldumpslow工具

     2、pt-query-digest 工具

 

7、如何通过慢查日志发现有问题的SQL?

8、如何分析SQL查询

    1、使用explan查询SQL的执行计划

 1、explain返回各列的含义,如下:

     首先type中:

  const:一般指常数查找,一般对于主键或者唯一索引查找。

  eq_reg:一种范围查找,一般对于主键或者唯一索引范围查找。

  ref :常见于连接的查询中,一个表是基于索引的查找。

  range:基于索引的范围查找

  index :对于索引的扫描,来进行的查找

  ALL:对于表的扫描,来进行的查找

 

  其次extra列需要注意的返回值,如下:

 

posted @ 2018-12-04 16:18  qiao1234  阅读(209)  评论(0编辑  收藏  举报