mysql快速入门_MySQL快速入门(三)
1. 性能優(yōu)化
1.1? MySQL索引
什么是索引?
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分),它們包含
著對數(shù)據(jù)表里所有記錄的引用指針。更通俗的說,數(shù)據(jù)庫索引好比是一本書前面的目錄,
能加快數(shù)據(jù)庫的查詢速度。
索引分類:
①單列索引:一個索引只包含單個列,一個表可以有多個單列索引
②組合索引:一個索引包含多個列
索引的使用
創(chuàng)建索引
create index indecName on tableName(userName(length))’
修改索引
alter table tableName add index indexName(columnName)
刪除索引
drop index indexName on tableName
1.2? ?explain命令
explain命令介紹
explain命令顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優(yōu)化的查詢語句,使用方法在select語句前加上explain就可以了.
示例:
Mysql執(zhí)行計劃的圖解:
1.3? ?慢查詢
1. 什么是慢查詢?
MySQL的慢查詢,全名是慢查詢?nèi)罩?#xff0c;是MySQL提供的一種日志記錄,用來記錄在MySQL中響應時間超過閥值的語句。具體環(huán)境中,運行時間超過long_query_time值的SQL語句,則會被記錄到慢查詢?nèi)罩? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 中。long_query_time的默認值為10,意思是記錄運行10秒以上的語句。默認情況下,MySQL數(shù)據(jù)庫并不啟動慢查詢?nèi)罩?#xff0c;需要手動來設置這個參數(shù)。當然,如果不是調(diào)優(yōu)需要的話,一般不建議啟動該參數(shù),因為? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 開啟慢查詢?nèi)罩緯蚨嗷蛏賻硪欢ǖ男阅苡绊憽B樵內(nèi)罩局С謱⑷罩居涗泴懭胛募蛿?shù)據(jù)庫表。
參數(shù)說明:
slow_query_log ??????慢查詢開啟狀態(tài)(ON?為開啟,OFF?為關(guān)閉)
slow_query_log_file ??慢查詢?nèi)罩敬娣诺奈恢?/p>
long_query_time??????查詢超過多少秒才記錄(記錄日志,單位為秒)
2. 慢查詢設置步驟
1.查看是否開啟慢查詢功能
2.設置方法
方法一:全局變量設置
1.?把slow_query_log?全局變量設置為“ON”狀態(tài)
mysql> set global slow_query_log='ON';
2.設置慢查詢?nèi)罩敬娣诺奈恢?/p>
mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';
3.查詢超過1秒就記錄
mysql> set global long_query_time=1;
方法二:配置文件設置
修改配置文件my.cnf,在[mysqld]下的下方加入
[mysqld]
slow_query_log =?ON
slow_query_log_file =?/usr/local/mysql/data/slow.log
long_query_time =?1
3.重啟MySQL服務
service mysqld restart
4.查看設置后的參數(shù)
設置完后我們來測試一下是否開啟慢查詢
1.執(zhí)行一條慢查詢SQL語句
mysql> select sleep(2);
2.查看是否生成慢查詢?nèi)罩?/p>
ls /usr/local/mysql/data/slow.log
如果日志存在,MySQL開啟慢查詢設置成功!
3. 對慢查詢的分析
使用mysqldumpslow工具
在生產(chǎn)環(huán)境中,如果要手工分析日志,查找、分析SQL,顯然是個體力活。
MySQL提供了日志分析工具mysqldumpslow
查看mysqldumpslow的幫助信息:
三 .MySQL性能分析語句show profile
什么是show profile?
show profiles?這個命令非常強大,能清晰的展示每條SQL的持續(xù)時間。通常結(jié)合show profile?命令可以更加詳細的展示其耗時信息。這樣就能很容易的分析出,到底慢在哪個環(huán)節(jié)了。比較遺憾的是,在MySQL中,該命令默認是關(guān)閉狀態(tài)的。
Show profile的使用
1..開啟命令:
set profiling = ON;?或等于1
2.查看是否生效:
Value的取值范圍有兩個:其中?ON?為開啟狀態(tài),OFF為關(guān)閉狀態(tài)。
值得注意的是:通過上述命令開啟后僅在當前會話有效。
作用:
show profiles?其作用為顯示當前會話服務器最新收到的15條SQL的性能信息。
其中包括:持續(xù)時間,以及Query_ID。我們可以通過Query_ID分析其性能
1.Query_ID?表示執(zhí)行SQL的唯一標識。
2.Duration?表示持續(xù)時間,默認單位為秒。
3.Query?就是我們所執(zhí)行的SQL語
注意:
show profiles?語句 默認顯示的是服務端接收到的最新的15條語句。
我們可以通過以下語句進行修改默認值:
set profiling_history_size =20;
profiling_history_size最大取值取值范圍為[0,100]。
當超過100時,則會設置自動設置為最大值100。
當小于0時,則會自動設置最小值為0。
當其等于0時,其效果等同于?set profiling=0,關(guān)閉性能分析模式
show profile命令的使用
示例:用Query_ID查
當結(jié)果顯示的比較多時,可以通過?limit?選項,來顯示指定的行數(shù).
通過上述結(jié)果,我們可以非常清楚的查看每一步的耗時,其中(Druation的單位為秒)。這樣,當我們遇到一條慢SQL時,就能很清楚的知道,為什么慢,慢在哪一步了。就可以進行針對性的優(yōu)化。我們對優(yōu)化后的SQL語句也能查看其持續(xù)時間,是否符合我們的指標.
總結(jié)
以上是生活随笔為你收集整理的mysql快速入门_MySQL快速入门(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js nextSibling属性和pre
- 下一篇: linux cmake编译源码,linu