您好,登錄后才能下訂單哦!
怎樣理解innodb_flush_log_at_trx_commit參數,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
當這個參數被設置為0,日志緩沖每秒一次地被寫到日志文件,并且對日志文件做到磁盤操作的刷新,但是在一個事務提交不做任何操作。當這個值為1(默認值)之時,在每個事務提交時,日志緩沖被寫到日志文件,對日志文件做到磁盤操作的 刷新。
當設置為2之時,在每個提交,日志緩沖被寫到文件,但不對日志文件做到磁盤操作的刷新。MySQL在對日志文件的刷新每秒發生一次。我們必須注意到,因為進程安排問題,每秒一次的刷新不是100%保證每秒都發生。你可以通過設置這個值不為1來獲得較好的性能,
但隨之你會在一次崩潰中損失二分之一價值的事務。如果你設置這個值為0,那么任何mysqld進程的崩潰會刪除崩潰前最后一秒的事務,如果我們設置這個值為2,那么只有操作系統崩潰或掉電才會刪除最后一秒的事務。
盡管如此,InnoDB的崩潰恢復不受影響,而且因為這樣崩潰恢復開始作用而不考慮這個值。注意,許多操作系統和一些磁盤硬件會欺騙刷新到磁盤操作。盡管刷新沒有進行,你可以告訴mysqld刷新已經進行。
即使設置這個值為1,事務的持久程度不被保證,且在最壞情況下掉電甚至會破壞InnoDB數據庫。在SCSI磁盤控制器中,或在磁盤自身中,使用有后備電池的磁盤緩存會加速文件 刷新并且使得操作更安全。你也可以試著使用Unix命令hdparm來在硬件緩存中禁止磁盤寫緩存,
或使用其它一些對硬件提供商專用的命令。這個選項的 默認值是1。
該參數簡單歸納如下:
參數innodb_flush_log_at_trx_commit:
=0 :每秒 write os cache & flush disk
=1 :每次commit都 write os cache & flush disk
=2 :每次commit都 write os cache,然后根據innodb_flush_log_at_timeout參數(默認為1s) flush disk
看完上述內容,你們掌握怎樣理解innodb_flush_log_at_trx_commit參數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。