溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎樣理解innodb_flush_log_at_trx_commit參數(shù)

發(fā)布時(shí)間:2021-11-16 14:15:28 來源:億速云 閱讀:152 作者:柒染 欄目:MySQL數(shù)據(jù)庫

怎樣理解innodb_flush_log_at_trx_commit參數(shù),相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

當(dāng)這個(gè)參數(shù)被設(shè)置為0,日志緩沖每秒一次地被寫到日志文件,并且對(duì)日志文件做到磁盤操作的刷新,但是在一個(gè)事務(wù)提交不做任何操作。當(dāng)這個(gè)值為1(默認(rèn)值)之時(shí),在每個(gè)事務(wù)提交時(shí),日志緩沖被寫到日志文件,對(duì)日志文件做到磁盤操作的 刷新。
當(dāng)設(shè)置為2之時(shí),在每個(gè)提交,日志緩沖被寫到文件,但不對(duì)日志文件做到磁盤操作的刷新。MySQL在對(duì)日志文件的刷新每秒發(fā)生一次。我們必須注意到,因?yàn)檫M(jìn)程安排問題,每秒一次的刷新不是100%保證每秒都發(fā)生。你可以通過設(shè)置這個(gè)值不為1來獲得較好的性能,
但隨之你會(huì)在一次崩潰中損失二分之一價(jià)值的事務(wù)。如果你設(shè)置這個(gè)值為0,那么任何mysqld進(jìn)程的崩潰會(huì)刪除崩潰前最后一秒的事務(wù),如果我們?cè)O(shè)置這個(gè)值為2,那么只有操作系統(tǒng)崩潰或掉電才會(huì)刪除最后一秒的事務(wù)。
盡管如此,InnoDB的崩潰恢復(fù)不受影響,而且因?yàn)檫@樣崩潰恢復(fù)開始作用而不考慮這個(gè)值。注意,許多操作系統(tǒng)和一些磁盤硬件會(huì)欺騙刷新到磁盤操作。盡管刷新沒有進(jìn)行,你可以告訴mysqld刷新已經(jīng)進(jìn)行。
即使設(shè)置這個(gè)值為1,事務(wù)的持久程度不被保證,且在最壞情況下掉電甚至?xí)茐腎nnoDB數(shù)據(jù)庫。在SCSI磁盤控制器中,或在磁盤自身中,使用有后備電池的磁盤緩存會(huì)加速文件 刷新并且使得操作更安全。你也可以試著使用Unix命令hdparm來在硬件緩存中禁止磁盤寫緩存,
或使用其它一些對(duì)硬件提供商專用的命令。這個(gè)選項(xiàng)的 默認(rèn)值是1。
該參數(shù)簡(jiǎn)單歸納如下:
參數(shù)innodb_flush_log_at_trx_commit:
    =0 :每秒 write os cache & flush disk
    =1 :每次commit都 write os cache & flush disk
    =2 :每次commit都 write os cache,然后根據(jù)innodb_flush_log_at_timeout參數(shù)(默認(rèn)為1s) flush disk

看完上述內(nèi)容,你們掌握怎樣理解innodb_flush_log_at_trx_commit參數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI