MySQL效能指標及計算方法
絕大多數MySQL效能指標可以透過以下兩種方式獲取:
(1)mysqladmin
使用mysqladmin extended-status命令獲得的MySQL的效能指標,預設為累計值。如果想了解當前狀態,需要進行差值計算;加上引數 ——relative(-r),就可以看到各個指標的差值,配合引數——sleep(-i)就可以指定重新整理的頻率。
(2)Show global status
可以列出MySQL伺服器執行各種狀態值,累計值。
mysqladmin extended-status命令及show global status得到的指標項特別多。實際應用中,重點關注以下效能指標:
tps/qps
tps: Transactions Per Second,每秒事務數;
qps: Queries Per Second每秒查詢數;
通常有兩種方法計算tps/qps:
方法1:
基於 com_commit、com_rollback 計算tps,基於 questions 計算qps。
TPS = Com_commit/s + Com_rollback/s
其中,
Com_commit /s
=
mysqladmin extended-status ——relative ——sleep
=
1
|
grep -w Com_commit
Com_rollback/s
=
mysqladmin extended-status ——relative ——sleep
=
1
|
grep -w Com_rollback
QPS 是指MySQL Server 每秒執行的Query總量,透過Questions
(
客戶的查詢數目
)
狀態值每秒內的變化量來近似表示,所以有:
QPS
=
mysqladmin extended-status ——relative ——sleep
=
1
|
grep -w Questions
仿照上面的方法還可以得到,mysql每秒select、insert、update、delete的次數等,如:
Com_select/s
=
mysqladmin extended-status ——relative ——sleep
=
1
|
grep -w Com_select
Com_select/s:平均每秒select語句執行次數
Com_insert/s:平均每秒insert語句執行次數
Com_update/s:平均每秒update語句執行次數
Com_delete/s:平均每秒delete語句執行次數
方法2:
基於com_%計算tps ,qps
tps
=
Com_insert/s + Com_update/s + Com_delete/s
qps
=
Com_select/s + Com_insert/s + Com_update/s + Com_delete/s
執行緒狀態
* threads_running:
當前正處於啟用狀態的執行緒個數
* threads_connected:
當前連線的執行緒的個數
### 流量狀態
* Bytes_received/s:
平均每秒從所有客戶端接收到的位元組數,單位KB
* Bytes_sent/s:
平均每秒傳送給所有客戶端的位元組數,單位KB
innodb檔案讀寫次數
* innodb_data_reads:
innodb平均每秒從檔案中讀取的次數
* innodb_data_writes:
innodb平均每秒從檔案中寫入的次數
* innodb_data_fsyncs:
innodb平均每秒進行fsync
()
操作的次數
innodb讀寫量
* innodb_data_read:
innodb平均每秒鐘讀取的資料量,單位為KB
* innodb_data_written:
innodb平均每秒鐘寫入的資料量,單位為KB
innodb緩衝池狀態
* innodb_buffer_pool_reads:
平均每秒從物理磁碟讀取頁的次數
* innodb_buffer_pool_read_requests:
平均每秒從innodb緩衝池的讀次數(邏輯讀請求數)
* innodb_buffer_pool_write_requests:
平均每秒向innodb緩衝池的寫次數
* innodb_buffer_pool_pages_dirty:
平均每秒innodb快取池中髒頁的數目
* innodb_buffer_pool_pages_flushed:
*
innodb_buffer_read_hit_ratio
=
(
1
- Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests
)
*
100
innodb緩衝池的讀命中率
*
Innodb_buffer_usage
=
(
1
- Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total
)
*
100
Innodb緩衝池的利用率
innodb日誌
innodb_os_log_fsyncs:
平均每秒向日志文件完成的fsync
()
寫數量
innodb_os_log_written:
平均每秒寫入日誌檔案的位元組數
innodb_log_writes:
平均每秒向日志文件的物理寫次數
innodb_log_write_requests:
平均每秒日誌寫請求數
innodb行
innodb_rows_deleted:
平均每秒從innodb表刪除的行數
innodb_rows_inserted:
平均每秒從innodb表插入的行數
innodb_rows_read:
平均每秒從innodb表讀取的行數
innodb_rows_updated:
平均每秒從innodb表更新的行數
innodb_row_lock_waits:
一行鎖定必須等待的時間數
innodb_row_lock_time:
行鎖定花費的總時間,單位毫秒
innodb_row_lock_time_avg:
行鎖定的平均時間,單位毫秒
MyISAM讀寫次數
key_read_requests:
MyISAM平均每秒鐘從緩衝池中的讀取次數
Key_write_requests:
MyISAM平均每秒鐘從緩衝池中的寫入次數
key_reads :
MyISAM平均每秒鐘從硬碟上讀取的次數
key_writes :
MyISAM平均每秒鐘從硬碟上寫入的次數
MyISAM緩衝池
MyISAM平均每秒key buffer利用率
Key_usage_ratio
=
Key_blocks_used/
(
Key_blocks_used+Key_blocks_unused
)
*100
MyISAM平均每秒key buffer讀命中率
Key_read_hit_ratio
=(
1-Key_reads/Key_read_requests
)
*100
MyISAM平均每秒key buffer寫命中率
Key_write_hit_ratio
=(
1-Key_writes/Key_write_requests
)
*100
臨時表
Created_tmp_disk_tables:
伺服器執行語句時在硬碟上自動建立的臨時表的數量
Created_tmp_tables:
伺服器執行語句時自動建立的記憶體中的臨時表的數量
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超過10%,如果Created_tmp_tables值比較大,可能是排序句子過多或者連線句子不夠最佳化
其他
slow_queries:
執行時間超過long_query_time秒的查詢的個數(重要)
sort_rows:
已經排序的行數
open_files:
開啟的檔案的數目
open_tables:
當前開啟的表的數量
select_scan:
對第一個表進行完全掃描的聯接的數量
此外,還有一些效能指標不能透過mysqladmin extended-status或show global status直接得到,但是十分重要。
response time: 響應時間
Percona提供了tcprstat工具統計響應時間,此功能預設是關閉的,可以透過設定引數query_response_time_stats=1開啟這個功能。
有兩種方法檢視響應時間:
(1)透過命令SHOW QUERY_RESPONSE_TIME檢視響應時間統計;
(2)透過INFORMATION_SCHEMA裡面的表QUERY_RESPONSE_TIME來檢視。
Slave delay: 備庫延遲
可以在slave節點上執行show slave status\G命令,Seconds_Behind_Master項的值即為slave當前的延時量,單位秒。
上一篇:香港渣打銀行開戶指南
下一篇:自卑變自信變社牛