innodb_flush_log_at_trx_commit引數的直白理解

kakaxi9521發表於2021-07-14

innodb_flush_log_at_trx_commit  


可以定義mysql的事務提交方式


mysql寫檔案有2塊快取。一塊是自己定義在記憶體的log buffer, 另一個是磁碟對映到記憶體的os cache。


mysql可以 呼叫 flush 主動將log buffer 重新整理到磁碟記憶體對映,也可以呼叫 fsync 強制操作系同步磁碟對映檔案到磁碟。


還可以同時呼叫 flush + fsync, 將快取直接落盤。


innodb_flush_log_at_trx_commit = 0 就是每秒呼叫 flush + fsync ,定時器自己維護。


innodb_flush_log_at_trx_commit = 1 就是實時呼叫 flush + fsync 沒法批處理,效能很低。


innodb_flush_log_at_trx_commit = 2 就是實時flush ,定時 fsync 交給OS維護定時器。


我們只需要搞清楚MYSQL有幾個快取即可。以及定時批處理高效能和實時可靠低效能的特點。不需要記住引數,忘記再查表。

————————————————

版權宣告:本文為CSDN博主「liangdu_Zuker」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/u010833547/article/details/109293213


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2781225/,如需轉載,請註明出處,否則將追究法律責任。

相關文章