文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  Rewriter 查詢重寫外掛程式參考

7.6.4.3 Rewriter 查詢重寫外掛程式參考

以下討論作為與 Rewriter 查詢重寫外掛程式相關聯的這些元素的參考

  • query_rewrite 資料庫中的 Rewriter 規則表格

  • Rewriter 程序和函式

  • Rewriter 系統和狀態變數

7.6.4.3.1 Rewriter 查詢重寫外掛程式規則表格

query_rewrite 資料庫中的 rewrite_rules 表格為 Rewriter 外掛程式用來決定是否重寫陳述式的規則提供持續性儲存。

使用者藉由修改儲存在此表格中的規則集來與外掛程式溝通。外掛程式藉由設定表格的 message 欄位來將資訊傳達給使用者。

注意

規則表格由 flush_rewrite_rules 預存程序載入到外掛程式中。除非在最近一次表格修改後呼叫該程序,否則表格內容不一定與外掛程式正在使用的規則集相對應。

rewrite_rules 表格具有下列欄位

  • id

    規則 ID。此欄位是表格主索引鍵。您可以使用 ID 來唯一識別任何規則。

  • pattern

    範本,指出規則符合的陳述式模式。使用 ? 來表示符合資料值的參數標記。

  • pattern_database

    用於比對陳述式中不完整表格名稱的資料庫。如果對應的資料庫和表格名稱相同,則陳述式中的完整表格名稱會比對模式中的完整名稱。只有在預設資料庫與 pattern_database 相同且表格名稱相同時,陳述式中的不完整表格名稱才會比對模式中的不完整名稱。

  • replacement

    範本,指出如何重寫符合 pattern 欄位值的陳述式。使用 ? 來表示符合資料值的參數標記。在重寫的陳述式中,外掛程式會使用 pattern 中對應標記所比對的資料值來取代 replacement 中的 ? 參數標記。

  • enabled

    是否啟用規則。只有在此欄位為 YES 時,載入作業 (透過叫用 flush_rewrite_rules() 預存程序執行) 才會將規則從表格載入到 Rewriter 記憶體內快取中。

    此欄位讓您能夠停用規則而無需移除它:將此欄位設定為 YES 以外的值,然後將表格重新載入到外掛程式中。

  • message

    此插件使用此欄位與使用者溝通。如果將規則表載入記憶體時沒有發生錯誤,插件會將 message 欄位設定為 NULL。非 NULL 值表示發生錯誤,且欄位內容為錯誤訊息。在以下情況下可能會發生錯誤:

    • 模式 (pattern) 或取代 (replacement) 是不正確的 SQL 語句,會產生語法錯誤。

    • 取代 (replacement) 包含比模式 (pattern) 更多的 ? 參數標記。

    如果發生載入錯誤,插件也會將 Rewriter_reload_error 狀態變數設定為 ON

  • pattern_digest

    此欄位用於除錯和診斷。如果將規則表載入記憶體時此欄位存在,插件會使用模式摘要 (pattern digest) 更新此欄位。如果您試圖確定為什麼某些語句無法被重寫,此欄位可能很有用。

  • normalized_pattern

    此欄位用於除錯和診斷。如果將規則表載入記憶體時此欄位存在,插件會使用模式的標準化形式更新此欄位。如果您試圖確定為什麼某些語句無法被重寫,此欄位可能很有用。

7.6.4.3.2 Rewriter 查詢重寫插件程序和函數

Rewriter 插件操作使用一個儲存程序,將規則表載入其記憶體快取中,以及一個輔助的可載入函數。在正常操作下,使用者只會調用儲存程序。該函數旨在由儲存程序調用,而不是由使用者直接調用。

7.6.4.3.3 Rewriter 查詢重寫插件系統變數

Rewriter 查詢重寫插件支援以下系統變數。這些變數僅在安裝插件後才可用(請參閱第 7.6.4.1 節,「安裝或解除安裝 Rewriter 查詢重寫插件」)。

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,則發生錯誤;請查看 rewriter_rules 表格的 message 欄位以查看錯誤訊息。