您好,登錄后才能下訂單哦!
這篇文章主要介紹“采集MySQL數(shù)據(jù)庫運(yùn)行狀態(tài)數(shù)據(jù)的方法”,在日常操作中,相信很多人在采集MySQL數(shù)據(jù)庫運(yùn)行狀態(tài)數(shù)據(jù)的方法問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”采集MySQL數(shù)據(jù)庫運(yùn)行狀態(tài)數(shù)據(jù)的方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
狀態(tài)數(shù)據(jù)項(xiàng)
MySQL數(shù)據(jù)庫系統(tǒng)提供了數(shù)據(jù)采集的命令:SHOW STATUS; 或者直接讀取虛擬數(shù)據(jù)庫informat_schema對(duì)象GLOBAL_STATUS(注:5.1及以上版本)的數(shù)據(jù),我們隊(duì)需要重點(diǎn)采集的數(shù)據(jù)進(jìn)行一些類別劃分。
1) SQL語句執(zhí)行量
(1). Queries
MySQL服務(wù)器執(zhí)行的所有SQL語句次數(shù),包過存儲(chǔ)過程執(zhí)行的SQL語句,但是不包含命令COM_PING 和COM_STATISTICS的執(zhí)行次數(shù);
(2). Questions
由客戶端發(fā)送給服務(wù)器端執(zhí)行的所有SQL語句次數(shù),但是不包含存儲(chǔ)過程執(zhí)行的SQL語句,也不包含命令COM_PING 和COM_STATISTICS的執(zhí)行次數(shù);
(3). Com_****統(tǒng)計(jì)
Com_insert — 記錄INSERT INTO TABLE tablename VALUES(…)…語句執(zhí)行的次數(shù);
Com_insert_select — 記錄INSERT INTO TABLE tablename SELECT …語句執(zhí)行的次數(shù);
Com_delete — 記錄DELETE [FROM] tablename…語句執(zhí)行的次數(shù);
Com_delete_multi — 記錄DELETE [FROM] tablename1,tablename2…語句執(zhí)行的次數(shù);
Com_select — 記錄SELECT …FROM tablename1…語句執(zhí)行的次數(shù);
Com_update — 記錄UPDATE tablename1 SET …語句執(zhí)行的次數(shù);
Com_update_multi — 記錄UPDATE tablename1,tabkename2 … SET …語句執(zhí)行的次數(shù);
2) 查詢緩存
Qcache_hits — 查詢語句命中查詢緩存的次數(shù);
Qcache_inserts — 查詢語句及記錄集加入到查詢緩存的數(shù)量;
Qcache_lowmem_prunes — 因查詢緩內(nèi)存容量不足,而不得不從查詢緩存中刪除的緩存記錄數(shù);
Qcache_not_cached — 從查詢緩存中沒有找到對(duì)應(yīng)緩存SQL語句的SELECT查詢語句數(shù)量;
Qcache_queries_in_cache — 有多少查詢語句正緩存在查詢緩存中;
3) MyISAM引擎
Key_blocks_used — 索引緩存區(qū)內(nèi)塊使用量,通過記錄歷史數(shù)據(jù)可以找出內(nèi)存塊使用情況;
Key_blocks_unused — 索引緩存區(qū)內(nèi)存未使用的量,可以推斷出有索引緩存區(qū)的使用率;
Key_read_requests — 直接通過索引緩存區(qū)獲得相應(yīng)的數(shù)據(jù),也即數(shù)據(jù)庫邏輯讀IO的量;
Key_reads — 無法通過索引緩存區(qū)獲得相應(yīng)的數(shù)據(jù),必須讀文件系統(tǒng)或磁盤上的數(shù)據(jù),也
即數(shù)據(jù)庫物理讀的量;
Key_write_requests —直接通過修改索引緩存區(qū)中的索引值的邏輯寫IO量;
Key_writes — 無法通過直接修改索引緩存區(qū)中的索引值完成,必須直接修改文件系統(tǒng)或磁
盤上數(shù)據(jù)的物理寫IO量;
4) InnoDB引擎
Innodb_buffer_pool_read_ahead_rnd — InnoDB引擎后臺(tái)讀線程隨機(jī)性讀而產(chǎn)生的IO數(shù)量,一般發(fā)生在掃描一個(gè)表數(shù)據(jù),以隨機(jī)性的方式;
Innodb_buffer_pool_read_ahead_seq — InnoDB引擎后臺(tái)讀線程順序讀而產(chǎn)生的IO數(shù)量,一般發(fā)生在順序全表掃描;
Innodb_buffer_pool_read_requests — InnoDB引擎數(shù)據(jù)的邏輯讀IO量;
Innodb_buffer_pool_reads — InnoDB引擎數(shù)據(jù)的物理讀IO量;
Innodb_buffer_pool_wait_free — 當(dāng)Innodb_buffer_pool中無可用的空閑內(nèi)存塊,且需要讀或創(chuàng)建一個(gè)內(nèi)存塊,則需要刷新一頁,再分配給需要的線程
進(jìn)行寫操作,這個(gè)時(shí)候就會(huì)發(fā)生等待而計(jì)數(shù)。因?yàn)镮nnoDB引擎表的數(shù)據(jù)都都是在InnoDB內(nèi)存緩存區(qū)中進(jìn)行讀寫操作,
然后由后臺(tái)線程負(fù)責(zé)把數(shù)據(jù)寫到磁盤上。
Innodb_buffer_pool_write_requests — InnoDB引擎數(shù)據(jù)寫向InnoDB_buffer_pool_size的邏輯寫IO量;
Innodb_rows_deleted — InnoDB引擎表數(shù)據(jù)被刪除的行數(shù);
Innodb_rows_inserted — 向InnoDB引擎表增加的記錄行數(shù);
Innodb_rows_updated — InnoDB引擎表數(shù)據(jù)被修改的行數(shù);
Innodb_rows_read — 讀取InnoDB引擎表中數(shù)據(jù)的行數(shù),UPDATE、DELETE、OPTIMIZE等會(huì)對(duì)數(shù)據(jù)表對(duì)象有數(shù)據(jù)讀取的操作,都被計(jì)算在其內(nèi);
5) 事務(wù)相關(guān)
Com_commit — 支持事務(wù)的引擎,進(jìn)行的事務(wù)提交次數(shù);
Com_rollback — 支持事務(wù)的引擎,進(jìn)行的事務(wù)回滾次數(shù);
6) 臨時(shí)表或文件
Created_tmp_files — MySQL系統(tǒng)創(chuàng)建的臨時(shí)文件數(shù)量總和,不包含顯示創(chuàng)建的臨時(shí)表,另外臨時(shí)文件轉(zhuǎn)換成臨時(shí)表的話,則不一定一一對(duì)應(yīng),
也不一定是三分之一的關(guān)系。若是系統(tǒng)隱患創(chuàng)建的臨時(shí)表,則都是MyISAM格式的,所以會(huì)有三個(gè)臨時(shí)文件;若是指定
臨時(shí)表存儲(chǔ)引擎為heap,則是一個(gè)臨時(shí)文件;
Created_tmp_disk_tables — MySQL系統(tǒng)創(chuàng)建基于磁盤上的臨時(shí)表數(shù)量,臨時(shí)默認(rèn)創(chuàng)建都是基于內(nèi)存中,若是超過tmp_table_size或
max_heap_table_size的大小,則會(huì)轉(zhuǎn)化成基于磁盤的臨時(shí)表;
Created_tmp_tables — MySQL系統(tǒng)創(chuàng)建的不管基于磁盤的,還是基于內(nèi)存的,該值都增加;
7) 其他
Bytes_sent — MySQL服務(wù)器端發(fā)送給客戶端的字節(jié)數(shù);
Bytes_received — 所有客戶端發(fā)送給MySQL服務(wù)器端的字節(jié)數(shù);
Slow_queries — SQL語句執(zhí)行時(shí)間大于long_query_time值的數(shù)量;
Sort_range — SQL語句使用范圍排序的數(shù)量;
Sort_rows — SQL語句引起數(shù)據(jù)排序的總行數(shù);
Sort_scan — 要進(jìn)行數(shù)據(jù)排序而對(duì)表掃描的SQL執(zhí)行次數(shù);
Aborted_connects — 客戶端異常崩潰而沒有正常關(guān)閉數(shù)據(jù)庫連接線程的數(shù)量;
Connections — 客戶端嘗試與MySQL服務(wù)器端建立連接的次數(shù),失敗的次數(shù)也算在其內(nèi);
Uptime — mysqld服務(wù)進(jìn)程運(yùn)行的時(shí)長(zhǎng),單位秒;
數(shù)據(jù)采集方式
狀態(tài)性能數(shù)據(jù)的采集,不管用何辦法都是執(zhí)行SHOW GLOBAL STATUS;然后再對(duì)需要的數(shù)據(jù)項(xiàng),通過shell腳本的方式獲得;
或者
1 | SELECT VARIABLE_NAME, VARIABLE_VALUE FROM information_schema. GLOBAL_STATUS WHERE VARIABLE_NAME IN (…); |
采集到的數(shù)據(jù),我們還需要進(jìn)行分類對(duì)待,一類數(shù)據(jù)項(xiàng)只為某個(gè)時(shí)間點(diǎn)的狀態(tài)值,另外一類數(shù)據(jù)項(xiàng)為累計(jì)的值
數(shù)據(jù)展示分析
針對(duì)腳本程序自動(dòng)采集的數(shù)據(jù),作部分?jǐn)?shù)據(jù)截圖展示,以及把部分參數(shù)數(shù)據(jù)導(dǎo)成CVS格式,然后在Windows環(huán)境下繪制曲線圖的方式,以便直觀地對(duì)比分析,另外也可以自己開發(fā)一套程序或者借助其他繪圖工具的方式繪制趨勢(shì)圖。
針對(duì)采集的數(shù)據(jù),對(duì)部分參數(shù)(三個(gè)參數(shù):Com_update、Innodb_buffer_pool_reads、 Innodb_buffer_pool_read_requests)做一個(gè)圖形化分析的效果展示,我們可以通過SQL語句生成cvs格式的數(shù)據(jù),比如針 對(duì)Com_update數(shù)據(jù)每秒平均執(zhí)行次數(shù)的數(shù)據(jù)導(dǎo)出SQL語句:
1 2 3 4 5 6 | SELECT M.CreateDate,M.total_num/N.total_num INTO OUTFILE 'com_update.cvs' FROM performance_innodb M INNER JOIN ( SELECT total_num,CreateDate FROM performance_innodb WHERE statu_item= 'Uptime' AND CreateDate>= '2011-10-12' AND CreateDate< '2011-10-13' AND host_port=3308) N ON M.CreateDate=N.CreateDate WHERE host_port=3308 and statu_item= 'Com_update' and M.CreateDate>= '2011-10-12' AND M.CreateDate< '2011-10-13' ; |
1) Performance_innodb表數(shù)據(jù)
2) Com_update數(shù)據(jù)曲線圖
3) Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests曲線圖
備注:
MySQL數(shù)據(jù)庫在跑熱之后,且需要操作的業(yè)務(wù)數(shù)據(jù)基本都存儲(chǔ)在內(nèi)存中,為此InnoDB引擎表的物理IO讀/每秒 相比InnoDB引擎表的邏輯IO讀/每秒非常小,為此曲線圖中看到幾乎接近水平軸。
到此,關(guān)于“采集MySQL數(shù)據(jù)庫運(yùn)行狀態(tài)數(shù)據(jù)的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。