启动数据库 /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/etc/my.cnf &
mysql -uroot -prootroot
show databases
ps -ef |grep mysql
MySQL查询阻塞语句
select r.trx_id waiting_trx_id, r.trx_mysql_thread_Id waiting_thread,
然后通过一下命令查看是否成功
mysql> show variables like 'long%';
mysql> show variables like 'slow%';
showvariables like ‘%log_output%’;
查看当前慢查询日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log)
show global status like ‘%slow%’; MySQL中有一个变量专门记录当前慢查询语句的个数:
补充知识点:如何利用MySQL自带的慢查询日志分析工具mysqldumpslow分析日志?
mysqldumpslow -s c -t 10 slow-query.log
mysqldumpslow -t 3
具体参数设置如下:
-s 表示按何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t 表示top的意思,后面跟着的数据表示返回前面多少条;
-g 后面可以写正则表达式匹配,大小写不敏感。
SELECT
TIME_TO_SEC(
TIMEDIFF (RECIVED_TIME,
POS_TIME)) from device_position_his1711 ;
慢查询:
首先确认一下你们的日志是否打开show variables liike ‘log_bin’如果是打开了,显示on,否则是off,没打开的话去my.ini配置一下,再来操作。
跟慢查询相关的设置语句。开启慢查询日志:set global slow_query_log=on。 如果设置long_query_time发现值没有改变,可以关掉窗口重开查看。 如果删除了慢查询日志,需要执行flush logs。 开启SQL消耗时间:set profiling=1;查询是否开启:select @@profiling。
show variables like 'slow_query_log'; set global slow_query_log_file = '/usr/local/mysql\sql_log\slow.log'; set global log_queries_not_using_indexes = on; set global long_query_time = 3;
show variables like '%log';
方法二:通过修改myssql的全局变量来处理,这样做的好处是,不用重启mysql服务器,登陆到mysql上执行一下sql脚本即可
set global slow_query_log=ON;
set global long_query_time=3;
然后通过一下命令查看是否成功
mysql> show variables like 'long%';
mysql> show variables like 'slow%';
r.trx_query waiting_query, b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query
from information_schema.innodb_lock_waits w inner join information_schema.innodb_trx b on b.trx_id = w.blocking_trx_id
inner join information_schema.innodb_trx r on r.trx_id = w.requesting_trx_id;