7.6.4.3 Справочник плагина переписывания запросов 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 использует хранимую процедуру, загружающую таблицу правил в кэш оперативной памяти, и вспомогательную загружаемую функцию. При нормальной работе пользователи вызывают только хранимую процедуру. Функция предназначена для вызова хранимой процедурой, а не напрямую пользователем.
-
Эта хранимая процедура использует функцию
load_rewrite_rules()для загрузки содержимого таблицыrewrite_rulesв кэш оперативной памятиRewriter.Вызов
flush_rewrite_rules()подразумеваетCOMMIT.Вызовите эту процедуру после изменения таблицы правил, чтобы заставить плагин обновить свой кэш из новых данных таблицы. Если произойдут ошибки, плагин устанавливает столбец
messageдля соответствующих строк правил в таблице и устанавливает переменную состоянияRewriter_reload_errorв значениеON. -
Эта функция является вспомогательной процедурой, используемой хранимой процедурой
flush_rewrite_rules().
7.6.4.3.3 Переменные системы плагина переписывания запросов Rewriter
Плагин переписывания запросов Rewriter поддерживает следующие системные переменные. Эти переменные доступны только при установке плагина (см. Раздел 7.6.4.1, «Установка или удаление плагина переписывания запросов Rewriter»).
-
Системная переменная 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Область действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое Для внутреннего использования.
7.6.4.3.4 Переменные состояния плагина переписывания запросов Rewriter
Плагин переписывания запросов Rewriter поддерживает следующие переменные состояния. Эти переменные доступны только при установке плагина (см. Раздел 7.6.4.1, «Установка или удаление плагина переписывания запросов Rewriter»).
-
Количество правил переписывания плагина переписывания, успешно загруженных из таблицы
rewrite_rulesв память для использования плагиномRewriter. -
Количество раз, когда таблица
rewrite_rulesзагружалась в кэш оперативной памяти, используемый плагиномRewriter. -
Rewriter_number_rewritten_queriesКоличество запросов, переписанных плагином переписывания запросов
Rewriterс момента его загрузки. -
Произошла ли ошибка при последней загрузке таблицы
rewrite_rulesв кэш оперативной памяти, используемый плагиномRewriter. Если значениеOFF, ошибка не произошла. Если значениеON, произошла ошибка; проверьте столбецmessageтаблицыrewriter_rulesдля сообщений об ошибках.
© 2025 Oracle
Licensed under the GPLv2 License.