mysql的命令:
#1.Mysql运行多久 单位s
show status like 'uptime';
#2.CRUD执行次数
#当前库的所有语句
show status like '%Com_%'
#当前库的查询语句
show status like '%Com_select%'
#当前库的插入语句
show status like '%Com_insert%'
#当前库的更新语句
show status like '%Com_update%'
#当前库的删除语句
show status like '%Com_delete%'
#所有的语句完整格式
Show global status like '%Com_%'
#3.查询所有连接数
show status like 'connections'
#查看服务器响应的最大使用连接数 ***可以依据这个设置连接池
#可以通过my.ini中的max_connections=100配置项目进行修改
show status like 'Max_used_connections'
#4.查询锁住的资源 *****
#查看执行的线程
show processlist
#state查看SQL的状态 重要的是state为Locked(锁住了),此时用kill Id杀掉线程,并且要排查代码导致锁住的原因。
#kill Id
kill 95
语句解释:发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。
#5.定义慢查询 *****
#测试环境下使用,上线切勿使用,对mysql有额外开销
#5.1查询慢查询次数
show status like 'slow_queries' #慢查询,通常指花了一定时间以上的查询(默认10s)
#5.2查看慢查询时间阈值
show variables like 'long_query_time' ; #可以显示当前慢查询时间 , 默认阈值 10s
#修改慢查询时间阈值
set long_query_time=0.2 ; #可以修改慢查询时间(本次会话有效), 可以通过my.ini永久修改
#可以修改慢查询时间(当前的的窗口中是没有效果的,在新打开的窗口中才会有效果,重启后失效), 可以通过my.ini永久修改
set global long_query_time=0.2 ; #如果想让本窗口也有效果 的话,不用加 global关键字。
#5.3查看慢查询的日志路径 --可通过查看日志查询慢sql
show variables like '%slow_query_log%';
#开启慢查询日志 修改是临时性的,要永久修改还是要改my.ini文件
SET GLOBAL slow_query_log = 1;
#慢sql输出到表
set global log_output='TABLE';
#查看日志内容
select * from mysql.slow_log;
直接配置my.ini文件
[mysqld]
#慢SQL阈值
long_query_time=0.00001
#开启慢sql日志
slow_query_log=1
#慢SQL日志
slow_query_log_file="D:/opensource/MySQL/MySQL Server 5.5/slow.log"
#日志记录到文件和表中
log_output="FILE,TABLE"
#6.explain 的重要字段 *****
#一、type
#显示联结类型,显示查询使用了何种类型,按照从最佳到最坏类型排序
#1、system:表中仅有一行(=系统表)这是const联结类型的一个特例。
#2、const:表示通过索引一次就找到,const用于比较primary key或者unique索引。因为只匹配一行数据,所以如果将主键置于where列表中,mysql能将该查询转换为一个常量
#3、eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于唯一索引或者主键扫描
#4、ref:非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,可能会找多个符合条件的行,属于查找和扫描的混合体
#5、range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引,一般就是where语句中出现了between,in等范围的查询。这种范围扫描索引扫描比全表扫描要好,因为它#开始于索引的某一个点,而结束另一个点,不用全表扫描
#6、index:index 与all区别为index类型只遍历索引树。通常比all快,因为索引文件比数据文件小很多。
#7、all:遍历全表以找到匹配的行
#注意:一般保证查询至少达到range级别,最好能达到ref。
#二、possible_keys
#指出MySQL能使用哪个索引在该表中找到行(可能使用的索引)
#三、key
#显示MySQL实际使用的键(索引)。如果没有选择索引,键是NULL。查询中如果使用覆盖索引,则该索引和查询的select字段重叠。
#四、ref
#显示索引的哪一列被使用了,如果有可能是一个常数,哪些列或常量被用于查询索引列上的值
#五、rows
#根据表统计信息以及索引选用情况,大致估算出找到所需的记录所需要读取的行数,越少越好
#test
EXPLAIN
SELECT * FROM emp t1 WHERE t1.empno = 4000101