小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Mysq性能分析 —— Genral log(普通日志)與 Slow log(慢速日式)

 看風(fēng)景D人 2014-01-08

        對(duì)Mysql進(jìn)行深入的分析對(duì)于發(fā)現(xiàn)mysql性能瓶頸和尋找優(yōu)化策略是十分必要的。 我們可以從不同的粒度上對(duì)Mysql進(jìn)行分析:可以整體分析服務(wù)器,或者檢查單個(gè)查詢或批查詢。
通過(guò)分析,我們得到的如下信息:
1、Mysql訪問(wèn)得最多的數(shù)據(jù)
2、Mysql執(zhí)行得最多的查詢的種類
3、Mysql停留時(shí)間最長(zhǎng)的狀態(tài)
4、Mysql用來(lái)執(zhí)行查詢的使用得最頻繁的子系統(tǒng)
5、Mysql查詢過(guò)程中訪問(wèn)的數(shù)據(jù)種類
6、Mysql執(zhí)行了多少種不同類型的活動(dòng),比如索引掃描。

Mysql提供了兩種查詢?nèi)罩?,它們可以為我們獲取以上信息提供幫助。 這兩種查詢?nèi)罩緸?STRONG>普通日志(general log)和慢速日志(slow log)。


General log:
Geleral log記錄了服務(wù)器接收到的每一個(gè)查詢或是命令,無(wú)論這些查詢或是命令是否正確甚至是否包含語(yǔ)法錯(cuò)誤,general log 都會(huì)將其記錄下來(lái) ,記錄的格式為 {Time ,Id ,Command,Argument }。也正因?yàn)閙ysql服務(wù)器需要不斷地記錄日志,開啟General log會(huì)產(chǎn)生不小的系統(tǒng)開銷。 因此,Mysql默認(rèn)是把General log關(guān)閉的。 我們可以通過(guò)修改Mysql全局變量來(lái)開啟General log功能或是更改日志存放路徑。
注意:mysql5.0版本,如果要開啟slow log、general log,需要重啟,從MySQL5.1.6版開始,general query log和slow query log開始支持寫到文件或者數(shù)據(jù)庫(kù)表兩種方式,并且日志的開啟,輸出方式的修改,都可以在Global級(jí)別動(dòng)態(tài)修改。

1、首先查看log_output,確認(rèn)日志輸出到文件還是數(shù)據(jù)庫(kù)。
mysql> show variables like 'log_output';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| log_output       |  FILE |
+-------------------+-------+
1 row in set (0.00 sec)
通過(guò)以上結(jié)果可以發(fā)現(xiàn),log_output的值為FILE,證明是輸出到日志文件,如果為TABLE則輸出到默認(rèn)‘mysql’數(shù)據(jù)庫(kù)中的相應(yīng)日志表,該表的默認(rèn)引擎為CSV。

2、接下來(lái)通過(guò)如下命令可以查看 mysql默認(rèn)的 General log 配置。
mysql> show global variables like '%general%';
+------------------+---------------------------+
| Variable_name | Value |
+------------------+---------------------------+
| general_log | OFF |
| general_log_file | /var/lib/mysql/ubuntu.log |
+------------------+---------------------------+
2 rows in set (0.00 sec)
general_log的值為OFF,所以當(dāng)前general_log是關(guān)閉的。general_log_file變量的值是日志文件的路徑。
3、通過(guò) set global general_log = on; 命令開啟General log。
4、最后我們可以從/var/lib/mysql/ubuntu.log文件中查看相應(yīng)日志信息。

Slow log:
General log日志內(nèi)容比較簡(jiǎn)單,不包含執(zhí)行時(shí)間或其他只有在查詢結(jié)束之后才能得到的信息,相反,slow log 記錄了這些內(nèi)容。
1、我們首先來(lái)看一下與慢日志相關(guān)的全局變量。
mysql> show global variables like '%slow%';
+---------------------+--------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------+
| log_slow_queries | ON |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/ubuntu-slow.log |
+---------------------+--------------------------------+
4 rows in set (0.00 sec)
筆者的mysql已經(jīng)開啟了慢日志選項(xiàng)。變量slow_launch_time的值代表著捕獲所有執(zhí)行時(shí)間超過(guò)2秒的查詢。slow log可以記錄沒有使用索引的查詢,它也能記錄執(zhí)行速度比較慢的管理命令。
開啟log_queries_not_using_indexes,將會(huì)記錄沒有使用索引的查詢到slow日志里。
mysql> show global variables like '%not_using%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
1 row in set (0.00 sec)

slow log 的日志格式為:
# Time: 111108 19:38:00
# User@Host: root[root] @ localhost []
# Query_time: 15.268541 Lock_time: 0.000237 Rows_sent: 1 Rows_examined: 102
use mytest;
SET timestamp=1320752280;
select count(a.b) from mytable a ,mytable b ,mytable c ,mytable d;

慢速日志的確提供了很多有用的信息,但是不代表出現(xiàn)的查詢一定一直都是慢的。如果同樣的查詢?cè)诼偃罩纠锍霈F(xiàn)了多次,那么它的確需要優(yōu)化,但是如果只是出現(xiàn)了偶爾一兩次,則有可能是其他客觀原因造成的,比如某些鎖,I/O磁盤物理性問(wèn)題,網(wǎng)絡(luò)問(wèn)題等等。
慢速日志的slow_launch_time的時(shí)間單位為秒,可以通過(guò)網(wǎng)上第三方補(bǔ)丁將其更改為毫秒級(jí),用于更加精細(xì)的日志記錄和分析,但是這需要重新編譯mysql。

我們通常在日志中查找下面幾個(gè)信息:長(zhǎng)查詢、影響比較大的查詢和新查詢。這可能需要我們自己寫一下腳本或是借助某些第三方工具進(jìn)行日志分析。
General log 系統(tǒng)開銷比較大,一般不建議開啟。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多