估計查詢性能

估計查詢性能

多數情況下,你可以通過計算磁盤的搜索次數來估算查詢性能。對于比較小的表,通常可以在一次磁盤搜索中找到行(因為索引可能已經被緩存了),而對于更大的表,你可以使用B-tree索引進行估算:你需要進行多少次查找才能找到行:log(row_count) / log(index_block_length / 3 * 2 / (index_length + data_pointer_length)) + 1

在MySQL中,index_block_length通常是1024字節(jié),數據指針一般是4字節(jié)。比方說,有一個500,000的表,key是3字節(jié),那么根據計算公式 log(500,000)/log(1024/3*2/(3+4)) + 1 = 4 次搜索。

該索引將需要500,000 * 7 * 3/2 = 5.2MB的存儲空間(假設典型的索引緩存的填充率是2/3),因此你可以在內存中存放更多索引,可能只要一到兩個調用就可以找到想要的行了。

但是,對于寫操作,你需要四個搜索請求來查找在何處放置新的索引值,然后通常需要2次搜索來更新索引并寫入行。

前面的討論并不意味著你的應用性能會因為log N而緩慢下降。只要內容被OS或MySQL服務器緩存,隨著表的變大,只會稍微變慢。在數據量變得太大而無法緩存后,將會變慢很多,直到你的應用程序受到磁盤搜索約束(按照log N增長)。為了避免這種情況,可以根據數據的增長而增加key的。對于MyISAM表,key的緩存大小由名為key_buffer_size的系統(tǒng)變量控制,詳見 Section 5.1.1, “Configuring the Server”

鏈接:https://www.imooc.com/article/308225

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容