属于网站开发的动态服务器,app开发软件要多少钱,数据可视化网站,电子政务网站建设的步骤一般为目录
前言
阻塞语句查询与分析
Show Processlist——查看每个与数据库连接的session状态
非Sleeping状态进程数
执行时间较长进程号
查看当前运行的所有事务
当前锁
被blocking阻塞的事务数
数据库连接数
查看锁状态
正在被使用的表 前言
MySQL阻塞是指并发访问时某个事务长时间占用资源不释放导致其他事务受阻或执行缓慢。这可能导致性能下降甚至死锁需及时处理。阻塞原因主要有锁冲突、长事务和死锁。排查阻塞语句可通过查看进程列表、使用性能监控工具、启用慢查询日志等方法进而优化查询和索引调整隔离级别和锁策略。
阻塞语句查询与分析
Show Processlist——查看每个与数据库连接的session状态
# 展示前100条线程
show processlist;
# 如果想列出全部线程,请使用
show full processlist;
mysql show processlist;
----------------------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info |
----------------------------------------------------------------------
| 15 | root | localhost | NULL | Query | 0 | starting | show processlist |
----------------------------------------------------------------------
1 row in set (0.00 sec)
字段列含义IdID标识;要kill一个语句的时候用User当前连接用户Host显示这个连接从哪个ip的哪个端口上发出db使用的数据库名Command连接状态#xff0c;一般是休眠(sleep);查询(query);连接(connect);Time连接持续时间;单位是秒State显示当前sql语句的状态Info显示这个sql语句
非Sleeping状态进程数
select count(1) from information_schema.processlist where command ! Sleep
执行时间较长进程号
select id,time from information_schema.processlist order by time desc limit 5;
查看当前运行的所有事务
select * from information_schema.innodb_trx;
当前锁
# 当前的锁
Mysql8.0 之前使用select * from information_schema.innodb_locks;
Mysql8.0 使用select * from performance_schema.data_locks;# 锁等待的对应关系
Mysql8.0 之前使用select * from information_schema.innodb_lock_waits;
Mysql8.0 使用select * from performance_schema.data_lock_waits;
被blocking阻塞的事务数
SELECT COUNT(BLOCKING_ENGINE_TRANSACTION_ID) FROM performance_schema.data_lock_waits;
数据库连接数
SHOW STATUS LIKE Threads_connected;
查看锁状态
show status like innodb_row_lock_%;
mysql show status likeinnodb_row_lock_%;
--------------------------------------
| Variable_name | Value |
--------------------------------------
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row_lock_time_max | 0 |
| Innodb_row_lock_waits | 0 |
--------------------------------------
5 rows in set (0.01 sec)字段列含义Innodb_row_lock_current_waits当前等待锁的数量Innodb_row_lock_time系统启动到现在锁定的总时间长度Innodb_row_lock_time_avg每次平均锁定的时间Innodb_row_lock_time_max最长一次锁定时间Innodb_row_lock_waits系统启动到现在总共锁定的次数
正在被使用的表
show OPEN TABLES where In_use 0; 如果某个事务已经卡住了可以使用 MySQL的 kill 命令来强制结束该事务以释放资源。