国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用查詢重寫臨時性屏蔽mysql高耗sql

IT那活兒 / 1120人閱讀
使用查詢重寫臨時性屏蔽mysql高耗sql

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!

前 言

在我們mysql的日常運維過程中,時常會碰到突發性的高耗sql,比如業務上線變更、營銷活動等等。針對這類sql無法使用索引優化時,為了避免持續性的高消耗引起其他應用模塊的連鎖故障,往往需要臨時性的屏蔽該類sql降低系統負載,今天我們就來研究一下mysql中如何使用查詢重寫來達到此目的。

首先查詢重寫功能在官方文檔的5.6章節<5.6.4.3 Rewriter Query Rewrite Plugin Reference>,詳細信息可以參數文檔。其主要思想為將用戶輸入的sql語句轉換為dba指定的sql語句,以達到dba的預期行為。本文將模擬一個案例進行闡述。

案例模擬復現

1. 啟動重寫插件
直接調用share目錄下的install_rewriter.sql腳本即可安裝,show rewriter_enabled確認狀態為on,注意可在線啟動插件無需重啟。
2. 模擬并發sql產生異常消耗
圖中可以看到sql屬于分析類,條件掃描范圍較大,無法通過在謂詞條件直接建立索引進行優化。應用模塊無法快速定位解決時,dba便可以使用重寫來達到屏蔽sql行為。
3. 重寫sql,屏蔽異常開銷
圖中我們第一次執行,返回是按city分組的3行結果,使用select 1替換原sql并寫入rewrite_rules規則,注意謂詞條件值可以使用?代替,相當于綁定變量. Flush規則后,再次執行sql,其warning已提示該sql已被重寫。

由于結果是dba人為指定的常量值,sql未進入innodb引擎直接在server層返回,效率直線上升,從而降低異常開銷,提升mysql運行穩定性。

使用情況總結

上文中我們使用查詢重寫屏蔽了sql的異常開銷,需要注意重寫規則一定要經過變更審核
實際在日常工作中還有大量的情況需要使用到查詢重寫,比如innodb優化器缺陷需要在sql明文中指定hint干預執行計劃。當然這種情況也可以在應用程序sql文本中進行改造,這里僅是提供一個在數據庫層處理的思路。
本文就到此為止。


本文作者:胡 杰(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129184.html

相關文章

  • 自制小工具大大加速MySQL SQL語句優化(附源碼)

    摘要:如果語句中使用了子查詢集合操作臨時表等情況,會給列帶來很大的復雜性。會遞歸執行這些子查詢,把結果放在臨時表里。查詢優化器從中所選擇使用的索引。該字段顯示了查詢優化器通過系統收集的統計信息估算出來的結果集記錄條數。 引言 優化SQL,是DBA常見的工作之一。如何高效、快速地優化一條語句,是每個DBA經常要面對的一個問題。在日常的優化工作中,我發現有很多操作是在優化過程中必不可少的步驟。然...

    Hujiawei 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<