innodb的引數設定

2021-08-31 15:32:41 字數 2145 閱讀 6826

innodb_flush_log_at_trx_commit:

主要控制了innodb 將 log buffer 中的資料寫入日誌檔案並 flush 磁碟的時間點,取值分別為 0 、 1 、 2 三個。 0 ,表示當事務提交時,不做日誌寫入操作,而是每秒鐘將 log buffer 中的資料寫入日誌檔案並 flush 磁碟一次; 1 ,則在每秒鐘或是每次事物的提交都會引起日誌檔案寫入、 flush 磁碟的操作,確保了事務的 acid ;設定為 2 ,每次事務提交引起寫入日誌檔案的動作,但每秒鐘完成一次 flush 磁碟操作。顯然,設定為 0 或 2 可以減小系統的 io 壓力,特別是 0 時,速度最快,提高 mysql 寫操作的吞吐量,但 mysql 或作業系統的崩潰、斷電都可能會引起資料的丟失,設定為 2 時 os 的崩潰和斷電可能會引起資料的丟失。

innodb_flush_method:

影響了伺服器 flush 資料或日誌檔案的方法。具體有三個選值:預設的 default , innodb 使用 fsync() 函式 flush 資料和日誌檔案; o_direct , innodb 使用 o_direct 的方式開啟資料檔案,並使用 fsync() 函式 flush 資料和日誌檔案; o_dsync , innodb 使用 o_sync 開啟並 flush 日誌檔案,使用 fsync() 函式 flush 資料檔案。

注: 在類unix 作業系統中,檔案的開啟方式為 o_direct 會最小化緩衝對 io 的影響 ,該檔案的io 是直接在使用者空間的 buffer 上操作的,並且 io 操作是同步的,因此不管是 read() 系統呼叫還是 write() 系統呼叫,資料都保證是從磁碟上讀取的 ;o_sync 方式表示以同步 io 的方式開啟檔案,任何寫操作都將阻塞到資料寫入物理磁碟後才返回。 f sync( int filedes) 函式只對由檔案描述符 filedes 指定的單一檔案起作用,並且等待寫磁碟操作結束,然後返回。 fdatasync(int filedes) 函式類似於 fsync ,但它只影響檔案的資料部分。而除資料外, fsync 還會同步更新檔案的元資訊到磁碟 。

sync_binlog:

影響了 binary log 的 fllush ,當為 1 時,每個事物提交後, mysql 將用 fdatasync() 函式將二進位制日誌同步到磁碟上;當為 0 時, mysql 不會做額外的 flush ,而是依靠 os 的 flush 。

做過一些相應的測試,獲得一些以上三引數搭配使用的結論:

1) o_direct的 flush_method 更適合於作業系統記憶體有限的情況下(可以避免不必要的對交換空間的讀寫操作),否則,它會由於禁用了 os 的緩衝降低對資料的讀寫操作的效能。

2) sync_binlog為 1 時, 每個含有修改操作的事物提交後,mysql 將 把 二進位制日誌同步到磁碟上 ,增大了io 壓力,引起相應瓶頸,會降低對資料寫操作的效率。而 select 操作不寫入 binary log ,所以不受任何影響。

3) 對於innodb_flush_log_at_trx_commit 與 innodb_flush_method 的不同組合( 0|1|2 , default|o_dsync )(對於 o_direct 的情況特殊,已經在 1 )中單獨做了總結在此不累述)分析得:

① (0 , default ) 每秒鐘呼叫fsync() 同步一次 innodb logfile , io 壓力小,效能高,但可能損失資料;

② (1 , default )每秒鐘和每次 commit 呼叫 fsync() 同步一次 innodb logfile ,保證資料完整的同時,加大了 io 壓力,吞吐量相對低;

③ (2 , default )速度介於前兩者之間,也不能完全保證資料的安全;

④ (0 , o_dsync)每秒同步日誌及資料檔案,吞吐量等情況應與( 0 , default )基本一致;

⑤ (1 , o_dsync) 每秒鐘和每次commit 同步資料及日誌檔案,相應於( 1 , default )情況一致;

⑥ (2 , o_dsync)雖然 innodb_flush_log_at_trx_commit 設定為2 , innodb被告知 每次事務提交引起寫入日誌檔案的動作,每秒鐘完成一次flush 磁碟操作 ,但由於o_dsync 的設定使得 os 對日誌自動做了同步工作,所以吞吐量等情況與 (1 , default )和( 1 , o_dsync)相一致。

引數設定 pandas引數設定小技巧

python大資料分析記錄 分享 成長 在日常使用pandas的過程中,由於我們所分析的資料表規模 格式上的差異,使得同樣的函式或方法作用在不同資料上的效果存在差異。而pandas有著自己的一套 引數設定系統 可以幫助我們在遇到不同的資料時靈活調節從而達到最好的效果,本文就將介紹pandas中常用的...

Matlab plot 引數設定

一 matlab繪圖中用到的直線屬性包括 1 linestyle 線形 2 linewidth 線寬 3 color 顏色 4 markertype 標記點的形狀 5 markersize 標記點的大小 6 marke cecolor 標記點內部的填充顏色 7 markeredgecolor 標記點...

JQuery draggable 引數設定

預設設定值 extend ui.draggable,限制y軸 draggable2 draggable 限制x軸 draggable4 draggable draggable5 draggable 限制在父系框架中 delay start 延時移動 draggable draggable 移動20畫...