警告
1,、 使用 InnoDB 存儲(chǔ)引擎如果你還在使用 MyISAM 存儲(chǔ)引擎,,那么是時(shí)候轉(zhuǎn)換到 InnoDB 了。有很多的理由都表明 InnoDB 比 MyISAM 更有優(yōu)勢(shì),,如果你關(guān)注性能,,那么,我們來看一下它們是如何利用物理內(nèi)存的: MyISAM:僅在內(nèi)存中保存索引,。 下面是如何在你的表上去轉(zhuǎn)換存儲(chǔ)引擎的命令: ALTER TABLE table_name ENGINE=InnoDB; 注意:你已經(jīng)創(chuàng)建了所有合適的索引,,對(duì)嗎,?為了更好的性能,創(chuàng)建索引永遠(yuǎn)是第一優(yōu)先考慮的事情。 2,、 讓 InnoDB 使用所有的內(nèi)存你可以在 my.cnf 文件中編輯你的 MySQL 配置,。使用 innodb_buffer_pool_size 參數(shù)去配置在你的服務(wù)器上允許 InnoDB 使用物理內(nèi)存數(shù)量。 對(duì)此(假設(shè)你的服務(wù)器僅僅運(yùn)行 MySQL),,公認(rèn)的“經(jīng)驗(yàn)法則”是設(shè)置為你的服務(wù)器物理內(nèi)存的 80%,。在保證操作系統(tǒng)不使用交換分區(qū)而正常運(yùn)行所需要的足夠內(nèi)存之后 ,盡可能多地為 MySQL 分配物理內(nèi)存,。 因此,,如果你的服務(wù)器物理內(nèi)存是 32 GB,可以將那個(gè)參數(shù)設(shè)置為多達(dá) 25 GB,。 innodb_buffer_pool_size = 25600M 注意:(1)如果你的服務(wù)器內(nèi)存較小并且小于 1 GB,。為了適用本文的方法,你應(yīng)該去升級(jí)你的服務(wù)器,。 (2) 如果你的服務(wù)器內(nèi)存特別大,,比如,,它有 200 GB,,那么,根據(jù)一般常識(shí),,你也沒有必要為操作系統(tǒng)保留多達(dá) 40 GB 的內(nèi)存,。 3、 讓 InnoDB 多任務(wù)運(yùn)行如果服務(wù)器上的參數(shù) innodb_buffer_pool_size 的配置是大于 1 GB,,將根據(jù)參數(shù) innodb_buffer_pool_instances 的設(shè)置,, 將 InnoDB 的緩沖池劃分為多個(gè)。 擁有多于一個(gè)的緩沖池的好處有:
對(duì)于緩沖池?cái)?shù)量的官方建議是:
因此,,在我們的示例中,將參數(shù) innodb_buffer_pool_size 設(shè)置為 25 GB 的擁有 32 GB 物理內(nèi)存的服務(wù)器上,。一個(gè)合適的設(shè)置為 25600M / 24 = 1.06 GB innodb_buffer_pool_instances = 24 |
|