主要原因
数据库查询速度上不去、阻塞是指在并发访问 MySQL 数据库时,某个事务占用了资源并且长时间不释放,导致其他事务无法执行或执行缓慢的情况。MySQL 阻塞可能会导致数据库性能下降,甚至出现死锁等问题,需要马上进行处理。在 MySQL中,线程阻塞可能是由于以下原因导致:
1、锁冲突:如果两个或者多个线程同时请求同一个资源(栗如:同一行或者同一个表),其中一个将被阻塞,直到其他线程释放锁;
2、长事务:如果一个事务占用锁的时间过长,可能会导致其它事务长时间等待甚至是超时;
3、死锁:如果两个线程或者更多的线程相互等待对方的资源,将会发生死锁(Deadlock),进而导致语句的执行阻塞。
排查和定位
$ show processlist; +----+------+------------------+--------------------+---------+------+------------+--------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+------------------+--------------------+---------+------+----