MySql引起的CPU消耗你懂嗎

誰消耗CPU

用戶、系統、IO等待、軟硬中斷、空閒。
其中系統和軟硬中斷是比較難改變的,另外用戶和IO等待消耗了大部分CPU

用戶消耗和IO等待

用戶空間CPU消耗,各種邏輯運算:

  • 函數
  • 排序
  • 類型轉換
  • 邏輯IO訪問
  • 以及等待IO請求完成

  • IO等待其實是等待IO請求的完成,這個時候CPU是空閒的

影響

  • 吞吐量下降
  • 查詢響應時間增加
  • 慢查詢數增加
    對MySQL的併發增加,也會產生這些影響

吞吐量

QPS:Queries Per Second的縮寫,意思是每秒查詢率。一臺服務器每秒相應的查詢次數。

TPS:Transactions Per Second的縮寫,意思爲事務數/秒。一個事務指客戶機向服務器發送請求,服務器處理,服務器返回結果的過程。在發送請求時計時,收到響應後結束計時,這樣子來計算tps。

併發數:系統同時處理的事務數

系統吞吐量三個重要參數:QPS(TPS),併發數,平均相應時間
QPS(TPS)=併發數/平均響應時間

減少IO等待的消耗

減少IO量:

  • 使用合適的索引減少掃描的行數,空間換時間

提升IO處理能力:

  • 加cache,加磁盤

減少用戶消耗

減少邏輯運算量:

  • 避免使用函數,將運算轉移至應用服務器
  • 減少排序,利用索引取得有序數據
  • 減少類型轉換
  • 儘量使用簡單類型,更小的數據類型佔用更少的磁盤、內存、CPU緩存、CPU週期

減少邏輯IO量:

  • index,優化索引,減少不必要的表掃描

  • table,合理拆分,適度冗餘
    很少使用的大字段拆分到獨立表,頻繁使用的小字段冗餘到引用表

  • SQL,調整SQL寫法,利用現有索引,避免掃描和排序

  • 數據類型,夠用就行,不必要用大字段
    tinyint夠用不用int,int夠用不用bigint

減少Query請求量

  • 適當緩存,對多次請求的數據緩存
  • 優化實現,去除不必要的重複請求,禁止重複請求相同數據,通過參數傳遞減少訪問
  • 合理需求

歡迎關注我的公衆號

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章