資源描述:
《mysql性能的檢查和調(diào)優(yōu)方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、mysql性能的檢查和調(diào)優(yōu)方法>>教育資源庫 我一直是使用mysql這個(gè)數(shù)據(jù)庫軟件,它工作比較穩(wěn)定,效率也很高。在遇到嚴(yán)重性能問題時(shí),一般都有這么幾種可能: 1、索引沒有建好; 2、sql寫法過于復(fù)雜; 3、配置錯(cuò)誤; 4、機(jī)器實(shí)在負(fù)荷不了; 1、索引沒有建好 如果看到mysql消耗的cpu很大,可以用mysql的client工具來檢查?! ≡趌inux下執(zhí)行 /usr/local/mysql/bin/mysql-hlocalhost-uroot-p 輸入密碼,如果沒有密碼,則不用-p參數(shù)就可以進(jìn)到客戶
2、端界面中?! 】纯串?dāng)前的運(yùn)行情況 shoysql就一定會(huì)有性能問題 如果出現(xiàn)了性能問題,則可以進(jìn)行分析: 1、是不是有sql語句卡住了? 這是出現(xiàn)比較多的情況,如果數(shù)據(jù)庫是采用myisam,那么有可能有一個(gè)寫入的線程會(huì)把數(shù)據(jù)表給鎖定了,如果這條語句不結(jié)束,則其它語句也無法運(yùn)行?! 〔榭磒rocesslist里的time這一項(xiàng),看看有沒有執(zhí)行時(shí)間很長的語句,要留意這些語句?! ?、大量相同的sql語句正在執(zhí)行 如果出現(xiàn)這種情況,則有可能是該sql語句執(zhí)行的效率低下,同樣要留意這些語句。 然后把你所懷疑的語句統(tǒng)統(tǒng)
3、集合一下,用desc(explain)來檢查這些語句?! ∈紫瓤纯匆粋€(gè)正常的desc輸出: mysql>descselect*fromimgsgid=1651768337; +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
4、id
5、select_type
6、table
7、type
8、possible_keys
9、key
10、key_len
11、ref
12、rogs
13、const
14、PRIMAR
15、Y
16、PRIMARY
17、8
18、const
19、1
20、
21、 +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+ 1roysql會(huì)從索引中查詢imgid=1651768337這條記錄,然后再到真實(shí)表中取出所有字段,是很簡單的操作?! ey是指明當(dāng)前sql會(huì)使用的索引,mysql執(zhí)行一條簡單語句時(shí)只能使用到一條索引,注意這個(gè)限制;roysql>descselect*fromimgsinior
22、derbyclicksdesclimit10; +----+-------------+-------+------+---------------+------+---------+------+-------+-----------------------------+
23、id
24、select_type
25、table
26、type
27、possible_keys
28、key
29、key_len
30、ref
31、rogs
32、ALL
33、NULL
34、NULL
35、NULL
36、NULL
37、12506
38、Usingysql執(zhí)行時(shí)會(huì)把整個(gè)表掃描一遍,一條一條去找到匹配
39、userid=7mini的記錄,然后還要對這些記錄的clicks進(jìn)行一次排序,效率可想而知。真實(shí)執(zhí)行時(shí)如果發(fā)現(xiàn)還比較快的話,那是因?yàn)榉?wù)器內(nèi)存還足夠?qū)?2506條比較短小的記錄全部讀入內(nèi)存,所以還比較快,但是并發(fā)多起來或者表大起來的話,效率問題就嚴(yán)重了。 這時(shí)我把userid加入索引: createindexuseridonimgs(userid); 然后再檢查: mysql>descselect*fromimgsiniorderbyclicksdesclimit10; +----+-----------
40、-1234下一頁>>>>這篇文章來自..,。-+-------+------+---------------+--------+---------+-------+------+-----------------------------+
41、id
42、select_type
43、table
44、type
45、possible_keys
46、key
47、key_len
48、ref
49、rogs
50、ref
51、userid
52、userid
53、51
54、const
55、8
56、Usingysql使用了userid這個(gè)索引搜索了,用userid索引一次搜索后,結(jié)果集有8條。然后雖
57、然使用了filesort一條一條排序,但是因?yàn)榻Y(jié)果集只有區(qū)區(qū)8條,效率問題得以緩解?! 〉?,如果我用別的userid查詢,結(jié)果又會(huì)有所不同: mysql>descselect*fromimgsinorderbyclicksdesclimit10; +----+-------------+-------+-