在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。

图-MySQL查询过程
1 | [mysql] |
在MySQL中,可以使用SHOW STATUS语句查询一些MySQL数据库服务器的性能参数、执行频率。
SHOW STATUS语法如下:
1 | SHOW [GLOBAL|SESSION] STATUS LIKE '参数' |
show processlist

| 字段 | 解释 |
|---|---|
| id | 连接标识符 |
| User | 当前用户 |
| Host | 操作的主机,指客户端 |
| db | 默认数据库(如果已选择);否则为NULL |
| Command | 线程正在执行的命令类型 |
| Time | 线程处于其当前状态的持续时间(以秒为单位) |
| Size | 指示线程正在执行的操作,事件或状态 |
| Info | 线程正在执行的语句,如果未执行任何语句,则为NULL。 该语句可能是发送到服务器的那条语句,或者是最内部的语句(如果该语句执行其他语句,比如存储过程中的select语句) |
sleep:正在等待客户端发送新的请求
query:正在执行查询或者正在将结果发送给客户端
locked:在MySQL服务层,线程正在等待表锁
analyzing and statistics:线程正在收集存储引擎的统计信息,并生成查询的执行计划
copying to tmp table:线程正在执行查询,并且将其结果集都复制到一个临时表中
sorting result:正在对结果集进行排序
sending data:线程可能在多个状态之间传送数据,或者在生成结果集或者向客户端返回数据