回覆列表
  • 1 # 此生唯一

    我昨天剛好碰到一個問題,應用伺服器隔一小段時間就自動重啟,最後才定位到是慢查詢的問題,生產環境停擺了半天!

    慢查詢:超過指定時間的SQL查詢。

    慢查詢的危害:輕者影響整個系統性能,重者直接導致服務重啟或宕機。

    開始慢查詢記錄日誌:使用set global slow_query_log=on;開啟慢查詢日誌記錄。

    然後使用show variables like "slow%";查詢慢查詢相關情況,除了能看到slow_query_log=on;還有slow_query_log_file用來記錄慢查詢的檔案!

    使用show variables like "long%";檢視慢查詢的時間定義為多少?|long_query_time|0.01|(以秒為單位)。

    慢查詢原因和解決方案:

    ①,資料庫自身原因:記憶體爆滿,發生死鎖,伺服器卡死等。

    解決方法:增加記憶體,資料庫連線池調整等。

    ②,資料庫表設計問題:表中資料量過大,關鍵欄位沒有加索引,索引列有大量空等。

    解決方法:採取分表方式(分庫分表,水平,垂直分表等)將資料均衡分佈在不同的伺服器上,增加索引(避免索引欄位為大欄位和很多空的情況)!

    解決方法:最佳化sql:1,條件,排序,分組等使用索引列;2,如果查詢出來的資料量過大,採取分頁,多次查詢的方式,避免記憶體爆滿;

    我昨天就是碰到提供給別人的介面,傳入的查詢條件過少,從60幾萬的資料中篩選30幾萬的資料,然後列印日誌的時候伺服器爆了,頻繁重啟,重啟之後繼續掛。。。

  • 中秋節和大豐收的關聯?
  • 車顛了下,出現兩故障燈,要緊嗎?