91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

中國站
幫助中心 > 數據庫 > 云數據庫MySQL > 常見問題 > 云數據庫MySQL如何管理長時間執行的查詢

云數據庫MySQL如何管理長時間執行的查詢

出現原因

在使用云數據庫MySQL的過程中,由于某些原因,例如被SQL注入、SQL執行效率較差、DDL語句引起表元數據鎖等待等,會出現運行時間很長的查詢。

說明:
元數據鎖等待的問題請參考解決MDL鎖導致無法操作數據庫的問題。

  • 由于SQL執行效率差而導致的長時間查詢。
  • 由于被SQL注入而導致的長時間查詢。
  • 由于DDL語句引起表元數據鎖等待。

長時間執行的查詢帶來的問題

通常來說,除非是BI/報表類查詢,否則長時的查詢對于應用缺乏意義,而且會消耗系統資源,比如大量長時間查詢可能會引起CPU、IOPS和連接數過高等問題,導致系統不穩定。

如何避免長時間執行的查詢

避免長時間執行查詢的方法請參考如下。

  • 應用方面應注意增加防止SQL注入的保護措施。
  • 在新功能模塊上線前,進行壓力測試,避免執行效率很差的SQL大量執行。
  • 盡量在業務低峰期進行索引創建刪除、表結構修改、表維護和表刪除操作。

如何處理長時間執行的查詢

異常情況下的元數據鎖MDL(metadata lock)會阻塞后續對表的操作。

操作步驟

  1. 在數據庫管理工具(DMS)的SQL窗口中執行show full processlist命令,查看數據庫所有線程狀態。

  2. 找到State列出現Waiting for table metadata lock的被阻塞會話,通過其Info列信息溯源造成阻塞的會話,記錄該會話Id

  3. 在命令行輸入kill <會話ID>,中斷造成阻塞的會話,解鎖MDL鎖。

后續維護

  • 在業務低峰期執行相關場景操作,包括:
    • 創建、刪除索引。
    • 修改表結構。
    • 表維護操作(optimize table、repair table等)。
    • 刪除表。
    • 獲取表級寫鎖。
  • 開啟事務自動提交autocommit。
  • 設置參數lock_wait_timeout為較小值。
  • 考慮使用事件來終止長時間運行的事務。
虹口区| 信阳市| 桂平市| 盖州市| 霞浦县| 邹平县| 滦南县| 张家口市| 无极县| 贡觉县| 汝城县| 南川市| 铁岭县| 怀柔区| 湖南省| 石河子市| 谷城县| 沛县| 安远县| 张掖市| 新郑市| 西乡县| 房山区| 洮南市| 黎平县| 噶尔县| 台湾省| 专栏| 汽车| 察隅县| 富民县| 许昌市| 合肥市| 迁安市| 尖扎县| 眉山市| 宁津县| 新竹市| 蕉岭县| 太原市| 东源县|