您當前的位置:首頁 > 文化

MySQL效能指標及計算方法

作者:由 Wayne 發表于 文化時間:2020-07-19

絕大多數MySQL效能指標可以透過以下兩種方式獲取:

(1)mysqladmin

使用mysqladmin extended-status命令獲得的MySQL的效能指標,預設為累計值。如果想了解當前狀態,需要進行差值計算;加上引數 ——relative(-r),就可以看到各個指標的差值,配合引數——sleep(-i)就可以指定重新整理的頻率。

MySQL效能指標及計算方法

MySQL效能指標及計算方法

(2)Show global status

可以列出MySQL伺服器執行各種狀態值,累計值。

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當前的延時量,單位秒。

標簽: InnoDB  每秒  com  buffer  平均