MySQL - 日常操作三 mysql慢查询;

时间:2023-03-09 02:26:40
MySQL - 日常操作三 mysql慢查询;

sql语句使用变量

use testsql;
set @a=concat('my',weekday(curdate())); # 组合时间变量
set @sql := concat('CREATE TABLE IF NOT EXISTS ',@a,'( id INT(11) NOT NULL )'); # 组合sql语句
select @sql; # 查看语句
prepare create_tb from @sql; # 准备
execute create_tb; # 执行

检测mysql 主从复制延迟

1、在从库定时执行更新主库中的一个timeout数值
2、同时取出从库中的timeout值对比判断从库与主库的延迟

mysql慢查询

开启慢查询日志

log-slow-queries=/var/lib/mysql/slowquery.log 
# 指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log
long_query_time=
# 记录超过的时间,默认为10s
log-queries-not-using-indexes
# log下来没有使用索引的query,可以根据情况决定是否开启 可不加
log-long-format
# 如果设置了,所有没有使用索引的查询也将被记录 可不加

mysqldumpslow 慢查询日志查看 

-s # 是order的顺序,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序
-t # 是top n的意思,即为返回前面多少条的数据
-g # 后边可以写一个正则匹配模式,大小写不敏感的 mysqldumpslow -s c -t host-slow.log
# 访问次数最多的20个sql语句
mysqldumpslow -s r -t host-slow.log
# 返回记录集最多的20个sql
mysqldumpslow -t -s t -g "left join" host-slow.log
# 按照时间返回前10条里面含有左连接的sql语句 show global status like '%slow%';
# 查看现在这个session有多少个慢查询
show variables like '%slow%';
# 查看慢查询日志是否开启,如果slow_query_log和log_slow_queries显示为on,说明服务器的慢查询日志已经开启
show variables like '%long%';
# 查看超时阀值
desc select * from wei where text='xishizhaohua'\G;
# 扫描整张表 tepe:ALL 没有使用索引 key:NULL
create index text_index on wei(text);
# 创建索引