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