文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁面 (TGZ) - 258.2Kb
手冊頁面 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  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 值表示發生錯誤,而欄位內容為錯誤訊息。在以下情況下可能會發生錯誤

    • 模式或取代是不正確的 SQL 陳述式,會產生語法錯誤。

    • 替換內容包含比模式更多的 ? 參數標記。

    如果發生載入錯誤,外掛程式也會將 Rewriter_reload_error 狀態變數設定為 ON

  • 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 欄位以取得錯誤訊息。