資源描述:
《mysql innodb 查詢優(yōu)化實(shí)現(xiàn)分析專業(yè)版》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、MysqlInnodb查詢優(yōu)化實(shí)現(xiàn)分析以下文字由808影視www.808ys.com收集提供于影視網(wǎng)何登成目錄1目地22測試準(zhǔn)備23單表查詢33.1單表range查詢33.1.1records_in_range函數(shù)分析53.1.2best_access_path函數(shù)(單表)63.1.3單表range查詢總結(jié)83.2單表unique查詢93.2.1單表Unique查詢總結(jié)94多表查詢104.1多表簡單join104.2best_access_path函數(shù)分析124.2.1總流程分析124.2.2代價估計分析124.2.3best_access_path函數(shù)
2、流程134.3optimizer_search_depth參數(shù)154.4多表join查詢總結(jié)155統(tǒng)計信息165.1統(tǒng)計信息收集165.2統(tǒng)計信息更新175.3統(tǒng)計信息收集總結(jié)186查詢優(yōu)化總結(jié)187參考文獻(xiàn)18附錄一19附錄二20附錄三21附錄四221目地分析mysql+innodb如何實(shí)現(xiàn)查詢優(yōu)化?實(shí)現(xiàn)查詢優(yōu)化,存儲引擎需要做哪些方面地配合?2測試準(zhǔn)備mysqlselectversion();5.1.49-debug-loginnodb--------表定義---------+-------+-----------------------------
3、-
4、Table
5、CreateTable+-------+------------------------------
6、nkeys
7、CREATETABLE`nkeys`(`c1`int(11)NOTNULL,`c2`int(11)DEFAULTNULL,`c3`int(11)DEFAULTNULL,`c4`int(11)DEFAULTNULL,`c5`int(11)DEFAULTNULL,PRIMARYKEY(`c1`),UNIQUEKEY`c2`(`c2`),UNIQUEKEY`c3`(`c3`),UNIQUEKEY`c4`(`c4`),KEY`nkey
8、1`(`c3`,`c5`))ENGINE=InnoDBDEFAULTCHARSET=gbk
9、+-------+----------------------------------數(shù)據(jù)----insertintonkeysvalues(1,1,1,1,1);insertintonkeysvalues(2,2,2,2,2);insertintonkeysvalues(3,3,3,3,3);insertintonkeysvalues(4,4,4,4,4);insertintonkeysvalues(5,5,5,5,5);1單表查詢1.1單表range查詢1)s
10、elect*fromnkeyswherec3>3;不能進(jìn)行索引覆蓋掃描indexrangescan2)selectc3fromnkeyswherec3>3;可以進(jìn)行索引覆蓋掃描indexonlyrangescan調(diào)用流程:msyql_select->JOIN::optimize->make_join_statistics->0.sql_select.cc::get_quick_record_count->opt_range.cc::SQL_SELECT::test_quick_select–>ha_innobase::scan_time->get_key
11、_scans_params->check_quick_select–>Opt_range.cc::check_quick_keys->ha_innobase::records_in_range->get_index_only_read_time->ha_innobase::read_time->get_best_ror_intersect->get_best_covering_ror_intersect->a)ha_innobase::scan_time函數(shù),給出全表掃描read_timei.scan_time=(double)records/TIME_
12、FOR_COMPARE+1;1.mysql層面,返回一個record需要地時間(CPU時間)2.TIME_FOR_COMPARE=5ii.return(double)(prebuilt->table->stat_clustered_index_size(聚簇索引葉頁面數(shù));1.innodb層面,全表掃描時間,用讀取地page數(shù)計算(IO時間)2.由于innodb是索引組織表,用不到page地預(yù)讀,因此一次讀取一個pageiii.table_read_time=ha_innobase::scan_time()+scan_time+1;1.全表掃描總時間=i
13、nnodb讀取數(shù)據(jù)塊時間+mysql比較記錄時間+12.測試中:table_re