MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf

MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf

ID:34282331

大小:675.39 KB

頁數(shù):37頁

時(shí)間:2019-03-04

MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf_第1頁
MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf_第2頁
MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf_第3頁
MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf_第4頁
MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf_第5頁
資源描述:

《MySQL查詢優(yōu)化淺析(2013-02-22更新版).pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、MySQL查詢優(yōu)化淺析網(wǎng)易杭研-何登成個(gè)人簡(jiǎn)介?姓名:何登成?工作:–就職于網(wǎng)易杭州研究院,進(jìn)行自主研發(fā)的TNT存儲(chǔ)引擎的架構(gòu)設(shè)計(jì)/研發(fā)工作?聯(lián)系方式–郵箱:he.dengcheng@gmail.com–微博:何_登成–主頁:http://hedengcheng.com/何為查詢優(yōu)化??目標(biāo)–給定一個(gè)SQL,查找SQL最優(yōu)(局部最優(yōu))的執(zhí)行路徑,使得用戶能夠更快的得到SQL執(zhí)行的結(jié)果?指標(biāo)–代價(jià)模型;–SQL的每一種執(zhí)行路徑,均可計(jì)算一個(gè)對(duì)應(yīng)的執(zhí)行代價(jià),代價(jià)越小,執(zhí)行效率越高;反之則反之;大綱?MySQL

2、Optimizer流程?MySQLRangeOptimizer(分享重點(diǎn))–Cost模型–統(tǒng)計(jì)信息?MySQLServer層統(tǒng)計(jì)信息?InnoDB層統(tǒng)計(jì)信息?統(tǒng)計(jì)信息持久化?動(dòng)態(tài)收集統(tǒng)計(jì)信息?統(tǒng)計(jì)信息收集策略–RangeQueryExamples?MySQLJoinOptimizer?MySQLOptimizerEnhancement總流程MySQLRangeOptimizer?RangeOptimizer有哪些問題–全表掃描or索引掃描選擇?–全表掃描的代價(jià)如何計(jì)算?–聚簇索引Range查詢代價(jià)如何計(jì)算

3、?–二級(jí)索引Range查詢代價(jià)如何計(jì)算?–索引覆蓋掃描vs索引非覆蓋掃描?–表級(jí)統(tǒng)計(jì)信息有哪些?–統(tǒng)計(jì)信息在Range查詢優(yōu)化中何用?–統(tǒng)計(jì)信息何時(shí)收集?收集算法?RangeQuery-代價(jià)模型?總代價(jià)模型–COST=CPUCost+IOCost?CPUCost–MySQL上層,處理返回記錄所花開銷–CPUCost=records/TIME_FOR_COMPARE=records/5–每5條記錄的處理時(shí)間,作為1Cost?IOCost–存儲(chǔ)引擎層面,讀取頁面的IO開銷。–以下InnoDB為例?聚簇索引?二

4、級(jí)索引RangeQuery-聚簇索引?聚簇索引(IOCost)–全掃描?IOCost=table->stat_clustered_index_size?聚簇索引頁面總數(shù)?一個(gè)頁面作為1Cost–范圍掃描?IOCost=[(ranges+rows)/total_rows]*全掃描IOCost?聚簇索引范圍掃描與返回的記錄成比率。RangeQuery-二級(jí)索引?二級(jí)索引(IOCost)–索引覆蓋掃描?索引覆蓋掃描,減少了返回聚簇索引的IO代價(jià)–keys_per_block=(stats_block_size/

5、2)/(key_info[keynr].key_length+ref_length+1)–stats_block_size/2?索引頁半滿?IOCost–(records+keys_per_block-1)/keys_per_block?計(jì)算range占用多少個(gè)二級(jí)索引頁面,既為索引覆蓋掃描的IOCostRangeQuery-二級(jí)索引?二級(jí)索引(IOCost續(xù))–索引非覆蓋掃描?索引非覆蓋掃描,需要回聚簇索引讀取完整記錄,增加IO代價(jià)?IOCost=(ranges+rows)?ranges:多少個(gè)范圍。–

6、對(duì)于IN查詢,就會(huì)轉(zhuǎn)換為多個(gè)索引范圍查詢?rows:為范圍中一共有多少記錄。–由于每一條記錄都需要返回聚簇索引,因此每一條記錄都會(huì)產(chǎn)生1costCost模型分析?聚簇索引掃描代價(jià)為索引頁面總數(shù)量?二級(jí)索引覆蓋掃描代價(jià)較小?二級(jí)索引非覆蓋掃描,代價(jià)巨大–未考慮類似于Oracle中的聚簇因子(Clusterfactor)影響??Cost模型的計(jì)算,需要統(tǒng)計(jì)信息的支持–stat_clustered_index_size–ranges–records/rows–stats_block_size–key_info[

7、keynr].key_length–rec_per_key–...統(tǒng)計(jì)信息?MySQLServer層的統(tǒng)計(jì)信息–ha_statistics?引擎負(fù)責(zé)設(shè)置–CONST–VARIABLE?InnoDB層的統(tǒng)計(jì)信息–dict_table_struct?語句級(jí)統(tǒng)計(jì)信息–每個(gè)查詢語句,指定不同的Range?不同的Range,包含的records數(shù)量不同?同一Range,不同的索引,包含的records數(shù)量不同–records_in_rangeMySQLServer層統(tǒng)計(jì)信息?CONST統(tǒng)計(jì)信息–此類統(tǒng)計(jì)信息,在表創(chuàng)

8、建之后,就基本維持不變,類似于常量(非完全不變)?種類–max_data_file_length、data_file_name、block_size...不變–block_size?計(jì)算索引覆蓋掃描Cost所需,頁面大小–rec_per_key...會(huì)變化?標(biāo)識(shí)一個(gè)索引鍵(包括前綴鍵值)相同相同取值的平均個(gè)數(shù)?算法:rec_per_key=total_rows/key_distinct_count?此參數(shù),是MySQL進(jìn)行Jo

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。