Spec-Zone.ru › MySQL 5.7

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

  • 5.5.4.3.1 Таблица правил плагина переписывания запросов Rewriter
  • 5.5.4.3.2 Процедуры и функции плагина переписывания запросов Rewriter
  • 5.5.4.3.3 Системные переменные плагина переписывания запросов Rewriter
  • 5.5.4.3.4 Переменные состояния плагина переписывания запросов Rewriter

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

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

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

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

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

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

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

Примечание

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

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

  • id

    Идентификатор правила. Этот столбец является первичным ключом таблицы. Вы можете использовать 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

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

5.5.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().

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

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

  • rewriter_enabled

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

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

  • rewriter_verbose

    Системная переменная rewriter_verbose
    Область Глобальная
    Динамическая Да
    Тип Целое

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

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

Плагин переписывания запросов Rewriter поддерживает следующие переменные состояния. Эти переменные доступны только в случае установки плагина (см. Раздел 5.5.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-5.7-en/rewriter-query-rewrite-plugin-reference.html

Spec-Zone.ru

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