BLACKHOLE
Двигатель хранения BLACKHOLE принимает данные, но не сохраняет их и всегда возвращает пустой результат.
Таблица, использующая движок хранения BLACKHOLE, состоит из одного файла формата .frm, но без связанных файлов данных или индексов.
Этот движок может быть полезен, например, если вы хотите выполнить сложные правила фильтрации на подчиненном сервере, не неся никаких накладных расходов на главном сервере. Главный сервер может использовать движок хранения BLACKHOLE, а данные дублируются на подчиненном сервере для обработки.
Установка плагина
Хотя общая библиотека плагина по умолчанию распространяется с MariaDB, сам плагин по умолчанию не устанавливается. Существует два способа установки плагина с MariaDB.
Первый способ можно использовать для установки плагина без перезапуска сервера. Вы можете установить плагин динамически, выполнив INSTALL SONAME или INSTALL PLUGIN. Например:
INSTALL SONAME 'ha_blackhole';
Второй способ используется для указания серверу загрузить плагин при запуске. Плагин можно установить таким способом, предоставив параметры --plugin-load или --plugin-load-add. Это можно указать в качестве аргумента командной строки для mysqld, или в соответствующей группе параметров сервера в файле параметров группа параметров в файле параметров. Например:
[mariadb] ... plugin_load_add = ha_blackhole
Удаление плагина
Вы можете удалить плагин динамически, выполнив UNINSTALL SONAME или UNINSTALL PLUGIN. Например:
UNINSTALL SONAME 'ha_blackhole';
Если вы установили плагин, предоставив параметры --plugin-load или --plugin-load-add в соответствующей группе параметров сервера в файле параметров группа параметров в файле параметров, тогда эти параметры следует удалить, чтобы предотвратить загрузку плагина при следующем перезапуске сервера.
Использование движка хранения BLACKHOLE
Использование с DML
Операторы INSERT, UPDATE и DELETE работают с движком хранения BLACKHOLE. Однако никакие изменения данных фактически не применяются.
Использование с репликацией
Если включен бинарный журнал, все операторы SQL будут регистрироваться в обычном режиме и реплицироваться на все серверы-слепки. Однако, поскольку строки не сохраняются, важно использовать репликацию на уровне операторов, а не на уровне строк или смешанном формате, поскольку операторы UPDATE и DELETE не регистрируются и не реплицируются. См. Форматы бинарного журнала.
Использование со триггерами
Некоторые триггеры работают с движком хранения BLACKHOLE.
BEFORE Триггеры для операторов INSERT по-прежнему активируются.
Триггеры для операторов UPDATE и DELETE не активируются.
Триггеры с клаузой FOR EACH ROW не применяются, так как таблицы не имеют строк.
Использование с внешними ключами
Внешние ключи не поддерживаются. Если вы конвертируете таблицу InnoDB в BLACKHOLE, то внешние ключи исчезнут. Если вы конвертируете ту же таблицу обратно в InnoDB, то их придётся воссоздать.
Использование с виртуальными столбцами
Если вы конвертируете таблицу InnoDB, содержащую виртуальные столбцы, в BLACKHOLE, это вызовет ошибку.
Использование с AUTO_INCREMENT
Поскольку таблица BLACKHOLE не хранит данные, она не будет поддерживать значение AUTO_INCREMENT. Если вы реплицируете в таблицу, которая может обрабатывать столбцы AUTO_INCREMENT и не устанавливаете явно значение автоинкремента первичного ключа в запросе INSERT или не используете оператор SET INSERT_ID, вставки на подчиненном сервере завершатся ошибкой из-за дублирования ключей.
Ограничения
Максимальный размер ключа:
- 3500 байт (>= MariaDB 10.1.48, MariaDB 10.2.35, MariaDB 10.3.26, MariaDB 10.4.16 и MariaDB 10.5.7)
- 1000 байт (<= MariaDB 10.1.47, MariaDB 10.2.34, MariaDB 10.3.25, MariaDB 10.4.15 и MariaDB 10.5.6).
Примеры
CREATE TABLE table_name ( id int unsigned primary key not null, v varchar(30) ) ENGINE=BLACKHOLE; INSERT INTO table_name VALUES (1, 'bob'),(2, 'jane'); SELECT * FROM table_name; Empty set (0.001 sec)
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/blackhole/