mysql 数据库慢如何优化_mysql数据库优化

mysql数据库优化

1、数据库优化的目的:

避免出现页面访问错误:

由于数据库连接timeout产生页面5xx错误

由于慢查询造成页面无法加载

由于阻塞造成数据无法提交

增加数据库的稳定性:

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

优化用户体验:

流程页面的访问速度

良好的网站功能体验

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

dc778ea179d6f4ee74c7242bc578070c.png

3、SQL及索引优化

如何发现有问题的SQL?

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

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

f7b64de1cd12531729253b8a726032cf.png

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

b015a859555d7ffc3dc20cd9941e3995.png

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

6acc7c83a69cc8a81603ee36e79ecc5f.png

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

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

7472ff952f3c6c6b2d1e49f80a50549b.png

4、慢查日志的存储格式

75253ef93a6d281030d144e4ea87ddfe.png

4dd661ac4321749086e350b67837c3b1.png

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?

e8b6233de6a66607145159f40344a950.png

8、如何分析SQL查询

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

e5cb3971735bfc08e198757ee0f61f63.png

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

16740a8fe3db95d5cfa3dee476503e7c.png

首先:type中:

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

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

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

range:基于索引的范围查找

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

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

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

3481d1898561b62b9934c82ae149ad1c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值