[MySQL優化] -- 如何瞭解SQL的執行頻率

MySQL 客戶端連接成功後,通過 show [session|global]status 命令 可以提供服務器狀態信息,也可以在操作系統上使用 mysqladmin extended-status 命令獲得這些消息。

    show [session|global] status 可以根據需要加上參數“ session ”或者“ global ”來顯示 session 級(當前連接)的統計結果和 global 級(自數據庫上次啓動至今)的統計結果。如果不寫,默認使用參數是“ session ”。

    Com_xxx 表示每個 xxx 語句執行的次數,我們通常比較關心的是以下幾個統計參數 :

  •  Com_select :執行 select 操作的次數,一次查詢只累加 1 。
  •  Com_insert :執行 INSERT 操作的次數,對於批量插入的 INSERT 操作,只累加一次。
  •  Com_update :執行 UPDATE 操作的次數。
  •  Com_delete :執行 DELETE 操作的次數。

    知道了這些信息就方便我們確定我們到底需要什麼樣的存儲引擎了,一般來說update較多的時候 Innodb 引擎效率會稍微高一些!

 

    上面這些參數對於所有存儲引擎的表操作都會進行累計。下面這幾個參數只是針對 InnoDB 存儲引擎的,累 加的算法也略有不同:

  •  Innodb_rows_read : select 查詢返回的行數。
  •  Innodb_rows_inserted :執行 INSERT 操作插入的行數。
  •  Innodb_rows_updated :執行 UPDATE 操作更新的行數。
  •  Innodb_rows_deleted :執行 DELETE 操作刪除的行數。

 

    通過以上幾個參數,可以很容易地瞭解當前數據庫的應用是以插入更新爲主還是以查詢操作爲主,以及各種類型的 SQL 大致的執行比例是多少。對於更新操作的計數,是對執行次數的計數,不論提交還是回滾都會進行累加。

    對於事務型的應用,通過 Com_commit 和 Com_rollback 可 以瞭解事務提交和回滾的情況,對於回滾操作非常頻繁的數據庫,可能意味着應用編寫存在問題。

    此外,以下幾個參數便於我們瞭解數據庫的基本情況:

  •  Connections : 試圖連接 MySQL 服務器的次數。
  •  Uptime :服務器工作時間。
  •  Slow_queries : 慢查詢的次數。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章