以下討論作為與 Rewriter
查詢重寫外掛程式相關聯的這些元素的參考
在
query_rewrite
資料庫中的Rewriter
規則資料表Rewriter
程序和函數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
此欄位用於除錯和診斷。如果規則表載入到記憶體時此欄位存在,則外掛程式會以模式的正規化形式更新此欄位。如果您試圖判斷為何某些語句無法被改寫,此欄位可能很有用。
Rewriter
外掛程式操作使用一個預存程序,將規則表載入到其記憶體快取中,以及一個可載入的輔助函式。在正常操作下,使用者只會調用預存程序。該函式旨在由預存程序調用,而不是由使用者直接調用。
此預存程序使用
load_rewrite_rules()
函式將rewrite_rules
表的內容載入到Rewriter
記憶體快取中。呼叫
flush_rewrite_rules()
意味著COMMIT
。在您修改規則表後調用此程序,以使外掛程式從新的表內容更新其快取。如果發生任何錯誤,外掛程式會在表中適當的規則列設定
message
欄位,並將Rewriter_reload_error
狀態變數設定為ON
。此函式是由
flush_rewrite_rules()
預存程序使用的輔助程式。
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
提示適用否 類型 整數 供內部使用。
Rewriter
查詢改寫外掛程式支援以下狀態變數。這些變數僅在外掛程式安裝時才可用(請參閱第 7.6.4.1 節,「安裝或解除安裝 Rewriter 查詢改寫外掛程式」)。
從
rewrite_rules
表成功載入到記憶體中以供Rewriter
外掛程式使用的改寫外掛程式改寫規則數。rewrite_rules
表載入到Rewriter
外掛程式使用的記憶體快取的次數。Rewriter_number_rewritten_queries
自載入以來,由
Rewriter
查詢改寫外掛程式改寫的查詢數。最近一次將
rewrite_rules
表載入到Rewriter
外掛程式使用的記憶體快取時是否發生錯誤。如果值為OFF
,則未發生錯誤。如果值為ON
,則發生錯誤;請檢查rewriter_rules
表的message
欄位以取得錯誤訊息。