InnoDB儲存結構二

2021-10-24 10:20:37 字數 2674 閱讀 2595

在innodb中使用了大量的aio(async io)來做讀寫處理,這樣可以極大提高資料庫的效能。在

innodb1.0版本之前共有4個io thread,分別是write,read,insert buffer和log thread,後來

版本將read thread和write thread分別增大到了4個,一共有10個了。

事務提交之後,其使用的undo日誌將不再需要,因此需要purge thread**已經分配的undo

頁。show variables like 『%innodb_purge_threads%』;

4個執行緒來做,大於0表示啟用,0表示禁用

page cleaner thread

作用是將髒資料重新整理到磁碟,髒資料刷盤後相應的redo log也就可以覆蓋,即可以同步資料,又能

達到redo log迴圈使用的目的。會呼叫write thread執行緒處理。

呼叫了iothread中的writethread,來完成

master thread

master thread是innodb的主線程,負責排程其他各執行緒,優先順序最高。作用是將緩衝池中的數

據非同步重新整理到磁碟 ,保證資料的一致性。包含:髒頁的重新整理(page cleaner thread)、undo頁

**(purge thread)、redo日誌重新整理(log thread)、合併寫緩衝等。內部有兩個主處理,分別

是每隔1秒和10秒處理

innodb檔案儲存結構

innodb資料檔案儲存結構:

分為乙個ibd資料檔案–>segment(段)–>extent(區)–>page(頁)–>row(行)

innodb檔案儲存格式

一般情況下,如果row_format為redundant、compact,檔案格式為antelope;如果

row_format為dynamic和compressed,檔案格式為barracuda

通過 information_schema 檢視指定表的檔案格式

select * from information_schema.innodb_sys_tables;
在建立表和索引時,檔案格式都被用於每個innodb表資料檔案(其名稱與*.ibd匹配)。修改檔案

格式的方法是重新建立表及其索引,最簡單方法是對要修改的每個表使用以下命令:

alter table 表名 row_format=格式型別;
file檔案格式(file-format)

在早期的innodb版本中,檔案格式只有一種,隨著innodb引擎的發展,出現了新檔案格式,用於

支援新的功能。目前innodb只支援兩種檔案格式:antelope 和 barracuda。

通過innodb_file_format 配置引數可以設定innodb檔案格式,之前預設值為antelope,5.7版本

開始改為barracuda。

row格式(row_format)

表的行格式決定了它的行是如何物理儲存的,這反過來又會影響查詢和dml操作的效能。如果在

單個page頁中容納更多行,查詢和索引查詢可以更快地工作,緩衝池中所需的記憶體更少,寫入更

新時所需的i/o更少。

innodb儲存引擎支援四種行格式:redundant、compact、dynamic和compressed。

dynamic和compressed新格式引入的功能有:資料壓縮、增強型長列資料的頁外儲存和大索引字首。每個表的資料分成若干頁來儲存,每個頁中採用b樹結構儲存;

如果某些字段資訊過長,無法儲存在b樹節點中,這時候會被單獨分配空間,此時被稱為溢位頁,

該字段被稱為頁外列

innodb邏輯儲存結構

innodb邏輯儲存結構從頂層往下分別是表空間 段 區 頁 行。表空間儲存著所有的資料,是innodb邏輯儲存結構的最高層。預設情況下,innodb只有個共享表空間,所有的資料都儲存在共享表空間中。如果使用者啟動了innodb file per table,則每個表內的資料可以單獨放到乙個表空間內,...

innodb表空間儲存結構

儲存結構 innodb的邏輯儲存結構如圖所示 其空間管理由段,區和頁構成。段包括葉子節點段,即所有索引的葉子節點都儲存在這個段裡,葉子節點儲存資料 次級索引是主鍵 和鍵值,這可以方便管理並且減少隨機io 還包括非葉子節點,儲存的是指向另外節點的指標和鍵值 回滾段儲存的是每個表的undo日誌 具體分析...

myisam與innodb的儲存結構

一 常用的儲存引擎 二 儲存引擎特性區別 三 資料訪問方式 一 常用的儲存引擎 myisam innodb 二 儲存引擎特性區別 1.事務方面 innodb支援事務.myisam不支援事務 2.外來鍵方面 innodb支援外來鍵,myisam不支援外來鍵 3.索引方面 innodb是聚集索引 聚簇索...