- 如何加log?
- 如何判断当前卡在那个小分片sql语句上了?
- 发现卡壳,如何杀掉语句
1、如何加log?
答:第一种在控制台,用于显示,比如sql1 和sql2之前想加打印日志。可以用SELECT “内容1”,“内容2”;打印格式为我们表格形式,每一个逗号之间都为表格的一个字段。
例子:
SELECT 'sql' AS '业务流程', FROM_UNIXTIME(tmp_stamp) AS '开始时间', FROM_UNIXTIME(tmp_stamp + 3600) AS '结束时间', ROW_COUNT() AS '影响记录行数';
第二种落地到表里,用于可追溯,定义好自己要落表的字段,可以书写一个log函数。最常见的,用于记录存储过程有没有执行完毕,可在开始插一条,在结束语句插一条。此法只是落地可追溯。
2、如何判断当前卡在那个小分片sql语句上了?
答: 通过执行日志。但最直观的是用show processlist\G;语句。上面有当前执行的sql和等待时间。当然为了看到sql全貌,和不同session所以的sql,建议使用show full processlist\G;
3、发现卡壳,如何杀掉语句
答:通过show full processlist\G查询到sql的id。使用kill + id进行杀死,注意,一般杀死SELECT语句,针对插入更新操作,中途杀掉可能导致数据不完整的脏数据。