MySQL的幾個和innodb相關的主要引數設定總結
1).innodb_buffer_pool_size
為了提升效能,可以把要寫的資料先在緩衝區buffer裡合併,然後再傳送給下一級儲存。這樣做可以提高I/O讀寫的效率。
InnoDB Buffer Pool就是InnoDB用來快取它的資料和索引的記憶體緩衝區,可由innodb_buffer_pool_size設定其大小。
理論上將這個值設定的越高,訪問資料需要的磁碟I/O就越少。常見的做法是讓這個值大於熱點資料,這樣可以獲得比較好的效能。建議將其值設定為機器實體記憶體大小的70%-80%之間。
2).innodb_log_file_size
日誌組裡每個日誌檔案的大小,在32位計算機上日誌檔案的合併大小必須小於4GB,預設大小是5MB,在生產環境下,這個值需要調整,官方文件推薦值為1MB到1/N的緩衝池大小,其中N是日誌組裡日誌檔案的數(由innodb_log_files_in_group變數來確定,一般
預設值為2)。值越大,在緩衝池中需要檢查點重新整理的行為就越少,因此也就越節約磁碟I/O,但更大的日誌檔案也意味著在崩潰時恢復的更慢。
建議將日誌檔案的大小設定為256MB或更大,這樣可以滿足一般情況下的需要。
3).innodb_flush_log_at_trx_commit,建議設定為2
這個選項的預設值是1,當設定為2時,在每個事務提交時,日誌緩衝被寫到檔案中,但不對日誌檔案做重新整理到磁碟的操作。對日誌檔案的重新整理每秒才發生一次。所以,理論上作業系統崩潰或掉電只會丟失最後一秒的事務。
以下是設定為0,1,2三個值的詳細解釋:
如果innodb_flush_log_at_trx_commit設定為0,log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁碟)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁碟的操作。
如果innodb_flush_log_at_trx_commit設定為1,每次事務提交時MySQL都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中去.
如果innodb_flush_log_at_trx_commit設定為2,每次事務提交時MySQL都會把log buffer的資料寫入log file.但是flush(刷到磁碟)操作並不會同時進行。
該模式下,MySQL會每秒執行一次 flush(刷到磁碟)操作。
4).sync_binlog,建議設定為0
sync_binlog=0,當事務提交之後,MySQL不做fsync之類的磁碟同步指令重新整理binlog_cache中的資訊到磁碟,而讓Filesystem自行決定什麼時候來做同步,或者cache滿了之後才同步到磁碟。
sync_binlog=n,當每進行n次事務提交之後,MySQL將進行一次fsync之類的磁碟同步指令來將binlog_cache中的資料強制寫入磁碟。
如果是autocommit模式,那麼每執行一個語句就會向binlog裡寫入一次,否則每個事務寫入一次。如果sync_binlog的值為正,那麼每當sync_binlog引數設定的語句或事務數被寫入binlog後,MySQL伺服器就會將它的二進位制日誌同步到硬碟上。預設值是0,不與硬碟同步。值為1是最安全的選擇,因為崩潰時,
你最多丟失binlog中的一個語句或事務。但是這也是最慢的選擇,成本昂貴。
innodb_flush_log_at_trx_commit和sync_binlog引數的區別:
innodb_flush_log_at_trx_commit 這個是控制的是 innodb 儲存的表的資料寫入方式, 是ib_logfile這個檔案的重新整理方式
sync_binlog 控制的是 binlog 的寫入,是mysql-bin.000的重新整理方式
為了提升效能,可以把要寫的資料先在緩衝區buffer裡合併,然後再傳送給下一級儲存。這樣做可以提高I/O讀寫的效率。
InnoDB Buffer Pool就是InnoDB用來快取它的資料和索引的記憶體緩衝區,可由innodb_buffer_pool_size設定其大小。
理論上將這個值設定的越高,訪問資料需要的磁碟I/O就越少。常見的做法是讓這個值大於熱點資料,這樣可以獲得比較好的效能。建議將其值設定為機器實體記憶體大小的70%-80%之間。
2).innodb_log_file_size
日誌組裡每個日誌檔案的大小,在32位計算機上日誌檔案的合併大小必須小於4GB,預設大小是5MB,在生產環境下,這個值需要調整,官方文件推薦值為1MB到1/N的緩衝池大小,其中N是日誌組裡日誌檔案的數(由innodb_log_files_in_group變數來確定,一般
預設值為2)。值越大,在緩衝池中需要檢查點重新整理的行為就越少,因此也就越節約磁碟I/O,但更大的日誌檔案也意味著在崩潰時恢復的更慢。
建議將日誌檔案的大小設定為256MB或更大,這樣可以滿足一般情況下的需要。
3).innodb_flush_log_at_trx_commit,建議設定為2
這個選項的預設值是1,當設定為2時,在每個事務提交時,日誌緩衝被寫到檔案中,但不對日誌檔案做重新整理到磁碟的操作。對日誌檔案的重新整理每秒才發生一次。所以,理論上作業系統崩潰或掉電只會丟失最後一秒的事務。
以下是設定為0,1,2三個值的詳細解釋:
如果innodb_flush_log_at_trx_commit設定為0,log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁碟)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁碟的操作。
如果innodb_flush_log_at_trx_commit設定為1,每次事務提交時MySQL都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中去.
如果innodb_flush_log_at_trx_commit設定為2,每次事務提交時MySQL都會把log buffer的資料寫入log file.但是flush(刷到磁碟)操作並不會同時進行。
該模式下,MySQL會每秒執行一次 flush(刷到磁碟)操作。
4).sync_binlog,建議設定為0
sync_binlog=0,當事務提交之後,MySQL不做fsync之類的磁碟同步指令重新整理binlog_cache中的資訊到磁碟,而讓Filesystem自行決定什麼時候來做同步,或者cache滿了之後才同步到磁碟。
sync_binlog=n,當每進行n次事務提交之後,MySQL將進行一次fsync之類的磁碟同步指令來將binlog_cache中的資料強制寫入磁碟。
如果是autocommit模式,那麼每執行一個語句就會向binlog裡寫入一次,否則每個事務寫入一次。如果sync_binlog的值為正,那麼每當sync_binlog引數設定的語句或事務數被寫入binlog後,MySQL伺服器就會將它的二進位制日誌同步到硬碟上。預設值是0,不與硬碟同步。值為1是最安全的選擇,因為崩潰時,
你最多丟失binlog中的一個語句或事務。但是這也是最慢的選擇,成本昂貴。
innodb_flush_log_at_trx_commit和sync_binlog引數的區別:
innodb_flush_log_at_trx_commit 這個是控制的是 innodb 儲存的表的資料寫入方式, 是ib_logfile這個檔案的重新整理方式
sync_binlog 控制的是 binlog 的寫入,是mysql-bin.000的重新整理方式
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135330/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 幾個和MySQL InnoDB相關的引數設定說明MySql
- mysql innodb相關引數說明MySql
- MySQL中Redo Log相關的重要引數總結MySql
- MYSQL INNODB innodb_thread_concurrency相關引數理解MySqlthread
- innodb的幾個記憶體引數記憶體
- 聊聊Oracle Optimizer相關的幾個引數(中)Oracle
- 聊聊Oracle Optimizer相關的幾個引數(下)Oracle
- Oracle undo保留時間的幾個相關引數Oracle
- Code::Blocks 編譯引數的相關設定BloC編譯
- MySQL的兩種filesort演算法介紹以及相關引數的設定和優化MySql演算法優化
- oracle 安裝相關引數設定Oracle
- mysql引數之innodb_buffer_pool_size大小設定MySql
- MySQL 5.5 和 5.6 預設引數值的差異總結MySql
- MySQL效能相關引數MySql
- 並行相關的幾個引數並行
- lucene3.0_和IndexWriter有關的幾個引數設定及重建索引注意事項Index索引
- 幾個與文字處理相關的Linux命令總結Linux
- MySQL 連線相關引數MySql
- MySQL slow log相關引數MySql
- mysql死鎖deadlock相關幾個系統變數innodb_lock_wait_timeoutMySql變數AI
- 幾項網路安全相關的no引數詳解
- MySQL:一個innodb_thread_concurrency設定不當引發的故障MySqlthread
- MySQL InnoDB的儲存結構總結MySql
- MySQL索引統計資訊更新相關的引數MySql索引
- sql*plus會話環境相關的引數設定檔案SQL會話
- 總結幾個常用的系統安全設定(含DenyHosts)
- MySQL的配置檔案的引數設定MySql
- mysql相關問題總結MySql
- MySql相關語句總結MySql
- Linux系統中與記憶體相關的幾個核心引數Linux記憶體
- MySQL 8.0 20個 InnoDB 及資料字典相關的新特性MySql
- Oracle Sequence不設定cache引數的幾個潛在問題Oracle
- MySQL中的統計資訊相關引數介紹MySql
- mysql innodb_log_file_size 和innodb_log_buffer_size引數MySql
- MySQL slow log相關引數解釋MySql
- mysql relay log相關引數說明MySql
- mysql的"雙1設定"-資料安全的關鍵引數(案例分享)MySql
- Spark的相關引數配置Spark