MySQL一些監控項整理

####### GET VARIABLES
version:數據庫版本
key_buffer_size:myisam的索引buffer大小
sort_buffer_size:會話的排序空間(每個線程會申請一個)。
join_buffer_size:這是爲鏈接操作分配的最小緩存大小,這些連接使用普通索引掃描、範圍掃描,或者連接不使用索引。
max_connections:最大允許同時連接的數量。
max_connect_errors:允許一個主機最多的錯誤鏈接次數,如果超過了就會拒絕之後鏈接(默認100)。可以使用flush hosts命令去解除拒絕。
open_files_limit:操作系統允許mysql打開的文件數量。這個限制mysql服務器同時能打開的文件句柄數。
table_open_cache:所有線程打開表的數量。可以通過opened_tables狀態確定是否需要增大 table_open_cache,如果opened_tables比較大,且一直還在增大說明需要增大table_open_cache。
max_tmp_tables:這個參數被棄用了。
max_heap_table_size:建立的內存表的最大大小(默認是16M)。這個參數和tmp_table_size一起限制內部臨時表的最大值(取這兩個參數的小的一個),如果超過限制,則表會變爲innodb或myisam引擎(5.7.5之前是默認是myisam,5.7.6開始是innodb,可以通過internal_tmp_disk_storage_engine參數調整)。
max_allowed_packet:一個包的最大大小。

########## GET INNODB INFO
#innodb variables
innodb_version
innodb_buffer_pool_instances:將innodb緩衝池分爲指定的多個(默認爲1)。
innodb_buffer_pool_size:innodb緩衝池大小。5.7.5引入了innodb_buffer_pool_chunk_size,

innodb_doublewrite:是否開啓doublewrite.(默認開啓)
innodb_file_per_table:5.6.6默認開啓。
*innodb_flush_log_at_trx_commit:默認值是1.
*innodb_flush_method
innodb_force_recovery:該參數默認爲0,代表黨發生需要恢復時,進行所有的恢復操作,當不能進行有效恢復時,如數據頁發生了corruption,mysql數據庫可能發生宕機,並把錯誤寫入錯誤日誌中去。
1:忽略檢查到corrupt。
2:阻止master thread線程的運行,如thread線程需要進行full purge操作,而這會導致crash.
3:不進行事物的回滾操作
4:不進行插入緩衝的合併操作
5:不查看撤銷日誌,InnoDB存儲引擎會將未提交的事務視爲已提交
6:不進行前滾的操作

innodb_io_capacity:innodb執行io活動的上限。默認值爲200. 對於刷新到磁盤頁的數量,會按照innodb_io_capatity的百分比進行控制。合併寫入的數量爲innodb_io_capatity的5%。刷新髒頁時,刷新髒頁的數量爲innodb_io_capcity;
innodb_read_io_threads:IO讀線程的數量
innodb_write_io_threads:IO寫線程的數量

#innodb status
Innodb_buffer_pool_pages_total:innodb緩衝池頁的數量。大小等於innodb_buffer_pool_size/(16*1024)
Innodb_buffer_pool_pages_data:innodb緩衝池中包含數據的頁的數量。
Innodb_buffer_pool_pages_dirty:當前innodb緩衝池中髒頁的數量。
Innodb_buffer_pool_pages_flushed:innodb緩衝中需要刷新頁的數量。
Innodb_buffer_pool_pages_free:innodb緩衝中空閒頁的數量。
Innodb_buffer_pool_pages_misc:比較繁忙的頁,這些是分配給如鎖、自適應哈希索引的頁
Innodb_page_size:innodb引擎頁的大小
Innodb_pages_created:innodb表上操作生成的頁
Innodb_pages_read:innodb表上的操作,從innodb 緩衝池中讀取的頁的數量。
Innodb_pages_written:innodb表上的操作,寫頁的數量。
Innodb_row_lock_current_waits:當前innodb表的操作等待行鎖,鎖的數量。

#innodb persecond info(查詢出1s前後下列的參數,並計算差值)
Innodb_buffer_pool_read_requests:邏輯讀請求。

計算每秒的數據物理讀和寫的次數:
Innodb_buffer_pool_reads: 邏輯讀沒有在innodb緩衝池中找到,不得不查詢磁盤的數量。
Innodb_buffer_pool_write_requests:寫入innodb緩衝的寫操作數量。
Innodb_buffer_pool_pages_flushed:innodb緩衝中需要刷新頁的數量。

計算每秒Innodb rows select
Innodb_rows_read:從innodb表讀取的行的數量。

計算每秒Innodb rows DML
Innodb_rows_deleted:從innodb表刪除行的數量。
Innodb_rows_inserted:插入innodb表的行的數量。
Innodb_rows_updated:在innodb表上更新行的數量

######### GET STATUS
Uptime:數據庫運行的時間
Open_files:打開的文件的數量(不包含 sockets、 pipes、和存儲引擎自己內部打開的文件而不是要求mysql服務器級別打開的文件)。
Opend_files:被my_open()函數打開的文件的數量。(有的存儲引擎不使用my_open函數打開文件,這些存儲引擎打開文件不會引起這個參數增加)
Open_tables:打開的表的數量。
Opened_tables:被打開過的表的數量。(如果這個數量比較大,則說明你的table_open_cache可能太小了)
Threads_connected:當前打開的連接的數量。
Threads_running:沒有休息的線程數量。
Threads_created:創建的去處理連接的線程數量。(如果這個數量比較大,則可能需要增大thread_cache_size大小。這個緩存的丟失率可以用Threads_created/Connections計算)
Threads_cached:在線程緩存中的線程。(這個參數在嵌入式服務器中是沒意義的,並且在5.7.2在嵌入式服務器不可見)
Connections:所有嘗試連接服務器的數量(包括成功的和失敗的)。
Aborted_clients:掛掉的連接數量(因爲客戶端沒有關閉這個連接)。
Aborted_connects:嘗試連接mysql數據庫服務器失敗的次數。(嘗試連接失敗後會記錄到host_cache中(比如密碼錯誤),host_cache表字段COUNT_AUTHENTICATION_ERRORS會記錄失敗的次數,超過max_connect_errors就會拒絕下才連接,除非執行flush hosts)
Key_blocks_not_flushed:mysiam的key cache,被修改了但是沒有刷新到磁盤的數量。
Key_blocks_unused:myisam key cache沒有使用的塊數量。
Key_blocks_used:mysiam key cache中使用的塊數量。(這個是一個高水位線,表明曾經使用的最多的塊數量)

######### GET STATUS PERSECOND (這裏是分別得到一秒前後的各個狀態值,然後向減)
Connections:所有嘗試連接服務器的數量(包括成功的和失敗的)。
Bytes_received:從所有客戶端收到的字節數。
Bytes_sent:發送給所有客戶端的字節數

DML Persecond:
Com_select:select 語句執行的次數。
Com_insert:插入語句執行的次數。
Com_update:更新語句執行的次數。
Com_delete:刪除語句執行的次數

QPS計算:
Questions:服務器執行sql語句的數量(不包含執行的存儲過程中的sql語句數量)。
Queries:服務器執行sql語句的數量(包含執行的存儲過程中的sql語句數量)。

TPS計算:
1s前後的(Com_commit-Com_rollback)相減得到的計算結果。
Com_commit:commit語句被執行的次數。
Com_rollback:rollback語句被執行的次數。

Created_tmp_disk_tables:服務器創建的內部的基於磁盤的臨時表數量
Created_tmp_files:MySQL創建的臨時文件的數量
Created_tmp_tables:執行語句時mysql創建的內部臨時表數量
Table_locks_immediate:請求鎖立即獲得的次數
Table_locks_waited:請求鎖沒有立即獲得的次數(需要等待)。如果這個值比較高,那就說明有性能問題,你應該首先優化你的查詢,然後分表或者使用備庫。
Key_read_requests:從MyISAM緩衝中讀取key塊的請求數量
Key_reads:從磁盤讀取到MyISAM緩衝中的物理讀數量。如果這個值比較大,可能是因爲key_buffer_size太小了。計算MyISAM緩衝丟失率,keyKey_reads/Key_read_requests。
Key_write_requests:寫key塊到MyISAM緩衝的數量
Key_writes:從MyISAM緩衝到磁盤的物理寫

########## GET MYSQL HITRATE
1、查詢緩存命中率
如果Qcache_hits+Com_select<>0則爲 Qcache_hits/(Qcache_hits+Com_select),否則爲0

2、線程緩存命中率
如果Connections<>0,則爲1-Threads_created/Connections,否則爲0

3、myisam鍵緩存命中率
如果Key_read_requests<>0,則爲1-Key_reads/Key_read_requests,否則爲0

4、myisam鍵緩存寫命中率
如果Key_write_requests<>0,則爲1-Key_writes/Key_write_requests,否則爲0

5、鍵塊使用率
如果Key_blocks_used+Key_blocks_unused<>0,則Key_blocks_used/(Key_blocks_used+Key_blocks_unused),否則爲0

6、創建磁盤存儲的臨時表比率
如果Created_tmp_disk_tables+Created_tmp_tables<>0,則Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables),否則爲0

7、連接使用率
如果max_connections<>0,則threads_connected/max_connections,否則爲0

8、打開文件比率
如果open_files_limit<>0,則open_files/open_files_limit,否則爲0

9、表緩存使用率
如果table_open_cache<>0,則open_tables/table_open_cache,否則爲0

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