Documentation Home

25.12.3.4 rwlock_instances 表

rwlock_instances表列出了服务器执行时性能模式看到的所有rwlock(读写锁)实例。Anrwlock是代码中使用的一种同步机制,用于强制线程在给定时间可以按照特定规则访问某些公共资源。据说该资源 受到保护rwlock. 访问可以是共享的(许多线程可以同时拥有一个读锁)、独占的(在给定时间只有一个线程可以拥有一个写锁),或者是共享独占的(一个线程可以拥有一个写锁,同时允许不一致的由其他线程读取)。共享独占访问也称为 an sxlock并优化并发性并提高读写工作负载的可扩展性。

根据请求锁的线程数以及所请求锁的性质,可以在共享模式、独占模式、共享-独占模式下授予访问权限,或者根本不授予访问权限,等待其他线程先完成。

rwlock_instances表有以下列:

  • NAME

    与锁关联的仪器名称。

  • OBJECT_INSTANCE_BEGIN

    检测锁在内存中的地址。

  • WRITE_LOCKED_BY_THREAD_ID

    当一个线程当前rwlock 在独占(写入)模式下处于锁定状态时, WRITE_LOCKED_BY_THREAD_IDTHREAD_ID锁定线程的 ,否则是NULL

  • READ_LOCKED_BY_COUNT

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

TRUNCATE TABLE不允许用于rwlock_instances表。

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

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