25.12.3.4 Таблица rwlock_instances
Таблица rwlock_instances перечисляет все экземпляры блокировок (чтение/запись), наблюдаемые Performance Schema во время выполнения сервера. Блокировка — это механизм синхронизации, используемый в коде для обеспечения того, что в данный момент нити имеют доступ к общему ресурсу в соответствии с определёнными правилами. Ресурс считается “защищённым” механизмом блокировки rwlock. Доступ может быть совместным (многие потоки могут иметь блокировку чтения одновременно), эксклюзивным (только один поток может иметь блокировку записи в данный момент) или совместно-эксклюзивным (поток может иметь блокировку записи, позволяя другим потокам осуществлять несовместимые чтения). Совместно-эксклюзивный доступ также известен как sxlock и оптимизирует параллелизм и улучшает масштабируемость для нагрузок чтения/записи.
В зависимости от того, сколько потоков запрашивают блокировку и характера запрошенных блокировок, доступ может быть предоставлен в режиме совместного доступа, в эксклюзивном режиме, в режиме совместного эксклюзивного доступа или вообще не предоставлен, в ожидании завершения работы других потоков.
Таблица 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и просмотра количества активных читателей.
TRUNCATE TABLE не разрешён для таблицы rwlock_instances.
Выполняя запросы к обеим следующим таблицам, приложение мониторинга или DBA может обнаружить некоторые узкие места или тупиковые ситуации между потоками, которые связаны с блокировками:
events_waits_current, чтобы увидеть, чего ждет поток.rwlock_instances, чтобы увидеть, какой другой поток в настоящее время владеетrwlock.
Есть ограничение: таблица rwlock_instances может быть использована только для определения потока, удерживающего блокировку записи, но не потоков, удерживающих блокировку чтения.
© 2025 Oracle
Licensed under the GPLv2 License.