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, чтобы увидеть, на что ожидает потокrwlockrwlock_instances, чтобы увидеть, какой другой поток в настоящее время владеетrwlock
Существует ограничение: Таблица rwlock_instances может использоваться только для определения потока, владеющего блокировкой на запись, но не потоков, владеющих блокировками на чтение.
© 2025 Oracle
Licensed under the GPLv2 License.