Spec-Zone.ru › MySQL 8.4

7.6.4.3 Справочник плагина переписывания запросов Rewriter

  • 7.6.4.3.1 Таблица правил плагина переписывания запросов Rewriter
  • 7.6.4.3.2 Процедуры и функции плагина переписывания запросов Rewriter
  • 7.6.4.3.3 Системные переменные плагина переписывания запросов Rewriter
  • 7.6.4.3.4 Переменные состояния плагина переписывания запросов Rewriter

Следующее обсуждение служит справочным материалом для элементов, связанных с плагином переписывания запросов Rewriter:

  • Таблица правил Rewriter в базе данных query_rewrite

  • Процедуры и функции Rewriter

  • Системные и переменные состояния Rewriter

7.6.4.3.1 Таблица правил плагина переписывания запросов Rewriter

Таблица rewrite_rules в базе данных query_rewrite предоставляет постоянное хранилище правил, которые плагин Rewriter использует для определения необходимости переписывания операторов.

Пользователи взаимодействуют с плагином, изменяя набор правил, хранящихся в этой таблице. Плагин передает информацию пользователям, устанавливая столбец message таблицы.

Примечание

Таблица правил загружается в плагин процедурой flush_rewrite_rules. До тех пор, пока эта процедура не вызвана после последнего изменения таблицы, содержимое таблицы не обязательно соответствует набору правил, используемых плагином.

Таблица rewrite_rules содержит следующие столбцы:

  • id

    Идентификатор правила. Этот столбец является первичным ключом таблицы. Вы можете использовать идентификатор для уникальной идентификации любого правила.

  • pattern

    Шаблон, указывающий шаблон операторов, которые соответствует правилу. Используйте ? для представления маркеров параметров, соответствующих значениям данных.

  • pattern_database

    База данных, используемая для сопоставления имён таблиц без указания базы данных в операторах. Квалифицированные имена таблиц в операторах соответствуют квалифицированным именам в шаблоне, если соответствующие имена базы данных и таблиц идентичны. Неквалифицированные имена таблиц в операторах соответствуют неквалифицированным именам в шаблоне только в том случае, если базой данных по умолчанию является pattern_database, и имена таблиц идентичны.

  • replacement

    Шаблон, указывающий, как переписать операторы, соответствующие значению столбца pattern. Используйте ? для представления маркеров параметров, соответствующих значениям данных. В переписанных операторах плагин заменяет ? маркеры параметров в replacement, используя значения данных, соответствующие маркерам в pattern.

  • enabled

    Включено ли правило. Операции загрузки (выполняемые вызовом хранимой процедуры flush_rewrite_rules()) загружают правило из таблицы в кэш Rewriter только в том случае, если этот столбец имеет значение YES.

    Этот столбец позволяет деактивировать правило без удаления: установите для столбца значение, отличное от YES, и перезагрузите таблицу в плагин.

  • message

    Плагин использует этот столбец для взаимодействия с пользователями. Если при загрузке таблицы правил в память не произойдет ошибок, плагин устанавливает столбец message в значение NULL. Не-NULL значение указывает на ошибку, и содержимое столбца является сообщением об ошибке. Ошибки могут возникнуть в следующих случаях:

    • Шаблон или замена являются некорректными SQL-операторми, которые вызывают синтаксические ошибки.

    • Замена содержит больше ? маркеров параметров, чем шаблон.

    Если произошла ошибка загрузки, плагин также устанавливает переменную состояния Rewriter_reload_error в значение ON.

  • pattern_digest

    Этот столбец используется для отладки и диагностики. Если столбец существует при загрузке таблицы правил в память, плагин обновляет его значение хэш-значением шаблона. Этот столбец может быть полезен, если вы пытаетесь определить, почему какой-то оператор не переписывается.

  • normalized_pattern

    Этот столбец используется для отладки и диагностики. Если столбец существует при загрузке таблицы правил в память, плагин обновляет его нормализованной формой шаблона. Этот столбец может быть полезен, если вы пытаетесь определить, почему какой-то оператор не переписывается.

7.6.4.3.2 Процедуры и функции плагина переписывания запросов Rewriter

Работа плагина Rewriter использует хранимую процедуру, загружающую таблицу правил в кэш оперативной памяти, и вспомогательную загружаемую функцию. При нормальной работе пользователи вызывают только хранимую процедуру. Функция предназначена для вызова хранимой процедурой, а не напрямую пользователем.

  • flush_rewrite_rules()

    Эта хранимая процедура использует функцию load_rewrite_rules() для загрузки содержимого таблицы rewrite_rules в кэш оперативной памяти Rewriter.

    Вызов flush_rewrite_rules() подразумевает COMMIT.

    Вызовите эту процедуру после изменения таблицы правил, чтобы заставить плагин обновить свой кэш из новых данных таблицы. Если произойдут ошибки, плагин устанавливает столбец message для соответствующих строк правил в таблице и устанавливает переменную состояния Rewriter_reload_error в значение ON.

  • load_rewrite_rules()

    Эта функция является вспомогательной процедурой, используемой хранимой процедурой flush_rewrite_rules().

7.6.4.3.3 Переменные системы плагина переписывания запросов Rewriter

Плагин переписывания запросов Rewriter поддерживает следующие системные переменные. Эти переменные доступны только при установке плагина (см. Раздел 7.6.4.1, «Установка или удаление плагина переписывания запросов Rewriter»).

  • rewriter_enabled

    Системная переменная rewriter_enabled
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Булево
    Значение по умолчанию ON
    Допустимые значения OFF

    Включён ли плагин переписывания запросов Rewriter.

  • rewriter_enabled_for_threads_without_privilege_checks

    Системная переменная rewriter_enabled_for_threads_without_privilege_checks
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Булево
    Значение по умолчанию ON
    Допустимые значения OFF

    Применять ли переписывание для потоков репликации, выполняющих запросы без проверки привилегий. Если установлено OFF, такие переписывания пропускаются. Требуется привилегия SYSTEM_VARIABLES_ADMIN или привилегия SUPER для установки.

    Эта переменная не имеет эффекта, если rewriter_enabled установлено в OFF.

  • rewriter_verbose

    Системная переменная rewriter_verbose
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое

    Для внутреннего использования.

7.6.4.3.4 Переменные состояния плагина переписывания запросов Rewriter

Плагин переписывания запросов Rewriter поддерживает следующие переменные состояния. Эти переменные доступны только при установке плагина (см. Раздел 7.6.4.1, «Установка или удаление плагина переписывания запросов Rewriter»).

  • Rewriter_number_loaded_rules

    Количество правил переписывания плагина переписывания, успешно загруженных из таблицы rewrite_rules в память для использования плагином Rewriter.

  • Rewriter_number_reloads

    Количество раз, когда таблица rewrite_rules загружалась в кэш оперативной памяти, используемый плагином Rewriter.

  • Rewriter_number_rewritten_queries

    Количество запросов, переписанных плагином переписывания запросов Rewriter с момента его загрузки.

  • Rewriter_reload_error

    Произошла ли ошибка при последней загрузке таблицы rewrite_rules в кэш оперативной памяти, используемый плагином Rewriter. Если значение OFF, ошибка не произошла. Если значение ON, произошла ошибка; проверьте столбец message таблицы rewriter_rules для сообщений об ошибках.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/rewriter-query-rewrite-plugin-reference.html

Spec-Zone.ru

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