十九 InnoDB核心引數

2022-06-29 08:18:13 字數 1765 閱讀 1403

default_storage_engine=innodb

儲存引擎設定引數

innodb_file_per_table=1

預設獨立表空間模式

innodb_data_file_path=ibdata1:512m:ibdata2:512m:autoextend

共享表空間檔案個數跟大小配置

innodb_flush_log_at_trx_commit=1

控制redo刷寫方式的引數

"雙一"標準其中之一,預設為1

引數為1時,表示控制redo在事務提交時將資料從mysql使用的記憶體中立即寫入到os buffer記憶體再刷寫到硬碟上

引數為0時,表示redo按每秒將資料寫入os buffer記憶體,然後再將事務刷寫到硬碟上,追求效能時使用,但如果死機會丟失一秒內的資料

引數為2時,表示redo在事務提交時立即寫入os buffer記憶體,然後按每秒將事務刷寫到硬碟上

作用:控制redo buffer跟buffer pool的刷寫策略

預設fsync模式,資料都會先刷寫到os buffer再寫入硬碟

o_direct模式(建議使用,資料直接寫入硬碟會較安全),buffer pool直接將資料寫入硬碟,redo不變

o_dsync模式寫入方式如下

最高安全模式

innodb_flush_log_at_trx_commit=1

innodb_flush_method=o_direct

最高效能模式,可能會丟資料

innodb_flush_log_at_trx_commit=0

innodb_flush_method=fsync

redo日誌設定引數

innodb_log_buffer_size=16777216 #日誌緩衝區大小

innodb_log_file_size=50331648 #日誌檔案大小,預設50m

innodb_log_files_in_group = 3 #redo日誌檔案個數,預設2個

髒頁刷寫策略引數

控制髒頁記憶體大小比例,如髒頁占用記憶體75%時會觸發寫入到硬碟,調小會更快的將資料寫入到硬碟

當redo兩個日誌檔案滿了,也會立即將髒頁寫入到硬碟從而重新整理redo空間

csr(前滾故障恢復),mysql斷電後重啟對照lsn號通過讀取redo日誌內容重建buffer pool再將髒頁寫入硬碟

學習來自:老男孩深標dba課程 第五章 儲存引擎-2

InnoDB相關引數

innodb相關引數 innodb additional mem pool size 3m innodb用於儲存元資料資訊的記憶體池大小,一般不需修改 innodb flush log at trx commit 1 事務相關引數,如果值為1,則innodb在每次commit都會將事務日誌寫入磁碟 ...

innodb幾個引數

innodb flush method 該引數控制著如何重新整理資料到資料檔案 日誌檔案,該引數影響io吞吐。在類unix中如果這個引數沒有配置,那麼預設是fsync被使用。在類unix系統中,有下面的設定 fysnc 使用fsync 系統函式重新整理資料 o dsync innodb使用o syn...

innodb的引數設定

innodb flush log at trx commit 主要控制了innodb 將 log buffer 中的資料寫入日誌檔案並 flush 磁碟的時間點,取值分別為 0 1 2 三個。0 表示當事務提交時,不做日誌寫入操作,而是每秒鐘將 log buffer 中的資料寫入日誌檔案並 flus...