亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

中國站
幫助中心 > 數據庫 > 云數據庫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為較小值。
  • 考慮使用事件來終止長時間運行的事務。
夏津县| 二连浩特市| 永登县| 延川县| 洛南县| 伊春市| 日喀则市| 龙胜| 安宁市| 东宁县| 桑植县| 阿鲁科尔沁旗| 闽侯县| 万盛区| 牡丹江市| 云林县| 孟村| 平湖市| 卢氏县| 开江县| 鲜城| 西盟| 织金县| 毕节市| 江口县| 沁阳市| 桓台县| 邯郸县| 安康市| 金乡县| 平湖市| 子长县| 甘南县| 海晏县| 汕尾市| 凤城市| 永平县| 富阳市| 景宁| 浮山县| 竹溪县|