小編給大家分享一下MySQL數(shù)據(jù)庫服務(wù)器的性能分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的澄城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
性能:為完成某件任務(wù)所需要的時(shí)間度量,in other words 性能即響應(yīng)時(shí)間
吞吐量:?jiǎn)挝粫r(shí)間內(nèi)的查詢數(shù)據(jù)(性能定義的倒數(shù))
第一步:弄清楚時(shí)間都去哪了,在哪消耗了時(shí)間
如果通測(cè)量沒有找到答案,測(cè)量方式錯(cuò)了或不夠完善,只測(cè)量需要優(yōu)化的活動(dòng)
不要在錯(cuò)誤的時(shí)間啟動(dòng)或停止測(cè)試,測(cè)量的是聚合后的信息而不是目標(biāo)活動(dòng)本身;需要定位和優(yōu)化子任務(wù)
原則:無法測(cè)量便無法有效地優(yōu)化
性能剖析:測(cè)量、分析時(shí)間花費(fèi)在哪里的主要方法
1、測(cè)量任務(wù)所花費(fèi)的時(shí)間;2、對(duì)結(jié)果統(tǒng)計(jì)、排序(重要前排)
可將相似任務(wù)分組匯總,通過性能剖析報(bào)告獲需要的結(jié)果;報(bào)告會(huì)列出all任務(wù),每行記錄一個(gè)任務(wù):
任務(wù)名、執(zhí)行時(shí)間、消耗時(shí)間、平均執(zhí)行時(shí)間,執(zhí)行占全部時(shí)間的百分比;按照任務(wù)的消耗時(shí)間降序排序;
基于執(zhí)行時(shí)間的分析:什么任務(wù)的執(zhí)行時(shí)間最長(zhǎng)
基于等待的分析:判斷任務(wù)在什么地方唄阻塞的時(shí)間最長(zhǎng)
性能剖析中缺失但是重要的信息:
1、值得優(yōu)化的查詢
占總響應(yīng)時(shí)間比重很小的查詢不值得優(yōu)化;成本大于收益、停止優(yōu)化
2、異常情況
沒有顯式要優(yōu)化的也要優(yōu)化,如執(zhí)行次數(shù)少但每次都特別慢的任務(wù)
3、未知的未知
丟失時(shí)間:任務(wù)總時(shí)間與實(shí)際測(cè)量到的時(shí)間的差,即使沒有發(fā)現(xiàn)也要注意這類問題存在的可能性
4、被掩藏的細(xì)節(jié)
無法顯示all響應(yīng)時(shí)間的分布,更多信息、直方圖、百分比、標(biāo)準(zhǔn)差、偏差指數(shù)
5、無法再更高層次的堆棧中進(jìn)行交互式 分析
性能瓶頸的影響因素:
1、外部資源,調(diào)用外部web服務(wù)或搜索引擎
2、應(yīng)用需要處理大量數(shù)據(jù),分析一個(gè)超大的xml文件
3、循環(huán)中執(zhí)行昂貴的操作:濫用正則
4、使用低效的算法:暴力搜索算法
建議:新的項(xiàng)目中應(yīng)考慮包含性能剖析的代碼
鋪獲MySQL查詢到日志文件:
1、慢查詢?nèi)罩荆洪_銷低、精度高,大的磁盤空間,長(zhǎng)期開啟 注意部署日志輪轉(zhuǎn)工具,只在收集負(fù)載樣本期間開啟即可,5.1后微秒級(jí)別;
2、通用日志,查詢請(qǐng)求到服務(wù)器時(shí)進(jìn)行記錄,不包含響應(yīng)時(shí)間和執(zhí)行計(jì)劃
自頂向下,先生成剖析報(bào)告(pt-query-digest),查看特別關(guān)注的部分
思考為什么花費(fèi)這么長(zhǎng)時(shí)間、如何去優(yōu)化
查看: show variables like "%pro%";【源】
默認(rèn)禁用,開啟:set profiling=1;然后在服務(wù)器執(zhí)行語句(關(guān)閉 set profiling=off;)
語法:
SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]] type: ALL --顯示所有的開銷信息 | BLOCK IO --顯示塊IO相關(guān)開銷 | CONTEXT SWITCHES --上下文切換相關(guān)開銷 | CPU --顯示CPU相關(guān)開銷信息 | IPC --顯示發(fā)送和接收相關(guān)開銷信息 | MEMORY --顯示內(nèi)存相關(guān)開銷信息 | PAGE FAULTS --顯示頁面錯(cuò)誤相關(guān)開銷信息 | SOURCE --顯示和Source_function,Source_file,Source_line相關(guān)的開銷信息 | SWAPS --顯示交換次數(shù)相關(guān)開銷的信息
實(shí)質(zhì)是這些開銷信息被記錄到information_schema.profiling表
show profiles;查看 show profile for query 2; 獲取指定查詢的開銷(第二條查詢開銷明細(xì)) show profile cpu for query 2 ;查看特定部分的開銷,如下為CPU部分的開銷 show profile block io,cpu for query 2; 同時(shí)查看不同資源開銷
全局show global status、基于某個(gè)連接會(huì)話級(jí)別,作用域要注意
計(jì)數(shù)器顯示活動(dòng)的頻繁程度,常用:句柄計(jì)數(shù)器、臨時(shí)文件、表計(jì)數(shù)器
會(huì)創(chuàng)建臨時(shí)表,通過句柄操作(引用、指針?)訪問此臨時(shí)表,影響show status結(jié)果中對(duì)應(yīng)的數(shù)字
將MySQL中響應(yīng)時(shí)間超過閾值long_query_time的語句記錄到慢查詢?nèi)罩局校ㄈ罩究梢詫懭胛募蛘邤?shù)據(jù)庫表,如果對(duì)性能要求高的話,建議寫文件),默認(rèn)是10s,需要手動(dòng)開啟
查看:
(1)slow_query_log的值為ON為開啟慢查詢?nèi)罩?,OFF則為關(guān)閉慢查詢?nèi)罩尽?/p>
(2)slow_query_log_file的值是記錄的慢查詢?nèi)罩镜轿募校?strong>注意:默認(rèn)名為主機(jī)名.log,慢查詢?nèi)罩臼欠駥懭胫付ㄎ募?,需要指定慢查詢的輸出日志格式為文件,相關(guān)命令為:show variables like ‘%log_output%’;去查看輸出的格式)。
(3)long_query_time指定了慢查詢的閾值,即如果執(zhí)行語句的時(shí)間超過該閾值則為慢查詢語句,默認(rèn)值為10秒。
(4)log_queries_not_using_indexes如果值設(shè)置為ON,則會(huì)記錄所有沒有利用索引的查詢(注意:如果只是將log_queries_not_using_indexes設(shè)置為ON,而將slow_query_log設(shè)置為OFF,此時(shí)該設(shè)置也不會(huì)生效,即該設(shè)置生效的前提是slow_query_log的值設(shè)置為ON),一般在性能調(diào)優(yōu)的時(shí)候會(huì)暫時(shí)開啟,開啟后使用full index scan的sql也會(huì)被記錄到慢查詢?nèi)罩尽?/p>
//上述命令只對(duì)當(dāng)前生效,當(dāng)MySQL重啟失效,如果要永久生效,需要配置my.cnf 查看輸出格式:文件?表show variables like ‘%log_output%’; 開啟通用日志查詢: set global general_log=on; 關(guān)閉通用日志查詢: set globalgeneral_log=off; 設(shè)置通用日志輸出為表方式: set globallog_output=’TABLE’; 設(shè)置通用日志輸出為文件方式: set globallog_output=’FILE’; 設(shè)置通用日志輸出為表和文件方式:set global log_output=’FILE,TABLE’; 查詢慢查詢語句的個(gè)數(shù):show global status like ‘%slow%’;
哪條語句導(dǎo)致慢查詢(sql_text),該慢查詢語句的查詢時(shí)間(query_time),鎖表時(shí)間(Lock_time),以及掃描過的行數(shù)(rows_examined)等信息。
perl mysqldumpslow –s c –t 10 slow-query.log
-s 表示按何種方式排序,c、t、l、r分別是按照記錄次數(shù)、時(shí)間、查詢時(shí)間、返回的記錄數(shù)來排序,ac、at、al、ar,表示相應(yīng)的倒敘;-t 表示top的意思,后面跟著的數(shù)據(jù)表示返回前面多少條;-g 后面可以寫正則表達(dá)式匹配,大小寫不敏感。
監(jiān)視MySQL服務(wù)器,收集性能參數(shù),且表的存儲(chǔ)引擎PERFORMANCE_SCHEMA,低耗能
本地服務(wù)器,表是內(nèi)存表,表內(nèi)容在服務(wù)器啟動(dòng)時(shí)重新填充,關(guān)閉時(shí)丟棄,更改不會(huì)被復(fù)制或?qū)懭攵M(jìn)制日志
特性:
性能方案配置可被動(dòng)態(tài)的執(zhí)行SQL修改,立即影響到數(shù)據(jù)收集
監(jiān)控服務(wù)事件:事件是服務(wù)做并被感知到的任何事,時(shí)間信息可被收集
數(shù)據(jù)庫性能方案,提供對(duì)運(yùn)行時(shí)數(shù)據(jù)庫服務(wù)進(jìn)行內(nèi)部檢查的方式,關(guān)注性能數(shù)據(jù)
特定于一個(gè)數(shù)據(jù)庫服務(wù),數(shù)據(jù)庫表關(guān)聯(lián)到數(shù)據(jù)服務(wù),修改不會(huì)被備份也不寫進(jìn)二進(jìn)制日志
存儲(chǔ)引擎用“感知點(diǎn)”收集事件數(shù)據(jù),且存儲(chǔ)在performance_schema數(shù)據(jù)庫,可通過select語句進(jìn)行查詢
mysql
包含權(quán)限配置,事件,存儲(chǔ)引擎狀態(tài),主從信息,日志,時(shí)區(qū)信息,用戶權(quán)限配置等
information_schema
對(duì)數(shù)據(jù)庫元數(shù)據(jù)的抽象分析,由此提供了SQL語句方式來查詢數(shù)據(jù)庫運(yùn)行時(shí)狀態(tài),每次對(duì)information_schema的查詢都產(chǎn)生對(duì)metadata的互斥訪問,影響其他數(shù)據(jù)庫的訪問性能。
performance_schema
內(nèi)存型數(shù)據(jù)庫,使用performance_schema 存儲(chǔ)引擎,通過事件機(jī)制將mysql服務(wù)的運(yùn)行時(shí)狀態(tài)采集并存儲(chǔ)在performace_schema數(shù)據(jù)庫。注意,兩個(gè)單詞之間用下劃線連接時(shí),表示performance_schema是一個(gè)數(shù)據(jù)庫;用空格分開時(shí),表示一個(gè)數(shù)據(jù)庫性能方案,也表示一個(gè)存儲(chǔ)引擎。
以上是“MySQL數(shù)據(jù)庫服務(wù)器的性能分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站標(biāo)題:MySQL數(shù)據(jù)庫服務(wù)器的性能分析
本文網(wǎng)址:http://jinyejixie.com/article44/gpedee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、Google、網(wǎng)站收錄、用戶體驗(yàn)、手機(jī)網(wǎng)站建設(shè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)