分布式儲存中指明了儲存的下層就是儲存引擎,所以就拿乙個實際的儲存引擎進行學習了解,儲存引擎究竟是如何操作使用的。下面對innodb儲存引擎做乙個簡單的總結。
1、什麼是innodb儲存引擎,在此儲存引擎上支撐的什麼樣的資料庫
2、關於innodb的原始碼中基本結構
innode預設有乙個記憶體池和持久化的磁碟,其中記憶體池中執行有7個執行緒,其中有4個io執行緒,有乙個主線程,乙個鎖線程,還有乙個錯誤監控執行緒
3、innode記憶體的緩衝區中快取的資料有:
資料頁4、master主線程的主要操作索引頁插入換成區
自適應雜湊索引
鎖資訊資料字典資訊
每秒鐘進行重新整理操作:
總是將日誌重新整理到磁碟上每10s進行的重新整理操作可能合併插入緩衝,取決於一秒內io的次數
最多重新整理100個髒頁到磁碟上
沒有使用者活動,自動切換到後台操作
重新整理100個髒頁到磁碟上5、innode為了考慮緩衝區和磁碟io的平衡,使用的不是之前了解的單純的lru演算法,使用下面的方法:合併至多5個插入緩衝
將日誌重新整理到磁碟上
產生乙個檢查點等
將記憶體中修改的頁稱為髒頁,待重新整理到磁碟上
插入的新頁不是直接插入到lru緩衝區中,專門設定了乙個插入緩衝區,新頁插入到插入緩衝區中
即不是像傳統的一樣未命中替換末尾冷的資料頁,而是可以將多個髒頁重新整理到磁碟上,記憶體緩衝區剩餘空也,可以直接被插入,通過這種方法來維護快取的。
6、聚集索引和非聚集索引的區別
聚集索引:
物理存放的順序和索引存放的資料一致,即索引的前後對應的資料位置的前後
打個比方:漢語字典中的拼音索引,漢字正文也是按照拼音進行排序的
非聚集索引:
物理存放的順序與索引存放的資料是不一致的
打個比方:漢語字典中的偏旁部首,偏旁部首的相鄰的資料索引,正文實際位置並不相鄰
7、聚集索引和非聚集索引插入時候的區別
對於聚集索引:物理位置插入後,直接在索引+1後面插入即可
對於非聚集索引,插入後,還需要首先通過聚集索引找到新插入的頁,然後計算非聚集索引,然後離散的訪問下乙個非聚集索引。
8、innod中對於非聚集索引的優化
針對非聚集索引這種離散化的讀操作,innod對這種進行了優化
優化方式:
使用插入緩衝區,innodb在記憶體中開闢了乙個區域叫做插入緩衝區,這個緩衝區是用來處理插入非聚集索引的。
主要執行以下操作:
插入的非聚集索引是否命中,命中則直接返回9、innodb兩次寫入方法賴保證資料的可靠性未命中,則加入到插入緩衝區
在緩衝區進行合併操作,將多個非聚集縮影操作合併稱為乙個操作,即操作乙個索引頁,通過這種方法減少非聚集索引離散度的影響、
innodb 寫入時採用兩次寫的思想,並不是直接把資料髒頁重新整理到磁碟上,而是先後兩個將資料順序的寫入到磁碟的書共享表空間,在從磁碟的共享表空間同步到磁碟的物理區域上。
10、innodb中自適應雜湊索引的技術
用於雜湊索引查詢的速度非常快,但是雜湊的過程建立是耗時的,所以innodb中提出了自適應雜湊索引
首先,innodb對索引的查詢進行監控,如果使用者對某些資料的索引訪問非常頻繁,則會自動為這些資料使用雜湊索引,建立索引表,這樣下次訪問這些頻繁的資料即可使用雜湊索引。
但是雜湊索引僅僅用於sql進行等值查詢,返回查詢是不行的、
11、innodb的檔案
除了上述講了以下關於innode的操作知識,innode對外存放有效的資料是表空間的形式存放的
每個以innodb引擎的表都會產生乙個表空間,該檔案存放表的索引和插入緩衝的一些資訊
除了表空間檔案外,還有乙個重做日誌檔案,用來恢復事務日誌。
InnoDB 儲存引擎
innodb是事務型資料庫的首選引擎,支援事務安全表 acid 支援行鎖定和外來鍵。mysql 5.5.5 之後,innodb作為預設儲存引擎。innodb的主要特性有一下幾項。a.innodb給mysql提供了具有提交 回滾和崩潰恢復能力的事務安全 acid相容 儲存引擎。innodb鎖定在行級並...
InnoDB 儲存引擎
設計上採用了類似於oracle資料庫的架構 接下來 詳細介紹 innodb 儲存引擎的 體系架構 及其不同於其他儲存引擎的特性 一 概述 innodb 儲存引擎 是第乙個完整支援acid事物的 mysql 儲存引擎 特點 1 行鎖設計 2 支援mvcc 3 提供一致性非鎖定讀 4 最有效地利用 以及...
InnoDB儲存引擎
內外存交換的基本單位 mysql將資料從外存讀入記憶體不是以記錄為單位,這樣消耗太大,是以頁為單位,每個頁裡填充記錄。每頁大小為16kb。記錄堆 行記錄儲存區,分為有效記錄和已刪除記錄兩種 自由空間鍊錶 已刪除記錄組成的鍊錶 未分配空間 頁尾 儲存頁面校驗資訊 頁內的資料是按照主鍵的順序有序儲存的。...