Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

29.12.3.4 rwlock_instances 表

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

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

rwlock_instances 表具有以下列:

  • NAME

    与锁关联的仪器名称。

  • OBJECT_INSTANCE_BEGIN

    仪器锁的内存地址。

  • WRITE_LOCKED_BY_THREAD_ID

    当一个线程当前拥有独占(写)锁时,WRITE_LOCKED_BY_THREAD_ID 是锁定线程的 THREAD_ID,否则为 NULL

  • READ_LOCKED_BY_COUNT

    当一个线程当前拥有共享(读)锁时,READ_LOCKED_BY_COUNT 递增 1。这只是一个计数器,不能直接用来查找哪个线程持有读锁,但可以用来查看是否存在读锁争用和活动的读者数量。

rwlock_instances 表具有以下索引:

  • 主键(OBJECT_INSTANCE_BEGIN

  • 索引(NAME

  • 索引(WRITE_LOCKED_BY_THREAD_ID

TRUNCATE TABLE 不允许用于 rwlock_instances 表。

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

有一些限制:rwlock_instances 只能用于标识持有写锁的线程,但不能标识持有读锁的线程。