id: |
規則ID。此列是表主鍵??梢允褂迷揑D唯一標識任何規則。 |
---|---|
pattern: |
指示規則匹配的語句模式的模板,使用?表示匹配的數據值。 |
pattern_database: |
該數據庫用于匹配語句中的非限定表名。如果相應的數據庫和表名相同,則語句中的限定表名與模式中的限定名匹配;當默認數據庫pattern_database與表名相同且語句名相同時,語句中的非限定表名才匹配模式中的非限定名稱 。 |
replacement: |
指示如何重寫與pattern列值匹配的語句的模板。使用 ?表示匹配的數據值,?是參數標記,實際語句中可以替換。 |
enabled: |
規則是否已啟用。加載操作(通過調用flush_rewrite_rules() 存儲過程執行)Rewriter僅在此列加載時才將表中的規則加載到 內存緩存中YES。此列可以在不刪除規則的情況下停用規則:將列設置為除YES表之外的值 ,然后將表重新加載到插件中。 |
message: |
該插件使用此列與用戶進行通信。如果將規則表加載到內存中時沒有發生錯誤,則插件會將message 列設置為NULL。非NULL值表示錯誤,列內容是錯誤消息。在這些情況下可能會發生錯誤:1.模式或替換是一個產生語法錯誤的錯誤SQL語句。2.替換包含比模式更多的參數標記。如果發生加載錯誤,插件還會將 Rewriter_reload_error狀態變量設置為ON。 |
pattern_digest: |
此列用于調試和診斷。如果在將規則表加載到內存中時該列存在,則插件會使用模式摘要更新它。此列可幫助確定某些語句無法重寫的原因。 |
normalized_pattern |
此列用于調試和診斷。如果在將規則表加載到內存中時該列存在,則插件會使用模式的規范化形式對其進行更新。如果您嘗試確定某些語句無法重寫的原因,則此列可能很有用。 |
重寫器查詢重寫插件過程
將規則添加到 rewrite_rules表中不足以使Rewriter插件使用該規則。還必須調用flush_rewrite_rules()以將表內容加載到插件內存緩存中:
Rewriter插件操作使用存儲過程將規則表加載到其內存緩存中,在正常操作下,用戶僅調用flush_rewrite_rules()從而將rewrite_rules表的內容加載到Rewriter內存高速緩存中。加載表后,它還會清除查詢緩存。
當修改規則表后,需要重新調用此過程以使插件從新表內容更新其緩存:
使用重寫插件中定義的語句模式查詢相應記錄:
SELECT DBA_no, name from DBA_inf where DBA_no =8;
通過使用explain語句查看,當前SQL已經使用了索引
重寫插件操作信息
該Rewriter插件通過幾個狀態變量提供有關其操作的信息:
有關這些變量的說明:
通過調用flush_rewrite_rules()存儲過程加載規則表時 ,如果某些規則發生錯誤,則該CALL 語句會產生錯誤,并且該插件會將 Rewriter_reload_error狀態變量設置為ON:
在這種情況下,請檢查rewrite_rules表中是否包含非NULL message列值的行,以查看存在的問題。
重寫器插件使用字符集
當rewrite_rules表加載到Rewriter插件中時,插件使用character_set_client系統變量的當前全局值來解釋語句 。如果character_set_client隨后更改全局 值,則必須重新加載規則表。
客戶端的會話character_set_client值必須 與加載規則表時的全局值相同,否則規則匹配將不適用于該客戶端。
以上就是MySQL查詢重寫插件的使用的詳細內容,更多關于MySQL查詢重寫插件的資料請關注腳本之家其它相關文章!
標簽:合肥 呼和浩特 牡丹江 惠州 天津 阿里 沈陽 公主嶺
巨人網絡通訊聲明:本文標題《MySQL查詢重寫插件的使用》,本文關鍵詞 MySQL,查詢,重寫,插件,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。上一篇:MySQL5.5 部署的一個問題