Spec-Zone.ru › MariaDB

Плагин 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

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API