慢查詢
首先,無(wú)論進(jìn)行何種優(yōu)化,開(kāi)啟慢查詢都算是前置條件。慢查詢機(jī)制,將記錄過(guò)慢的查詢語(yǔ)句(事件),從而為DB維護(hù)人員提供優(yōu)化目標(biāo)。
檢查慢查詢是否開(kāi)啟
通過(guò)show variables like 'slow_query_log'
這條語(yǔ)句,可以找到慢查詢的狀態(tài)(On/Off)。
開(kāi)啟慢查詢
本文使用的MySQL版本:MariaDB - 10.1.19,請(qǐng)注意,不同版本的MySQL存在差異。
在[mysqld]下加入:
[mysqld]
port= 3306
slow-query-log=1 # 慢查詢:確認(rèn)開(kāi)啟
slow-query-log-file="D:/xampp/mysql/log/mysql-slow.log" # 慢查詢:日志文件及路徑
long_query_time = 5 # 慢查詢:指定超過(guò)5s仍未完成的語(yǔ)句,為執(zhí)行過(guò)慢的語(yǔ)句
優(yōu)化步驟
觀察日志,鎖定需要優(yōu)化的目標(biāo)語(yǔ)句。注意SQL的設(shè)置,譬如:SQL_NO_CACHE
。
關(guān)注復(fù)雜語(yǔ)句寫(xiě)法。復(fù)雜語(yǔ)句本身具備高自由度,再加上SQL語(yǔ)法的特殊性,導(dǎo)致了不同的寫(xiě)法的同功能復(fù)雜語(yǔ)句,可能具備云泥之別的效率。
明確應(yīng)用場(chǎng)景,盡管我們?cè)诟鞣N場(chǎng)合都有原則,但實(shí)際上,如果能夠明確應(yīng)用場(chǎng)景,我們能夠針對(duì)當(dāng)前情況,做出本地化的高效優(yōu)化。
無(wú)法優(yōu)化的語(yǔ)句,當(dāng)我們通過(guò)上述兩種方法,以及更多未被本文提及的優(yōu)化方法之后,可能還是會(huì)面對(duì)優(yōu)化失敗的情況。業(yè)務(wù)層面不做出修正的話,數(shù)據(jù)層面的確是無(wú)力可使。
結(jié)語(yǔ)
當(dāng)打出“無(wú)法優(yōu)化”的時(shí)候,不禁想到了我所喜愛(ài)的游戲設(shè)計(jì)行業(yè)。
如果你了解一二,就會(huì)發(fā)現(xiàn),游戲設(shè)計(jì)中,其實(shí)有相當(dāng)多的優(yōu)秀設(shè)計(jì),但大多數(shù)都困窘于當(dāng)時(shí)當(dāng)?shù)氐募夹g(shù)水平,而無(wú)法實(shí)現(xiàn)多彩紛呈的游戲設(shè)計(jì)。
也還記得去年做UI的朋友跟我吐槽:我就怕我設(shè)計(jì)的出來(lái),很炫酷或者很人文,可前端根本實(shí)現(xiàn)不了那種設(shè)計(jì)。
您可能感興趣的文章:- 深入mysql慢查詢?cè)O(shè)置的詳解
- 詳解MySql的慢查詢分析及開(kāi)啟慢查詢?nèi)罩?/li>
- mysql 開(kāi)啟慢查詢 如何打開(kāi)mysql的慢查詢?nèi)罩居涗?/li>
- MYSQL5.7.9開(kāi)啟慢查詢?nèi)罩镜募记?/li>
- MySQL開(kāi)啟慢查詢?nèi)罩緇og-slow-queries的方法
- MySQL慢查詢查找和調(diào)優(yōu)測(cè)試
- MySQL慢查詢優(yōu)化之慢查詢?nèi)罩痉治龅膶?shí)例教程
- MySQL數(shù)據(jù)庫(kù)中把int轉(zhuǎn)化varchar引發(fā)的慢查詢
- MySQL 開(kāi)啟慢查詢?nèi)罩镜姆椒?/li>
- MySQL慢查詢?nèi)绾味ㄎ辉斀?/li>