InnoDB rowid管理

1、原理流程圖
InnoDB rowid管理
2、講解
在innodb表中,並不是每個行記錄都存有row ID,只有表定義沒有主鍵時,纔會使用rowid並作爲主鍵。rowid的分配是全局的,所有的表都共享這個ID,即從在dict_sys->mutex鎖內獲取dict_sys->row_id中的值。

並不是每次插入操作都將rowid的值寫入到字典頁面中,插入操作相對於建表等操作頻繁多了,所以如果每次都寫入字典頁面中的話,將會影響效率。innoDB做了一個優化,每分配一個rowid,只在內存中+1,只有當這個值是256的倍數時才寫入一次。重啓時,從字典頁面讀取rowid值,並對其256對齊然後加上256,供以後分配rowid使用。不會因爲重啓重複使用以前已經使過的rowid。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章