溫馨提示×

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

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

如何提升MySQL可擴(kuò)展性

發(fā)布時(shí)間:2021-08-13 16:18:57 來(lái)源:億速云 閱讀:102 作者:Leah 欄目:數(shù)據(jù)庫(kù)

今天就跟大家聊聊有關(guān)如何提升MySQL可擴(kuò)展性,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

  1.調(diào)整查詢操作

  對(duì)查詢進(jìn)行優(yōu)化能夠讓你付出最少的精力就得到最多的成果。將查詢功能完善的發(fā)揮出來(lái),達(dá)到業(yè)務(wù)需求,不會(huì)被過(guò)多的流量和過(guò)重的載荷壓倒。這就是為什么我們經(jīng)常看見(jiàn)客戶碰到的麻煩越來(lái)越多,隨著他們網(wǎng)站的訪問(wèn)量越來(lái)越大,可擴(kuò)展性的挑戰(zhàn)也變得越來(lái)越嚴(yán)重,這就是問(wèn)題的所在。對(duì)網(wǎng)站角落里那些不常用的頁(yè)面做查詢優(yōu)化是并不必要的,那些頁(yè)面并不會(huì)收到真實(shí)世界的流量。根據(jù)反映對(duì)網(wǎng)絡(luò)應(yīng)用做一定的調(diào)整是很普遍的做法,而且效果很好。

  查詢優(yōu)化需要啟用緩慢查詢?nèi)罩静⑶也粩嘤^察。使用mk-query-digest這個(gè)Maatkit套件中的強(qiáng)大工具來(lái)分析日志,而且要確定設(shè)置了log_queries_not_using_indexes標(biāo)簽。一旦你發(fā)現(xiàn)某個(gè)查詢嚴(yán)重占用資源,那就要優(yōu)化它。使用EXPLAIN解釋機(jī)制,使用profiler,觀察索引的使用情況,創(chuàng)建失蹤的索引,理解它是怎么進(jìn)行添加和排序的。

  2.使用Master-Master復(fù)制

  Master-Master的active-passive復(fù)制模式,或者稱為循環(huán)復(fù)制,不僅能帶來(lái)高可用性,也能夠帶來(lái)高度的可擴(kuò)展性。這是因?yàn)槟隳軌蚣纯探o你的應(yīng)用分配到一塊只讀的從屬盤。許多網(wǎng)絡(luò)應(yīng)用都按照80/20的規(guī)律來(lái)分割,80%的活動(dòng)用來(lái)進(jìn)行讀取或SELECT,剩下的分配給INSERT和UPDATE。配置你的應(yīng)用或者進(jìn)行重新架構(gòu),把讀取需要的流量發(fā)送到從盤,這樣做是可行的,這種類型的橫向可擴(kuò)展能力可以進(jìn)一步延伸,在必要時(shí)能夠附加更多塊只讀從盤。

  怎樣快速提升MySQL可擴(kuò)展性

  3.使用存儲(chǔ)

  這聽(tīng)起來(lái)是很基礎(chǔ)的東西,也很直接,但是經(jīng)常會(huì)被忽視,你至少應(yīng)該確認(rèn)設(shè)置了這些:

  innodb_buffer_pool_sizekey_buffer_size(MyISAM索引緩存)query_cache_size–使用大型SMP時(shí)需要小心thread_cache&table_cacheinnodb_log_file_size&innodb_log_buffer_sizesort_buffer_size,join_buffer_size,read_buffer_size,read_rnd_buffer_sizetmp_table_size&max_heap_table_size

  4.磁盤讀取的RAID

  你的數(shù)據(jù)庫(kù)下面是什么不知道嗎,請(qǐng)找出來(lái)。你是在用RAID5嗎這對(duì)于性能來(lái)說(shuō)可是一個(gè)巨大的阻礙。RAID5的插入和更新操作速度很慢,而且如果你丟失了一塊硬盤,RAID5在重建時(shí)幾乎無(wú)能為力。RAID5實(shí)在是太慢了,那么應(yīng)該用什么代替它呢用RAID10做鏡像和分段,這就可以充分利用你的服務(wù)器或機(jī)箱里的所有硬盤了。即使你的內(nèi)存能夠容納下整個(gè)數(shù)據(jù)庫(kù),依然需要對(duì)硬盤進(jìn)行許多讀取操作。為什么呢因?yàn)楸热缗判虿僮餍枰匦掳才判辛校航M和聯(lián)接等等也一樣,還有添加交易日志等等這些都是磁盤I/O操作。

  5.調(diào)整Key參數(shù)

  另外,有些附加的參數(shù)也可以用來(lái)提高性能:

  innodb_flush_log_at_trx_commit=2

  它可以極大的提升insert和update的速度,只是在清除innodb日志緩沖區(qū)時(shí)有點(diǎn)偷懶。你可以對(duì)它多做些研究,但大多數(shù)情況下是非常值得推薦的。

  innodb_file_per_table

  innodb開(kāi)發(fā)就像Oracle,存儲(chǔ)方面使用的是tablespace模式。顯然內(nèi)核開(kāi)發(fā)者們做的并不完善,因?yàn)槭褂脝为?dú)tablespace的默認(rèn)設(shè)置就會(huì)出現(xiàn)性能瓶頸。這個(gè)參數(shù)設(shè)置可以幫助innodb為每個(gè)表創(chuàng)建tablespace和數(shù)據(jù)文件,就像MyISAM所做的一樣。

看完上述內(nèi)容,你們對(duì)如何提升MySQL可擴(kuò)展性有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

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

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

AI