mysql性能调优(二)——查询mysql进程状态

除了可以查看数据库状态,还可以观察mysql进程状态

用show processlist 或者开启慢查询,获取有问题的sql(而用profiling以及explain分析sql语句我们暂时以后再说)

mysql -uroot -e 'show processlist' 看数据库状态

新建一个sh去执行查看mysql的进程状态  tjproce.sh

#!/bin/bash

while true

do

mysql -uroot -e 'show processlist \G' | grep state | uniq | sort -rn >> proce.txt

usleep 100000  -->一秒运行10次

done 

proce.txt的结果可能如下(即mysql运行时的部分可疑状态):

State : Sending data

State : Null

State : Coping to tmp table 复制到临时表

State : sorting result   排序(磁盘排序更慢)

State : converting heap to MYISAM   查询结果太大

State : create tmp tab 创建临时表(索引利用不合理)

看一条语句运行的具体情况:show profiles

为sql语句生成一条执行计划:show profile for query 2 / show profiling=on

下面再补充个知识点:

数据库的三范式:

1:列不可再分

2:行可以唯一区分 即主键约束

3:表的非主属性不能依赖于其他表的非主属性 即外键约束
1 2 3 范式层层递进,一级一级依赖的

你可能感兴趣的:(mysql性能调优(二)——查询mysql进程状态)