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表起作用。

二、内容在总结中

原文地址:https://www.cnblogs.com/Renyi-Fan/p/9839216.html