MySQL配置項innodb_flush_log_at_trx_commit


首先需要大致了解一下mysql日志操作步驟:
log_buff ---mysql寫 (write)---> log_file ---OS刷新 (flush)---> disk
 
innodb_flush_log_at_trx_commit 參數解釋:
0(延遲寫): log_buff  --每隔1秒--> log_file  —實時—> disk
1(實時寫,實時刷): log_buff  —實時—>  log_file  —實時—> disk
2(實時寫,延遲刷): log_buff  —實時—> log_file --每隔1秒--> disk
 
 
附Mysql的中文解釋:
當innodb_flush_log_at_trx_commit被 設置為0,日志緩沖每秒一次地被寫到日志文件,並且對日志文件做到磁盤操作的刷新,但是在一個事務提交不做任何操作。當這個值為1(默認值)之時,在每個事務提交時,日志緩沖被寫到日志文件,對日志文件做到磁盤操作的刷新。當設置為2之時,在每個提交,日志緩沖被寫到文件,但不對日志文件做到磁盤操作的刷新。盡管如此,在對日志文件的刷新在值為2的情況也每秒發生一次。我們必須注意到,因為進程安排問題,每秒一次的刷新不是100%保證每秒都發生。你可以通過設置這個值不為1來獲得較好的性能,但隨之你會在一次崩潰中損失二分之一價值的事務。如果你設置這個值為0,那么任何mysqld進程的崩潰會刪除崩潰前最后一秒的事務,如果你設置這個值為2,那么只有操作系統崩潰或掉電才會刪除最后一秒的事務。盡管如此,InnoDB的崩潰恢復不受影響,而且因為這樣崩潰恢復開始作用而不考慮這個值。注意,許多操作系統和一些磁盤硬件會欺騙刷新到磁盤操作。盡管刷新沒有進行,你可以告訴mysqld刷新已經進行。即使設置這個值為1,事務的持久程度不被保證,且在最壞情況下掉電甚至會破壞InnoDB數據庫。在SCSI磁盤控制器中,或在磁盤自身中,使用有后備電池的磁盤緩存會加速文件刷新並且使得操作更安全。你也可以試着使用Unix命令hdparm來在硬件緩存中禁止磁盤寫緩存,或使用其它一些對硬件提供商專用的命令。這個選項的默認值是1。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM