国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql效率優化定位較低sql的兩種方式

2020-01-18 22:44:26
字體:
來源:轉載
供稿:網友

關于mysql效率優化一般通過以下兩種方式定位執行效率較低的sql語句。

通過慢查詢日志定位那些執行效率較低的 SQL 語句,用 --log-slow-queries[=file_name] 選項啟動時, mysqld 會 寫一個包含所有執行時間超過 long_query_time 秒的 SQL 語句的日志文件,通過查看這個日志文件定位效率較低的 SQL 。

慢查詢日志在查詢結束以后才紀錄,所以在應用反映執行效率出現問題的時候查詢慢查詢日志并不能定位問題,可以使用 show processlist 命令查看當前 MySQL 在進行的線程,包括線程的狀態、是否鎖表等,可以實時地查看 SQL 的 執行情況,同時對一些鎖表操作進行優化。

下面我們舉例說明一下,如何通過慢查詢日志定位執行效率底的 SQL 語句:

開啟慢查詢日志 , 配置樣例:

log-slow-queries

在 my.cnf 配置文件中增加上述配置項并重啟 mysql 服務,這時 mysql 慢查詢功能生效。慢查詢 日志將寫入參數 DATADIR (數據目錄)指定的路徑下,默認文件名是 host_name-slow.log 。

和錯誤日志、查詢日志一樣,慢查詢日志記錄的格式也是純文本,可以被直接讀取。下例中演示了慢查詢日志的設置和讀取過程。

( 1 )首先查詢一下 long_query_time 的值 。

mysql> show variables like 'long%';+-----------------+-------+| Variable_name | Value |+-----------------+-------+| long_query_time | 10 |+-----------------+-------+1 row in set (0.00 sec)

( 2 )為了方便測試,將修改慢查詢時間為 5 秒。

mysql> set long_query_time=5;
Query OK, 0 rows affected (0.02 sec)

( 3 )依次執行下面兩個查詢語句。

第一個查詢因為查詢時間低于 5 秒而不會出現在慢查詢日志中:

mysql> select count(*) from order2008;+----------+| count(*) |+----------+| 208 |+----------+1 row in set (0.00 sec)

第二個查詢因為查詢時間大于 5 秒而應該出現在慢查詢日志中:

mysql> select count(*) from t_user;+----------+| count(*) |+----------+| 6552961 |+----------+1 row in set (11.07 sec)

( 4 )查看慢查詢日志。

[root@localhost mysql]# more localhost-slow.log# Time: 081026 19:46:34# User@Host: root[root] @ localhost []# Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961select count(*) from t_user;

從上面日志中,可以發現查詢時間超過 5 秒的 SQL ,而小于 5 秒的則沒有出現在此日志中。
如果慢查詢日志中記錄內容很多,可以使用 mysqldumpslow 工具( MySQL 客戶端安裝自帶)來對慢查詢日志進行分類匯總。下例中對日志文件 mysql_master-slow.log 進行了分類匯總,只顯示匯總后摘要結果:

[root@mysql_master mysql_data]# mysqldumpslow mysql_master-slow.logReading mysql slow query log from mysql_master-slow.logCount: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@mysql_masterselect count(N) from t_user;

對于 SQL 文本完全一致,只是變量不同的語句, mysqldumpslow 將會自動視為同一個語句進行統計,變量值用 N 來代替。這個統計結果將大大增加用戶閱讀慢查詢日志的效率,并迅速定位系統的 SQL 瓶頸。

注意:慢查詢日志對于我們發現應用中有性能問題的 SQL 很有幫助,建議正常情況下,打開此日志并經常查看分析。

以上是給大家介紹的Mysql效率優化定位較低sql的兩種方式 ,希望以上所述對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石台县| 临西县| 涿州市| 张家口市| 白沙| 富宁县| 临高县| 庆元县| 思南县| 古田县| 涡阳县| 乐陵市| 双流县| 揭东县| 四川省| 长沙市| 思南县| 长春市| 陵水| 扎兰屯市| 广汉市| 灌云县| 南溪县| 余江县| 曲阳县| 扬中市| 伊宁市| 乌鲁木齐市| 新泰市| 汶川县| 马龙县| 金塔县| 乌兰浩特市| 成武县| 静乐县| 龙口市| 万源市| 武山县| 大同县| 青浦区| 漳平市|