最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
phpmysql慢查詢是什么意思

這篇文章主要為大家展示了“php MySQL慢查詢是什么意思”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“php mysql慢查詢是什么意思”這篇文章吧。

創(chuàng)新互聯(lián)是專業(yè)的莫力達(dá)網(wǎng)站建設(shè)公司,莫力達(dá)接單;提供成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行莫力達(dá)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

php mysql慢查詢是指在日志中記錄運(yùn)行比較慢的SQL語句,而開啟慢查詢?nèi)罩荆梢宰孧ySQL記錄下查詢超過指定時間的語句,通過定位分析性能的瓶頸,才能更好的優(yōu)化數(shù)據(jù)庫系統(tǒng)的性能。

本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦

php mysql慢查詢是什么?

MySQL慢查詢就是在日志中記錄運(yùn)行比較慢的SQL語句,這個功能需要開啟才能用。

1.簡介

開啟慢查詢?nèi)罩?,可以?MySQL 記錄下查詢超過指定時間的語句,通過定位分析性能的瓶頸,才能更好的優(yōu)化數(shù)據(jù)庫系統(tǒng)的性能。

2、參數(shù)介紹

slow_query_log 慢查詢開啟狀態(tài)

slow_query_log_file 慢查詢?nèi)罩敬娣诺奈恢茫ㄟ@個目錄需要 MySQL 的運(yùn)行帳號的可寫權(quán)限,一般設(shè)置為 MySQL 的數(shù)據(jù)存放目錄)

long_query_time 查詢超過多少秒才記錄,默認(rèn)是 10 秒

3、開啟慢查詢

(1) 查看慢查詢相關(guān)參數(shù)

mysql> show variables like 'slow_query%';
+---------------------------+-----------------------------------+
| Variable_name             | Value                              |
+---------------------------+-----------------------------------+
| slow_query_log            | OFF                                |
| slow_query_log_file       | /usr/local/var/mysql/slow.log          |
+---------------------------+-----------------------------------+
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

(2)設(shè)置方法

方法一:全局變量設(shè)置

將 slow_query_log 全局變量設(shè)置為 “ON” 狀態(tài)

mysql> set global slow_query_log='ON';

設(shè)置慢查詢?nèi)罩敬娣诺奈恢?/p>

mysql> set global slow_query_log_file='/usr/local/var/mysql/slow.log ';

設(shè)置慢查詢時間,查詢超過 1 秒就記錄

mysql> set global long_query_time=1;

方法二:配置文件設(shè)置

修改配置文件 my.cnf,在 [mysqld] 下的下方加入

[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/var/mysql/slow.log 
long_query_time = 1

(3)重啟 MySQL 服務(wù)

service mysqld restart

(4)慢查詢?nèi)罩痉治?/p>

截取一段慢查詢?nèi)罩荆?/p>

# Time: 180918 19:06:21
# User@Host: proxy[proxy] @  [192.168.0.16]  Id: 6707197
# Query_time: 1.015429  Lock_time: 0.000116 Rows_sent: 1  Rows_examined: 44438
SET timestamp=1537268781;
select
        id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag,
        nodisturb_mode, nodisturb_start_time,
        nodisturb_end_time, binding_time, device_os_type, app_type, state
        from app_mobile_device
        where user_id = '78436'
            and app_type = 'YGY'
        order by binding_time desc;
# User@Host: proxy[proxy] @  [192.168.0.16]  Id: 6707236
# Query_time: 1.021662  Lock_time: 0.000083 Rows_sent: 1  Rows_examined: 44438
SET timestamp=1537268781;
select
        id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag,
        nodisturb_mode, nodisturb_start_time,
        nodisturb_end_time, binding_time, device_os_type, app_type, state
        from app_mobile_device
        where user_id = '14433'
            and app_type = 'YGY'
        order by binding_time desc;

這里可以看到:

Query_time (慢查詢語句的查詢時間) 都超過了設(shè)置的 1s,

Rows_sent (慢查詢返回記錄) 這里只返回了 1 條

Rows_examined (慢查詢掃描過的行數(shù)) 44438 -> 通過這里大概可以看出問題很大

現(xiàn)在將這個 SQL 語句放到數(shù)據(jù)庫去執(zhí)行,并使用 EXPLAIN 分析 看下執(zhí)行計劃

EXPLAIN                                
select                                 
        id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag,                        
        nodisturb_mode, nodisturb_start_time,                          
        nodisturb_end_time, binding_time, device_os_type, app_type, state                          
        from app_mobile_device                         
        where user_id = '78436'                            
            and app_type = 'YGY'                       
        order by binding_time desc;

查詢結(jié)果是:

php mysql慢查詢是什么意思

解釋下參數(shù):

php mysql慢查詢是什么意思

這里可以發(fā)現(xiàn):rows 為查詢的行數(shù),查詢了 4w 多行,那慢是肯定的了。

因為這里是好幾個條件,并且沒有使用一個索引,那就只能給添加索引了,

這里給選擇添加普通多列索引,因為這個表在最開始設(shè)計出問題了,導(dǎo)致有重復(fù)的數(shù)據(jù),不能設(shè)置唯一索引了。

ALTER  TABLE  app_mobile_device  ADD  INDEX user_app_type_only (  `user_id` ,`app_type` )

索引設(shè)置了,再看下剛的 SQL 的執(zhí)行計劃。

php mysql慢查詢是什么意思

可以發(fā)現(xiàn) rows 的檢查行數(shù),很明顯的下降了。

到此,慢查詢的使用和優(yōu)化就基本完成了。

以上是“php mysql慢查詢是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享文章:phpmysql慢查詢是什么意思
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/jcceci.html