當(dāng)前位置: 首頁(yè)最新資訊 IT業(yè)界 → 完美的優(yōu)化MySQL使其并發(fā)能力明顯提升

完美的優(yōu)化MySQL使其并發(fā)能力明顯提升

更多

1、使用行級(jí)別鎖,避免表級(jí)別或頁(yè)級(jí)別鎖

盡量使用支持行級(jí)別鎖的存儲(chǔ)引擎,如InnoDB;只在讀操作顯著多于寫(xiě)作的場(chǎng)景中(如數(shù)據(jù)倉(cāng)庫(kù)類(lèi)的應(yīng)用)使用表級(jí)別鎖的存儲(chǔ)引擎,如MyISAM;。

2、降低熱巨鎖(hot gaint lock)出現(xiàn)的可能性以盡可能避免全局互斥量

臨界區(qū)(僅允許單一線(xiàn)程訪問(wèn)的資源)會(huì)嚴(yán)重降低MySQL系統(tǒng)并發(fā)性;InnoDB緩沖池(buffer pool)、數(shù)據(jù)字典等都是常見(jiàn)的臨界區(qū);幸運(yùn)的是,新版本的InnoDB已經(jīng)能夠較好的運(yùn)行于多核處理器,支持使用innodb_buffer_pool_instances服務(wù)器變量建立多個(gè)緩沖池實(shí)例,每個(gè)緩沖池實(shí)例分別自我管理空閑列表、列表刷寫(xiě)、LRU以及其它跟緩沖池相關(guān)的數(shù)據(jù)結(jié)構(gòu),并通過(guò)各自的互斥鎖進(jìn)行保護(hù)。

3、并行運(yùn)行多個(gè)I/O線(xiàn)程

通過(guò)innodb_io_capacity服務(wù)器變量等增加磁盤(pán)I/O線(xiàn)程的數(shù)量可以提高前端操作(如SELECT)的性能,不過(guò),磁盤(pán)I/O線(xiàn)程的數(shù)量不應(yīng)該超過(guò)磁盤(pán)的IOPS(7200RPM的單塊硬件的IOPS數(shù)量一般為100個(gè)左右)。

此外,異步I/O也可以在一定程度上提高系統(tǒng)的并發(fā)能力,在Linux系統(tǒng)上,可以通過(guò)將MySQL的服務(wù)器變量innodb_use_native_aio的值設(shè)定為ON設(shè)定InnoDB可以使用Linux的異步I/O子系統(tǒng)。

4、并行后端任務(wù)

默認(rèn)情況下,MySQL的清寫(xiě)(purge)操作(用于移除帶刪除標(biāo)記的記錄)由InnoDB的主線(xiàn)程完成,這可以降低內(nèi)部資源競(jìng)爭(zhēng)發(fā)生的概率,進(jìn)而增強(qiáng)MySQL服務(wù)伸縮能力。不過(guò),隨著InnoDB內(nèi)部各式各樣的競(jìng)爭(zhēng)越來(lái)越多,這種設(shè)置帶來(lái)的性能優(yōu)勢(shì)已幾乎不值一提,因此,生產(chǎn)環(huán)境中應(yīng)該通過(guò)為innodb_purge_threads服務(wù)器變量設(shè)定為ON將主線(xiàn)程與清寫(xiě)線(xiàn)程分開(kāi)運(yùn)行。

5、單線(xiàn)程復(fù)制模型中的SQL線(xiàn)程是一個(gè)熱區(qū)

在從服務(wù)器上并行運(yùn)行多個(gè)SQL線(xiàn)程可有效提高M(jìn)ySQL從服務(wù)器性能,MySQL 5.6支持多線(xiàn)程復(fù)制(每庫(kù)一個(gè)復(fù)制線(xiàn)程);

熱門(mén)評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱(chēng):
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)