一、MySQL 优化思路架构
通常情况下,MySQL的优化过程总结如下:
1、观察服务器状态, 一般用如下2个命令
Show status; 或者Show processlist;
例: mysql> show status;
#mysqladmin ext
2、不规则的延迟现象往往是由于效率低下的语句造成的
1)查看当前所有连接的工作状态
Show processlist;//这个命令是显示当前所有连接的工作状态.
如果观察到以下状态,则需要注意
converting HEAP to MyISAM 查询结果太大时,把结果放在磁盘 (语句写的不好,取数据太多)
create tmp table 创建临时表(如group时储存中间结果,说明索引建的不好)
Copying to tmp table on disk 把内存临时表复制到磁盘 (索引不好,表字段选的不好)
locked 被其他查询锁住 (一般在使用事务时易发生,互联网应用不常发生)
logging slow query 记录慢查询
2)抓取上述观察的效率低的语句
mysql 5.5 以后加了一个profile设置,可以观察到具体语句的执行步骤.
- 查看profile是否开启
Show variables like ‘profiling’
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| profiling | OFF |
+---------------+-------+
- 开启profile
set profiling=on;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| profiling | On |
+---------------+-------+
- 查看具体的执行语句