溫馨提示×

溫馨提示×

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

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

MySQL的幾個和innodb相關(guān)的主要參數(shù)設(shè)置總結(jié)

發(fā)布時間:2020-08-06 22:25:33 來源:ITPUB博客 閱讀:134 作者:chenfeng 欄目:MySQL數(shù)據(jù)庫
1).innodb_buffer_pool_size
為了提升性能,可以把要寫的數(shù)據(jù)先在緩沖區(qū)buffer里合并,然后再發(fā)送給下一級存儲。這樣做可以提高I/O讀寫的效率。
InnoDB Buffer Pool就是InnoDB用來緩存它的數(shù)據(jù)和索引的內(nèi)存緩沖區(qū),可由innodb_buffer_pool_size設(shè)置其大小。
理論上將這個值設(shè)置的越高,訪問數(shù)據(jù)需要的磁盤I/O就越少。常見的做法是讓這個值大于熱點數(shù)據(jù),這樣可以獲得比較好的性能。建議將其值設(shè)置為機(jī)器物理內(nèi)存大小的70%-80%之間。


2).innodb_log_file_size
日志組里每個日志文件的大小,在32位計算機(jī)上日志文件的合并大小必須小于4GB,默認(rèn)大小是5MB,在生產(chǎn)環(huán)境下,這個值需要調(diào)整,官方文檔推薦值為1MB到1/N的緩沖池大小,其中N是日志組里日志文件的數(shù)(由innodb_log_files_in_group變量來確定,一般
默認(rèn)值為2)。值越大,在緩沖池中需要檢查點刷新的行為就越少,因此也就越節(jié)約磁盤I/O,但更大的日志文件也意味著在崩潰時恢復(fù)的更慢。
建議將日志文件的大小設(shè)置為256MB或更大,這樣可以滿足一般情況下的需要。


3).innodb_flush_log_at_trx_commit,建議設(shè)置為2
這個選項的默認(rèn)值是1,當(dāng)設(shè)置為2時,在每個事務(wù)提交時,日志緩沖被寫到文件中,但不對日志文件做刷新到磁盤的操作。對日志文件的刷新每秒才發(fā)生一次。所以,理論上操作系統(tǒng)崩潰或掉電只會丟失最后一秒的事務(wù)。
以下是設(shè)置為0,1,2三個值的詳細(xì)解釋:
如果innodb_flush_log_at_trx_commit設(shè)置為0,log buffer將每秒一次地寫入log file中,并且log file的flush(刷到磁盤)操作同時進(jìn)行.該模式下,在事務(wù)提交的時候,不會主動觸發(fā)寫入磁盤的操作。
如果innodb_flush_log_at_trx_commit設(shè)置為1,每次事務(wù)提交時MySQL都會把log buffer的數(shù)據(jù)寫入log file,并且flush(刷到磁盤)中去.
如果innodb_flush_log_at_trx_commit設(shè)置為2,每次事務(wù)提交時MySQL都會把log buffer的數(shù)據(jù)寫入log file.但是flush(刷到磁盤)操作并不會同時進(jìn)行。
該模式下,MySQL會每秒執(zhí)行一次 flush(刷到磁盤)操作。


4).sync_binlog,建議設(shè)置為0
sync_binlog=0,當(dāng)事務(wù)提交之后,MySQL不做fsync之類的磁盤同步指令刷新binlog_cache中的信息到磁盤,而讓Filesystem自行決定什么時候來做同步,或者cache滿了之后才同步到磁盤。
sync_binlog=n,當(dāng)每進(jìn)行n次事務(wù)提交之后,MySQL將進(jìn)行一次fsync之類的磁盤同步指令來將binlog_cache中的數(shù)據(jù)強(qiáng)制寫入磁盤。

如果是autocommit模式,那么每執(zhí)行一個語句就會向binlog里寫入一次,否則每個事務(wù)寫入一次。如果sync_binlog的值為正,那么每當(dāng)sync_binlog參數(shù)設(shè)定的語句或事務(wù)數(shù)被寫入binlog后,MySQL服務(wù)器就會將它的二進(jìn)制日志同步到硬盤上。默認(rèn)值是0,不與硬盤同步。值為1是最安全的選擇,因為崩潰時,
你最多丟失binlog中的一個語句或事務(wù)。但是這也是最慢的選擇,成本昂貴。

innodb_flush_log_at_trx_commit和sync_binlog參數(shù)的區(qū)別:
innodb_flush_log_at_trx_commit 這個是控制的是 innodb 存儲的表的數(shù)據(jù)寫入方式, 是ib_logfile這個文件的刷新方式
sync_binlog 控制的是 binlog 的寫入,是mysql-bin.000的刷新方式

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

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

AI