查询出执行时间较长的进程
select * from information_schema.processlist where command != 'Sleep' and time > 5*60 order by time desc
查看进程
show full processlist
查询 正在执行的事务
SELECT * FROM information_schema.INNODB_TRX
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
关键字段解读:
字段 | 说明 |
---|---|
ID | 进程ID |
DB | 属于哪个库 |
COMMAND | 该进程的状态,比如Sleep、query、killed |
TIME | 时间,该进程执行的时间,单位是秒 |
STATE | 该进程的状态,比如执行中或者等待 |
INFO | 执行的sql |
2、查看事务表
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx
字段 | 说明 |
---|---|
trx_state | 该事务的状态 |
trx_started | 该事物开始执行时间 |
trx_mysql_thread_id | 该事物对应的进程ID |
trx_query | 该事务实行的sql |
DRDS | 执行的sql |
3.其他命令
--查看MySQL本次启动后的运行时间(单位:秒)
show status like 'uptime';
--查看select语句的执行数
show status like 'com_select';
--查看insert语句的执行数
show status like 'com_insert';
--查看update语句的执行数
show status like 'com_update';
--查看delete语句的执行数
show status like 'com_delete';
--查看试图连接到MySQL(不管是否连接成功)的连接数
show status like 'connections';
--查看线程缓存内的线程的数量。
show status like 'threads_cached';
--查看当前打开的连接的数量。
show status like 'threads_connected';
--查看当前打开的连接的数量。
show status like 'threads_connected';
--查看创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。
show status like 'threads_created';
--查看激活的(非睡眠状态)线程数。
show status like 'threads_running';
--查看立即获得的表的锁的次数。
show status like 'table_locks_immediate';
--查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。
show status like 'table_locks_waited';
--查看创建时间超过slow_launch_time秒的线程数。
show status like 'slow_launch_threads';
--查看查询时间超过long_query_time秒的查询的个数。
show status like 'slow_queries';
4.特殊字符处理
1.Hex函数让隐藏字符显示真身
SELECT hex(tran_no),tran_no FROM payment_record t WHERE hex(tran_no) LIKE ‘EFBBBF%’;
2.16进制的隐藏字符串转为10进制
EFBBF 转为10进制为 15711167
3、mysql处理
update payment_record set tran_no = REPLACE(tran_no, CHAR(15711167),'') WHERE hex(tran_no) LIKE 'EFBBBF%';
拿到步骤2中的隐藏字符10进制值,通过replace函数把隐藏的10进度值给替换成空串即可处理
5.去除特殊字符
char(9)制表符
char(10)换行
char(13)回车
update table set field = replace(replace(replace(field,char(9),''),char(10),''),char(13),'');
去除前后空白字符
update table set field = TRIM(field);
6.特殊字符检测
select * from (
SELECT CMBLOT,LCCDTM , UPLOAD,
CASE PRDWT REGEXP '[^0-9]' WHEN 0 THEN '数字' ELSE PRDWT END as PRDWT ,
CASE LOADTMP REGEXP '[^0-9]' WHEN 0 THEN '数字' ELSE LOADTMP END as LOADTMP,
CASE SEQNO REGEXP '[^0-9]' WHEN 0 THEN '数字' ELSE SEQNO END as SEQNO
from lta2011
) dome where (PRDWT !='数字' or LOADTMP !='数字' or SEQNO !='数字' )