Плагин METADATA_LOCK_INFO
Плагин METADATA_LOCK_INFO создаёт таблицу METADATA_LOCK_INFO в базе данных INFORMATION_SCHEMA. Эта таблица отображает активные блокировки метаданных. Таблица будет пустой, если активных блокировок метаданных нет.
Установка плагина
Несмотря на то, что общая библиотека плагина распространяется с MariaDB по умолчанию, сам плагин не устанавливается MariaDB по умолчанию. Существует два способа установки плагина с MariaDB.
Первый способ позволяет установить плагин без перезапуска сервера. Вы можете установить плагин динамически, выполнив INSTALL SONAME или INSTALL PLUGIN. Например:
INSTALL SONAME 'metadata_lock_info';
Второй способ позволяет указать серверу загрузить плагин при запуске. Плагин можно установить таким образом, указав опции --plugin-load или --plugin-load-add. Это можно указать в качестве аргумента командной строки для mysqld или в соответствующей группе опций сервера в файле группы опций в файле опций. Например:
[mariadb] ... plugin_load_add = metadata_lock_info
Удаление плагина
Вы можете удалить плагин динамически, выполнив UNINSTALL SONAME или UNINSTALL PLUGIN. Например:
UNINSTALL SONAME 'metadata_lock_info';
Если вы установили плагин, указав --plugin-load или --plugin-load-add в соответствующей группе опций сервера в файле группы опций в файле опций, эти опции должны быть удалены, чтобы предотвратить загрузку плагина при следующем перезапуске сервера.
Примеры
Просмотр всех блокировок метаданных
SELECT * FROM information_schema.metadata_lock_info; +-----------+--------------------------+---------------+----------------------+-----------------+-------------+ | THREAD_ID | LOCK_MODE | LOCK_DURATION | LOCK_TYPE | TABLE_SCHEMA | TABLE_NAME | +-----------+--------------------------+---------------+----------------------+-----------------+-------------+ | 31 | MDL_INTENTION_EXCLUSIVE | MDL_EXPLICIT | Global read lock | | | | 31 | MDL_INTENTION_EXCLUSIVE | MDL_EXPLICIT | Commit lock | | | | 31 | MDL_INTENTION_EXCLUSIVE | MDL_EXPLICIT | Schema metadata lock | dbname | | | 31 | MDL_SHARED_NO_READ_WRITE | MDL_EXPLICIT | Table metadata lock | dbname | exotics | +-----------+--------------------------+---------------+----------------------+-----------------+-------------+ 4 rows in set (0.00 sec)
Сопоставление блокировок метаданных с потоками и запросами
SELECT
CONCAT('Thread ',P.ID,' executing "',P.INFO,'" IS LOCKED BY Thread ',
M.THREAD_ID) WhoLocksWho
FROM INFORMATION_SCHEMA.PROCESSLIST P,
INFORMATION_SCHEMA.METADATA_LOCK_INFO M
WHERE LOCATE(lcase(LOCK_TYPE), lcase(STATE))>0;
+-----------------------------------------------------------------------------------+
| WhoLocksWho |
+-----------------------------------------------------------------------------------+
| Thread 3 executing "INSERT INTO foo ( b ) VALUES ( 'FOO' )" IS LOCKED BY Thread 2 |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+------------------------------+----------------------------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+----+------+-----------+------+---------+------+------------------------------+----------------------------------------+----------+
| 2 | root | localhost | test | Sleep | 123 | | NULL | 0.000 |
| 3 | root | localhost | test | Query | 103 | Waiting for global read lock | INSERT INTO foo ( b ) VALUES ( 'FOO' ) | 0.000 |
| 4 | root | localhost | test | Query | 0 | init | SHOW PROCESSLIST | 0.000 |
+----+------+-----------+------+---------+------+------------------------------+----------------------------------------+----------+
3 rows in set (0.00 sec)
Версии
| Версия | Статус | Введён |
|---|---|---|
| 0.1 | Стабильная | MariaDB 10.1.13 |
| 0.1 | Бета | MariaDB 10.0.10 |
| 0.1 | Альфа | MariaDB 10.0.7 |
Параметры
metadata_lock_info
-
Описание: Управляет тем, как сервер должен обрабатывать плагин при запуске.
- Допустимые значения:
-
OFF— Отключает плагин, не удаляя его из таблицы mysql.plugins. -
ON— Включает плагин. Если плагин не может быть инициализирован, сервер всё равно продолжит запуск, но плагин будет отключён. -
FORCE— Включает плагин. Если плагин не может быть инициализирован, сервер не запустится с ошибкой. -
FORCE_PLUS_PERMANENT— Включает плагин. Если плагин не может быть инициализирован, сервер не запустится с ошибкой. Кроме того, плагин нельзя удалить с помощью UNINSTALL SONAME или UNINSTALL PLUGIN во время работы сервера.
-
- Для получения дополнительной информации см. Обзор плагинов: Настройка активации плагина при запуске сервера.
- Допустимые значения:
-
Командная строка:
--metadata-lock-info=value -
Тип данных:
enumerated -
Значение по умолчанию:
ON -
Допустимые значения:
OFF,ON,FORCE,FORCE_PLUS_PERMANENT
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/metadata-lock-info-plugin/