資料庫索引設計與優化讀書筆記--《一》概述

FreeeLinux發表於2017-07-02
  • 由於當前機器的記憶體越來越大,我們完全可以假設B樹索引的所有非葉子頁通常都會留在記憶體或者讀快取中。通常只有葉子頁需要從磁碟驅動器讀取。

  • 如果非葉子頁不在資料庫緩衝池而在磁碟伺服器的讀快取中,那麼讀取索引頁可能會花費1ms。而一次磁碟隨機讀取所花費的時間大約是10ms。

誤區一:索引層級不要超過5層。

由於非葉子頁通常都會留在記憶體或者讀快取中,所以通常索引任意一個葉子頁的時間為10ms~20ms,這是固定的。所以,對索引層數的限制是沒有什麼意義的。

誤區二:單表的索引樹不要超過6個

不應該給索引數目限制上線。

誤區三:不應該索引不穩定的列

索引行是按索引鍵的順序儲存的,所以當索引鍵中有一列被更新時,DBMS可能不得不把相應的行從舊的索引位置移到心得位置來保證這一順序。當四層索引的三個層級的非葉子頁保留在記憶體中時,一次磁碟的隨機讀取需要10ms,響應的時間變成了2*10ms。此外,多列索引的尾列為不穩定的列,更新這個不穩定的列絕不會導致其遷移到新的子頁。因此,在當前的磁碟條件下,更新一個不穩定的列只會對該更新操作增加10ms的響應時間。

相關文章