程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql效力優化定位較低sql的兩種方法

Mysql效力優化定位較低sql的兩種方法

編輯:MySQL綜合教程

Mysql效力優化定位較低sql的兩種方法。本站提示廣大學習愛好者:(Mysql效力優化定位較低sql的兩種方法)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql效力優化定位較低sql的兩種方法正文


關於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: 6552961
select count(*) from t_user;

從下面日記中,可以發明查詢時光跨越 5 秒的 SQL ,而小於 5 秒的則沒有湧現在此日記中。
假如慢查詢日記中記載內容許多,可使用 mysqldumpslow 對象( MySQL 客戶端裝置自帶)來對慢查詢日記停止分類匯總。下例中對日記文件 mysql_master-slow.log 停止了分類匯總,只顯示匯總後摘要成果:

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

關於 SQL 文本完整分歧,只是變量分歧的語句, mysqldumpslow 將會主動視為統一個語句停止統計,變量值用 N 來取代。這個統計成果將年夜年夜增長用戶浏覽慢查詢日記的效力,並敏捷定位體系的 SQL 瓶頸。

留意:慢查詢日記關於我們發明運用中有機能成績的 SQL 很有贊助,建議正常情形下,翻開此日記並常常檢查剖析。

以上是給年夜家引見的Mysql效力優化定位較低sql的兩種方法 ,願望以上所述對年夜家有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved