mysql数据库优化课程---16、mysql慢查询和优化表空间
mysql数据库优化课程---16、mysql慢查询和优化表空间
一、总结
一句话总结:
a、慢查询的话找到存储慢查询的那个日志文件
b、优化表空间的话可以用optimize table sales;
1、查看慢查询日志是否开启?
show variables:show variables like "%quer%";
slow_query_log | ON
slow_query_log_file | mysql-slow.log
long_query_time | 10.000000
2、查看慢查询的次数?
show status:show status like "%quer%";
Slow_queries | 0
3、修改慢查询的时间(my.ini)?
long_query_time:long_query_time=6
4、重启mysql服务器?
net stop:net stop mysql57
net start:net start mysql57
5、优化表空间?
optimize:optimize table sales;
optimize table sales;
1.myisam表没有问题.
2.innodb表ibdata1文件无法回收空间.
6、mysql测试的时候如何快速增加表的数据?
自增数据:insert into test(username,age) select username,age from test;
从自己身上增加数据,这是2的n次方,多弄几次数据就很大了
insert into test(username,age) select username,age from test;
7、通过EXPLAIN分析较低效SQL的执行情况?
explain select:explain select count(*) from stu where name like
"a%"\G
mysql> explain select count(*) from stu where name like
"a%"\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: stu
type: range
possible_keys: name,ind_stu_name
key: name
key_len: 50
ref: NULL
rows: 8
Extra: Using where; Using index
1 row in set (0.00 sec)
每一列的简单解释
– id: 1
– select_type: SIMPLE 表示select的类型,常见的取值有SIMPLE()
简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层
的查询)、UNION(UNION中的第二个或者后面的查询语句)、
SUBQUERY(子查询中的第一个SESECT)等
– table: stu 输出结果集的表
– type: range 表示表的连接类型,性能有好到差:system(表仅一行
)、const(只一行匹配)、eq_ref(对于前面的每一行使用主键和唯
一)、ref(同eq_ref,但没有使用主键和唯一)、ref_or_null(同前
面对null查询)、index_merge(索引合并优化)、
unique_subquery(主键子查询)、index_subquery(非主键子查
询)、range(表单中的范围查询)、index(都通过查询索引来得到
数据)、all(通过全表扫描得到的数据)
– possible_keys: name,ind_stu_name 表查询时可能使用的索引。
– key: name 表示实际使用的索引。
– key_len: 50 索引字段的长度
– ref: NULL
– rows: 8 扫描行的数量
– Extra: Using where; Using index 执行情况的说明和描述
8、mysql不会自动回收空间?
optimize table sales;
1.myisam表没有问题.
2.innodb表ibdata1文件无法回收空间,另外的表可以.
如果已经删除了表的一大部分,或者如果已经对
含有可变长度行的表进行了很多的改动,则需要做定期优化
。这个命令可以将表中的空间碎片进行合并,但是此命令只
对MyISAM、BDB和InnoDB表起作用。
二、内容在总结中