一.概述 隨著上線後,數據越來越多,很多sql語句開始顯露出性能問題,本章介紹在mysql中優化sql語句的方法。 1. 通過show status 命令瞭解各種sql的執行頻率 通過show [session | global] 命令可以提供伺服器狀態信息,也可以在操作系統上使用mysqladmi ...
一.概述
隨著上線後,數據越來越多,很多sql語句開始顯露出性能問題,本章介紹在mysql中優化sql語句的方法。
1. 通過show status 命令瞭解各種sql的執行頻率
通過show [session | global] 命令可以提供伺服器狀態信息,也可以在操作系統上使用mysqladmin extended-status 命令來獲得。 session 是預設參數 是當前連接的統計結果, global 是自資料庫上次啟動到今的統計結果。
-- 查看全局所有統計的值 SHOW GLOBAL STATUS LIKE 'Com%';
(1) Com_xxx:通常比較關心的是以下幾個統計參數
Com_select |
執行select 操作的次數,一次查詢只累計加1 |
Com_insert |
執行insert操作的次數,對於批量插入的insert操作,只累計加1 |
Com_update |
執行update操作的次數 |
Com_delete |
執行delete 操作的次數 |
(2) 針對innodb 存儲引擎的參數,累加的演算法有所不同
Innodb_rows_read |
Select 查詢返回的行數 |
Innodb_rows_inserted |
執行insert操作插入的行數 |
Innodb_rows_updated |
執行update操作更新的行數 |
Innodb_rows_deleted |
執行delete操作刪除的行數 |
通過以上參數,可以瞭解當前資料庫的應用是以插入更新為主還是查詢操作為主,以及各種類型的sql的分佈比例。
(3) com_commit和com_rollback
對於事務型應用,通過com_commit和com_rollback可以瞭解事務提交和回滾的情況,對於回滾操作非常頻繁的資料庫,可能意味著應用編寫存在問題。
(4) 以下參數便於用戶瞭解資料庫的基本情況
connections |
試圖連接mysql 伺服器的次數 |
Uptime |
伺服器工作時間(單位:秒) 9001527秒 = 工作了104天 |
Slow_queries |
慢查詢的次數. |
對於Slow_queries 是指超過Long_query_time值就會被記錄。Long_query_time表示超過多少秒的查詢就寫入日誌,預設的是10s,設置為0的話表示記錄所有的查詢。
-- 下麵設置的時間是2秒 SHOW VARIABLES LIKE 'long%'