估計(jì)查詢性能 |
發(fā)布時(shí)間: 2012/8/30 17:26:41 |
在大多數(shù)情況下,可以通過(guò)計(jì)算磁盤搜索來(lái)估計(jì)性能。對(duì)小的表,通常能在1次磁盤搜索中找到行(因?yàn)樗饕赡鼙痪彺?span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">)。對(duì)更大的表,可以使用B-樹索引進(jìn)行估計(jì),將需要log(row_count)/log(index_block_length/3 * 2/(index_length + data_pointer_length))+1次搜索才能找到行。
在MySQL中,索引塊通常是1024個(gè)字節(jié),數(shù)據(jù)指針通常是4個(gè)字節(jié),這對(duì)于有一個(gè)長(zhǎng)度為3(中等整數(shù))的索引的500,000行的表,通過(guò)公式可以計(jì)算出log(500,000)/log(1024/3*2/(3+4))+1= 4次搜索。 上面的索引需要大約500,000 * 7 * 3/2 = 5.2MB,(假設(shè)典型情況下索引緩存區(qū)填充率為2/3),可以將大部分索引保存在內(nèi)存中,僅需要1-2調(diào)用從OS讀數(shù)據(jù)來(lái)找出行。
然而對(duì)于寫,將需要4次搜索請(qǐng)求(如上)來(lái)找到在哪兒存放新索引,并且通常需要2次搜索來(lái)更新這個(gè)索引并且寫入行。
注意,上述討論并不意味著應(yīng)用程序的性能將緩慢地以logN 退化!當(dāng)表格變得更大時(shí),所有內(nèi)容緩存到OS或SQL服務(wù)器后,將僅僅或多或少地更慢。在數(shù)據(jù)變得太大不能緩存后,將逐漸變得更慢,直到應(yīng)用程序只能進(jìn)行磁盤搜索(以logN增加)。為了避免這個(gè)問(wèn)題,隨數(shù)據(jù)增加而增加 鍵高速緩沖區(qū)大小。對(duì)于MyISAM表, 由key_buffer_size系統(tǒng)變量控制 鍵高速緩沖區(qū)大小。 本文出自:億恩科技【www.sunshares.net】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |