MySQL資料庫InnoDB與MyISAM區別

2021-09-11 08:32:20 字數 1119 閱讀 1777

特點: 行級鎖,支援事務處理,支援外來鍵,

行鎖實現,根據索引條件檢索資料使用行鎖。

表鎖,支援全文索引。

表鎖,分為表共享鎖和表獨佔鎖。讀和讀之間使用共享鎖,讀寫之間使用獨佔鎖。

b樹,又稱多路平衡查詢樹。所有節點中孩子節點的最大值為此樹的階(用m表示)。每個節點關鍵字的個數最少有[m/2-1]個,最多有[m-1]個。也即乙個m為4的b樹,子樹節點最多有4個,每個節點關鍵字(資料)的至多有3個,至少有1個。

b樹的資料都在非葉子節點。(所有葉子節點都在同一層次,且不帶資訊)

b+樹,所有資料都在葉子節點。葉子節點有順序訪問指標。可以更好利用計算機的區域性快取原理(當乙個資料被用到時,它後面的資料也會馬上被用到)。

在實際應用中,度一般是挺大的,一般在100左右。h一般不大,不超過3。

而紅黑樹的深度一般是很大的,磁碟io的次數會多。無法利用區域性性原理。

而對比b樹和b+樹來說,b+樹由於把資料都放到了葉子節點,每次io可以獲取更多節點,以及葉子節點的順序訪問指標,所以b+樹比b樹擁有更好新能。

myisam的索引使用b+樹實現,葉子節點記錄資料的儲存位址。主索引和輔助索引結構相同,區別在於主索引是唯一的,而輔助索引可以重複。查詢過程為:先查詢b+樹查詢索引,得到資料位址,再根據位址讀取資料。這種索引方式稱為非聚集索引

innodb中資料檔案本身就是索引檔案。索引也使用b+樹實現,葉子節點儲存資料。索引檔案本身需要按主鍵構建(所以innodb需要必須有主鍵,沒有指定會預設生成)。innodb的輔助索引底層儲存的是主鍵的值。然後再根據主鍵的值去主鍵索引(也相當於資料檔案)去查詢相應的值。

innodb這樣的聚集式索引會使得主鍵的檢索十分高效。若使用輔助索引,需查詢2遍索引。

最好不要使用過長的主鍵,因為輔助索引會引用主鍵值。主鍵最好是自增的,防止為維護b+樹而頻繁**調整樹結構。

myisam要點: 索引檔案上不記錄資料,只有資料儲存位址。myisam的索引檔案和資料檔案分離,查詢上先查索引檔案,再查資料檔案。稱為非聚集索引。

innodb要點:索引檔案就是乙個b+樹結構的索引,這個索引的葉子節點儲存資料,成為聚集索引。若有其他索引,則儲存主鍵索引的值,然後再去主鍵索引查詢真正的資料。

Mysql資料庫索引原理 InnoDB索引實現

innodb使用b tree作為索引結構 例如有這麼乙個表資料 col1為主鍵 在innodb中,表資料檔案本身就是按b tree組織的乙個索引結構,這棵樹的葉結點data域儲存了完整的資料記錄。這個索引的key是資料表的主鍵,因此innodb表資料檔案本身就是主索引。圖1圖1是innodb資料檔案...

關於MySql 資料庫InnoDB儲存引擎介紹

熟悉mysql的人,都知道innodb儲存引擎,如大家所知,redo log是innodb的核心事務日誌之一,innodb寫入redo log後就會提交事務,而非寫入到datafile。之後innodb再非同步地將新事務的資料非同步地寫入datafile,真正儲存起來。那麼innodb引擎有了red...

Mysql資料庫的使用總結之Innodb簡介 一

最近在對開發的軟體的伺服器部分製作安裝包,但伺服器部分需要有mysql資料庫的支援。因此,採用免安裝版的mysql策略 將mysql資料庫需要的檔案在安裝程式中進行設定和打包即可。但也遇到了很多問題,下面分三節進行總結。由於我們採用的是mysql中的innodb儲存引擎,故在此只對innodb作一些...