需要mysql数据库优化的情况:
1.慢查询
2.阻塞(锁,造成数据无法提交)
3.数据库连接timeout
数据库优化的好处:稳定,健壮性
sql慢查询日志:
管理员身份进入命令窗->net start mysql(启动mysql服务)-> mysql -hlocalhost -uroot -proot(进入mysql数据库)
相关命令:
show databases;
use 库名;(选中数据库)
show variables like '%log%'; (查看是否记录列使用索引的查询)
set global log_queries_not_using_indexes = on;
show variables like 'long_query_time'; (慢查询查询时间超过多久会写入日志)
set global long_query_time = 0;
set global slow_query_log = on; (开启慢查日志)
show variables like 'slow%'; (查看慢查询日志存放位置)
慢查询日志所包含的内容:
1. 执行sql的主机信息 2. sql执行信息 3. sql执行时间 4. sql内容
慢查询日志分析工具:mysqldumpslow
发现有问题的sql:
1. 查询次数多且查询占用时间长
2. IO大(扫描行数多)
3. 未命中索引的sql
explain查询sql执行计划
table:表
type:连接使用了何种类型,从最好到最差:const,eq_reg,ref,range,index,all
possible_keys:可能应用在这张表中的索引
key:实际使用的索引
key_len:使用索引的长度,越短越好
ref:显示索引的哪一列被使用了
rows:mysql认为必须检查的用来返回请求数据的行数