Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
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

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

  • READ_LOCKED_BY_COUNT

    当线程当前拥有共享读锁时,READ_LOCKED_BY_COUNT 增加 1。这是一个计数器,因此不能直接用于找到持有读锁的线程,但可以用于查看某个锁是否存在读争用,并且当前有多少个读线程活动。

The rwlock_instances 表具有以下索引:

  • 主键索引(OBJECT_INSTANCE_BEGIN

  • 索引(NAME

  • 索引(WRITE_LOCKED_BY_THREAD_ID

TRUNCATE TABLE 不允许对 rwlock_instances 表进行操作。

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

存在限制:rwlock_instances 只能用来确定持有写锁定的线程,但不能确定持有读锁定的线程。