文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.3.4 rwlock_instances 表

The rwlock_instances 表列出了 Performance Schema 在服务器执行时所看到的所有的 读写锁 (读写锁) 实例。一个 rwlock 是代码中用于强制执行线程在给定时间可以访问某些公共资源的同步机制,遵循某些规则。该资源被称为由 rwlock “保护”。访问可以是共享的 (多个线程可以在同一时间拥有一个读锁),独占的 (在给定时间只有一个线程可以拥有一个写锁),或者共享独占的 (一个线程可以拥有一个写锁,同时允许其他线程进行不一致的读取)。共享独占访问也称为 sxlock,它优化了并发性并提高了读写工作负载的可扩展性。

根据请求锁的线程数量和请求锁的类型,访问可以被授予共享模式、独占模式、共享独占模式,或者根本不被授予,而是等待其他线程先完成。

The rwlock_instances 表具有以下列

  • NAME

    与锁相关的仪器名称。

  • OBJECT_INSTANCE_BEGIN

    仪器化锁在内存中的地址。

  • WRITE_LOCKED_BY_THREAD_ID

    当一个线程当前以独占 (写) 模式锁定了 rwlock 时,WRITE_LOCKED_BY_THREAD_ID 是锁定线程的 THREAD_ID,否则为 NULL

  • READ_LOCKED_BY_COUNT

    当一个线程当前以共享 (读) 模式锁定了 rwlock 时,READ_LOCKED_BY_COUNT 会增加 1。这只是一个计数器,所以不能直接用来查找哪个线程持有读锁,但它可以用来查看 rwlock 上是否存在读竞争,以及查看当前有多少读者处于活动状态。

The rwlock_instances 表具有以下索引

  • 主键在 (OBJECT_INSTANCE_BEGIN) 上

  • 索引在 (NAME) 上

  • 索引在 (WRITE_LOCKED_BY_THREAD_ID) 上

TRUNCATE TABLE 不允许用于 rwlock_instances 表。

通过对以下两个表的执行查询,监控应用程序或 DBA 可以检测到涉及锁的线程之间的某些瓶颈或死锁

存在一个限制:rwlock_instances 只能用于识别持有写锁的线程,而不能识别持有读锁的线程。