mysql執(zhí)行計(jì)劃詳解 mysql優(yōu)化教程?
mysql優(yōu)化教程?1. 優(yōu)化SQL語句、索引和表結(jié)構(gòu)。2. 打開查詢緩存時(shí),查詢緩存緩存選擇查詢及其結(jié)果數(shù)據(jù)集。當(dāng)執(zhí)行同一個(gè)select查詢時(shí),MySQL將直接從內(nèi)存中檢索結(jié)果,這加快了查詢的執(zhí)行速
mysql優(yōu)化教程?
1. 優(yōu)化SQL語句、索引和表結(jié)構(gòu)。
2. 打開查詢緩存時(shí),查詢緩存緩存選擇查詢及其結(jié)果數(shù)據(jù)集。當(dāng)執(zhí)行同一個(gè)select查詢時(shí),MySQL將直接從內(nèi)存中檢索結(jié)果,這加快了查詢的執(zhí)行速度,減少了對(duì)數(shù)據(jù)庫的壓力。執(zhí)行show變量,比如“have”uqueryucache,您可以檢查MySQL查詢緩存是否打開。要打開查詢緩存,只需配置我的.cnf具體如下:
querycacheuuutype=1
querycacheuusize=128M
querycacheulimit=1m
保存后重新啟動(dòng)mysql。
3. 選擇InnoDB存儲(chǔ)引擎。MySQL常用的存儲(chǔ)引擎是MyISAM和InnoDB。它們之間的區(qū)別如下:
MyISAM
查詢速度快;
支持表級(jí)鎖,在此期間不能對(duì)表執(zhí)行其他操作;
支持全文檢索;
支持?jǐn)?shù)據(jù)壓縮、自復(fù)制、查詢緩存和數(shù)據(jù)加密;
不支持外鍵;
不支持事務(wù),因此沒有提交和回滾操作;
不支持群集數(shù)據(jù)庫。
InnoDB
支持行級(jí)鎖;
支持外鍵和外鍵約束強(qiáng)制執(zhí)行;
支持事務(wù),可以執(zhí)行提交和回滾操作;
支持?jǐn)?shù)據(jù)壓縮、自復(fù)制、查詢緩存和數(shù)據(jù)加密;
可以在群集環(huán)境中使用,但不完全支持。InnoDB表可以轉(zhuǎn)換為NDB存儲(chǔ)引擎,可以在集群環(huán)境下使用。
怎么去看懂mysql的執(zhí)行計(jì)劃?
MySQL查看執(zhí)行計(jì)劃語句很簡單,說明你要執(zhí)行的SQL語句是可以的。
例如
解釋從員工中選擇*,其中員工。性別=“M”
返回的結(jié)果如下:
這些結(jié)果代表什么?
ID是一組數(shù)字,表示查詢中執(zhí)行select子句或操作表的順序。
如果ID相同,則執(zhí)行順序是從上到下。
如果是子查詢,則ID的序列號(hào)將增加。ID越大,優(yōu)先級(jí)越高,執(zhí)行的時(shí)間越早。
如果ID相同,則可以將其視為一個(gè)組并從上到下執(zhí)行。在所有組中,ID越高,優(yōu)先級(jí)就越高,執(zhí)行就越容易。
選擇類型包括簡單、主要、子查詢、派生、聯(lián)合和聯(lián)合結(jié)果。
簡單意味著查詢不包含子查詢或聯(lián)合。
如何查看mysql存儲(chǔ)過程中sql的執(zhí)行計(jì)劃?
打開SQL Server Management Studio以查找存儲(chǔ)過程所在的數(shù)據(jù)庫。您可以在“對(duì)象資源管理器詳細(xì)信息”中查看存儲(chǔ)過程的文件夾。
單擊以打開此文件夾,并在搜索中輸入要搜索的存儲(chǔ)過程的名稱。
同樣,您也可以在數(shù)據(jù)庫目錄結(jié)構(gòu)中存儲(chǔ)過程的右鍵單擊菜單中選擇過濾器設(shè)置。
在這里您可以設(shè)置詳細(xì)條件過濾器。搜索需要查看的存儲(chǔ)過程。
找到SQL存儲(chǔ)過程后,也可以右鍵單擊菜單中的“修改”進(jìn)入SQL存儲(chǔ)過程編輯。
檢查SQL存儲(chǔ)過程是否有參數(shù),因?yàn)閳?zhí)行SQL存儲(chǔ)過程時(shí)需要使用參數(shù)。
了解SQL存儲(chǔ)過程的引用類型和基本功能后,可以使用exec storage procedure name參數(shù)執(zhí)行SQL存儲(chǔ)過程。
最后,查看下面的SQL存儲(chǔ)過程執(zhí)行結(jié)果。
一條SQL語句在MySQL中是如何執(zhí)行的?
MySQL執(zhí)行SQL的過程如下:
1。連接器,這一步是建立與客戶端的連接
2。分析器,解析SQL語句,如果SQL語句編寫不正確,此步驟將報(bào)告錯(cuò)誤
3。優(yōu)化器,這一步主要是選擇索引,MySQL會(huì)選擇被認(rèn)為是最好的索引,但實(shí)際上可能不是最好的
4這一步主要是調(diào)用特定的存儲(chǔ)引擎,根據(jù)表的定義執(zhí)行SQL?,F(xiàn)在默認(rèn)引擎是InnoDB。還有一個(gè)binlog。
這里省略了查詢緩存的步驟。此步驟在連接器之后,但緩存通常是關(guān)閉的。