1).i
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都做網(wǎng)站、
外貿(mào)營(yíng)銷網(wǎng)站建設(shè)與策劃設(shè)計(jì),衛(wèi)輝網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:衛(wèi)輝等地區(qū)。衛(wèi)輝做網(wǎng)站價(jià)格咨詢:13518219792nnodb_buffer_pool_size
為了提升性能,可以把要寫(xiě)的數(shù)據(jù)先在緩沖區(qū)buffer里合并,然后再發(fā)送給下一級(jí)存儲(chǔ)。這樣做可以提高I/O讀寫(xiě)的效率。
InnoDB Buffer Pool就是InnoDB用來(lái)緩存它的數(shù)據(jù)和索引的內(nèi)存緩沖區(qū),可由innodb_buffer_pool_size設(shè)置其大小。
理論上將這個(gè)值設(shè)置的越高,訪問(wèn)數(shù)據(jù)需要的磁盤(pán)I/O就越少。常見(jiàn)的做法是讓這個(gè)值大于熱點(diǎn)數(shù)據(jù),這樣可以獲得比較好的性能。建議將其值設(shè)置為機(jī)器物理內(nèi)存大小的70%-80%之間。
2).innodb_log_file_size
日志組里每個(gè)日志文件的大小,在32位計(jì)算機(jī)上日志文件的合并大小必須小于4GB,默認(rèn)大小是5MB,在生產(chǎn)環(huán)境下,這個(gè)值需要調(diào)整,官方文檔推薦值為1MB到1/N的緩沖池大小,其中N是日志組里日志文件的數(shù)(由innodb_log_files_in_group變量來(lái)確定,一般
默認(rèn)值為2)。值越大,在緩沖池中需要檢查點(diǎn)刷新的行為就越少,因此也就越節(jié)約磁盤(pán)I/O,但更大的日志文件也意味著在崩潰時(shí)恢復(fù)的更慢。
建議將日志文件的大小設(shè)置為256MB或更大,這樣可以滿足一般情況下的需要。
3).innodb_flush_log_at_trx_commit,建議設(shè)置為2
這個(gè)選項(xiàng)的默認(rèn)值是1,當(dāng)設(shè)置為2時(shí),在每個(gè)事務(wù)提交時(shí),日志緩沖被寫(xiě)到文件中,但不對(duì)日志文件做刷新到磁盤(pán)的操作。對(duì)日志文件的刷新每秒才發(fā)生一次。所以,理論上操作系統(tǒng)崩潰或掉電只會(huì)丟失最后一秒的事務(wù)。
以下是設(shè)置為0,1,2三個(gè)值的詳細(xì)解釋:
如果innodb_flush_log_at_trx_commit設(shè)置為0,log buffer將每秒一次地寫(xiě)入log file中,并且log file的flush(刷到磁盤(pán))操作同時(shí)進(jìn)行.該模式下,在事務(wù)提交的時(shí)候,不會(huì)主動(dòng)觸發(fā)寫(xiě)入磁盤(pán)的操作。
如果innodb_flush_log_at_trx_commit設(shè)置為1,每次事務(wù)提交時(shí)MySQL都會(huì)把log buffer的數(shù)據(jù)寫(xiě)入log file,并且flush(刷到磁盤(pán))中去.
如果innodb_flush_log_at_trx_commit設(shè)置為2,每次事務(wù)提交時(shí)MySQL都會(huì)把log buffer的數(shù)據(jù)寫(xiě)入log file.但是flush(刷到磁盤(pán))操作并不會(huì)同時(shí)進(jìn)行。
該模式下,MySQL會(huì)每秒執(zhí)行一次 flush(刷到磁盤(pán))操作。
4).sync_binlog,建議設(shè)置為0
sync_binlog=0,當(dāng)事務(wù)提交之后,MySQL不做fsync之類的磁盤(pán)同步指令刷新binlog_cache中的信息到磁盤(pán),而讓Filesystem自行決定什么時(shí)候來(lái)做同步,或者cache滿了之后才同步到磁盤(pán)。
sync_binlog=n,當(dāng)每進(jìn)行n次事務(wù)提交之后,MySQL將進(jìn)行一次fsync之類的磁盤(pán)同步指令來(lái)將binlog_cache中的數(shù)據(jù)強(qiáng)制寫(xiě)入磁盤(pán)。
如果是autocommit模式,那么每執(zhí)行一個(gè)語(yǔ)句就會(huì)向binlog里寫(xiě)入一次,否則每個(gè)事務(wù)寫(xiě)入一次。如果sync_binlog的值為正,那么每當(dāng)sync_binlog參數(shù)設(shè)定的語(yǔ)句或事務(wù)數(shù)被寫(xiě)入binlog后,MySQL服務(wù)器就會(huì)將它的二進(jìn)制日志同步到硬盤(pán)上。默認(rèn)值是0,不與硬盤(pán)同步。值為1是最安全的選擇,因?yàn)楸罎r(shí),
你最多丟失binlog中的一個(gè)語(yǔ)句或事務(wù)。但是這也是最慢的選擇,成本昂貴。
innodb_flush_log_at_trx_commit和sync_binlog參數(shù)的區(qū)別:
innodb_flush_log_at_trx_commit 這個(gè)是控制的是 innodb 存儲(chǔ)的表的數(shù)據(jù)寫(xiě)入方式, 是ib_logfile這個(gè)文件的刷新方式
sync_binlog 控制的是 binlog 的寫(xiě)入,是mysql-bin.000的刷新方式
本文題目:MySQL的幾個(gè)和innodb相關(guān)的主要參數(shù)設(shè)置總結(jié)-創(chuàng)新互聯(lián)
網(wǎng)址分享:
http://weahome.cn/article/dhjsci.html