• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
关于RDS mysql查看锁的情况的步奏
发布日期:2015-11-8 16:11:51

  关于RDS mysql查看锁的情况的步奏

  RDS默认采用的是InnoDB存储引擎。InnoDB存储引擎在锁机制方面支持表级锁和行级锁,默认为行级锁。和表级锁相比,行级锁可以提高更高的并发性、回滚操作仅需更少的记录数,但是却提高了内存占用量以及申请和释放锁消耗的时间。在RDS下排查锁的情况可以参考如下步骤:

  2、可以通过以下方法详细来排查该问题:

  1)、执行show processlist现在正在执行的线程。查看下线程的state是否有”Waiting for table metadata lock“的连接,这种连接都是在等待锁的线程。可以查看到是哪些state为“sending data”的链接持有锁,使用拥有该链接的账号去kill pid来去除掉。

  2)、由于show processlist只是查看现在正在执行的线程,查看具体锁的信息需要查看information_schema.INNODB_TRX表中的数据。对于没有提交的事务持有的锁信息只能够通过该表中的数据来查看,详细信息如下图:

  可以通过trx_requested_lock_id来查看引起锁的链接的id。(trx_id也是可以通过show engine innodb status查看TRANSACTIONS部分查看)

  3)、如果需要查看锁的详细信息的话可以通过information_shema.INNODB_LOCKS。详细的表结构请您查看下图,其中可以重点查看下lock_trx_id、lock_mode、lock_type以及lock_table几项信息来排查。

         2、在DMS中提供了视图形式的InnoDB锁等待情况,如下图所示:

  可以通过图形界面查看到持有锁和等待锁的session的情况,另外可以左键点击对应的session框可以kill掉对应的链接。这种方式适合于用户通过简单的操作消除锁情况。

    如果问题还未能解决,请联系售后技术支持。