InnoDB儲存引擎概述 概述

2022-07-18 10:15:19 字數 2182 閱讀 9642

重新整理記憶體池資料,保證記憶體快取的是最新的資料,將已修改的資料檔案重新整理到磁碟中,資料庫發生異常時innodb能恢復至正常執行狀態.

負責將緩衝池中的資料非同步重新整理到磁碟,保證資料的一致性,包括髒頁的重新整理,合併插入緩衝,undo頁的**.

async io處理io請求,四種thread: write, read, insert buffer, log io thread, 可設定: innodb_read_io_threads, innodb_write_io_threads

來**已經使用並分配的undo頁.

髒頁重新整理的操作放在該執行緒中執行.

緩衝池大小可配: innodb_buffer_pool_size

緩衝池個數可配: innodb_buffer_pool_instances

改進lru演算法,該演算法為midpoint insertion strategy,預設midpoint的位於列表的5/8處,該位置可以通過innodb_old_blocks_pct控制.

引數innodb_old_blocks_time表示頁讀取到mid位置後需要等待多久才會被加入到lru的熱端.

髒頁既存在於lru list, flush list中,lur列表是用來管理頁列表的可用性,而flush列表是用來管理將頁重新整理回磁碟,兩者互不影響.

重做日誌緩衝池:可配置引數innodb_log_buffer_size,預設為8mb,以下三種將快取池內容重新整理到磁碟中的情況:

1) master thread每一秒將重做日誌緩衝重新整理到重做日誌中;

2) 每個事務提交時會將重做日誌緩衝重新整理到重做日誌中;

3) 當重做日誌緩衝池剩餘空間小於1/2時,重做日誌緩衝重新整理到重做日誌中.

兩種checkpoint: sharp checkpoint(資料庫關閉時將所有髒頁重新整理會磁碟), fuzzy checkpoint.

fuzzy checkpoint有以下幾種:

master thread checkpoint

fulsh_lru_list checkpoint

async/sync flush checkpoint

dirty page too much checkpoint

內部分為多個loop: loop, background loop, flush loop, suspend loop;

每秒操作:

日誌緩衝重新整理到磁碟,即使這個事務還沒有提交(總是);

合併插入緩衝(可能);

至多重新整理100個髒頁到磁碟(可能);

若當前無使用者活動,切換到background loop.

每10秒操作:

重新整理100個髒頁到磁碟;(可能)

合併至多5個插入緩衝;(總是)

將日誌緩衝重新整理到磁碟;(總是)

刪除無用的undo頁;(總是)

重新整理100個或10個髒頁到磁碟(總是).

刪除無用的undo頁(總是);

合併20個插入緩衝(總是);

跳出主迴圈(總是);

不斷重新整理100個頁直到符合條件(可能,跳轉到flush loop完成).

innodb_io_capacity

innodb_max_dirty_pages_pct

innodb_adaptive_flushing

innodb_purge_batch_size

master thread偽**:

從master thread中分離出重新整理髒頁的操作至乙個單獨的page cleaner thread.

適用物件:  非唯一的輔助索引

內部實現:  b+樹

ahi有乙個要求:對這個頁的連續訪問模式必須是一樣的

INNODB引擎概述

innodb儲存引擎是oltp應用中核心表的首選儲存引擎。innodb儲存引擎包含在所有mysql資料庫的二進位制發行版本中。早期其版本隨著mysql資料庫的更新而更新。從mysql5.1開始,mysql資料庫允許儲存引擎開發商以動態形式載入引擎,這樣儲存引擎的更新可以不受mysql資料庫版本的限制...

儲存引擎 MyIsam概述

myisam是mysql5.5之前預設的儲存引擎,缺點是 不支援事務,不支 持外來鍵,優點 批量插入和查詢資料快,不支援事務安全或者主要以查詢,插入為主的業務表的建立,可以定義為myisam儲存引擎。從上可知,獲取內容時,後面的空格都被過濾掉,前面的空格保留了。動態表中包含變長字段,記錄長度不是固定...

mysql儲存引擎概述

mysql儲存引擎特點 為表選擇儲存引擎 mysql create table test a int engine innodb 檢視有多少種儲存引擎 mysql show engines更改表的儲存引擎 mysql alter table tbl engine innodb 主要儲存引擎 inno...