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中Redo Log相關的重要引數總結MySql
- Oracle undo保留時間的幾個相關引數Oracle
- mysql死鎖deadlock相關幾個系統變數innodb_lock_wait_timeoutMySql變數AI
- MySQL:一個innodb_thread_concurrency設定不當引發的故障MySqlthread
- MySQL效能相關引數MySql
- 幾個與文字處理相關的Linux命令總結Linux
- [轉帖]Redis相關的核心引數解釋與設定Redis
- MySQL 連線相關引數MySql
- MySQL的配置檔案的引數設定MySql
- MySQL 8.0 20個 InnoDB 及資料字典相關的新特性MySql
- mysql相關問題總結MySql
- MySQL索引統計資訊更新相關的引數MySql索引
- mysql的"雙1設定"-資料安全的關鍵引數(案例分享)MySql
- MySQL:Innodb:innodb_flush_log_at_trx_commit引數影響的位置MySqlMIT
- mysql鎖分析相關的幾個系統檢視MySql
- mysql relay log相關引數說明MySql
- 總結 MySQL 相關知識點MySql
- MySQL change buffer介紹和相關引數調整建議MySql
- Spark的相關引數配置Spark
- 關於MySQL InnoDB表的二級索引是否加入主鍵的總結MySql索引
- basler工業相機引數設定
- 12C關於CDB、PDB引數的區別和總結
- mysql innodb_data_file_path引數忘記設定或者重新調整辦法MySql
- MySQL5.7統計資訊更新的相關引數解釋和測試MySql
- 引數的定義和引數的傳遞
- pga相關引數
- MySQL 字串擷取相關函式總結MySql字串函式
- Java與Mysql鎖相關知識總結JavaMySql
- MySQL:Innodb Handler_read_*引數解釋MySql
- JavaScript作用域相關的總結JavaScript
- JavaScript跨域相關的總結JavaScript跨域
- MySQL慢查詢日誌相關設定MySql
- App網路相關設計總結APP
- mysql關於variable的總結MySql
- MySQL兩種儲存引擎: MyISAM和InnoDB 簡單總結MySql儲存引擎
- mysql關於mysql.server的總結MySqlServer
- JS 總結之關於 this 應該知道的幾個點JS
- MySQL資料庫innodb_fast_shutdown引數MySql資料庫AST
- PostgreSQL AutoVacuum 相關引數SQL