溫馨提示×

溫馨提示×

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

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

如何有效優(yōu)化Mysql瓶頸

發(fā)布時間:2020-05-29 17:46:01 來源:網(wǎng)絡 閱讀:246 作者:三月 欄目:MySQL數(shù)據(jù)庫

下文給大家?guī)黻P(guān)于如何有效優(yōu)化Mysql瓶頸,感興趣的話就一起來看看這篇文章吧,相信看完如何有效優(yōu)化Mysql瓶頸對大家多少有點幫助吧。

Mysql 瓶頸優(yōu)化(從小業(yè)務到大業(yè)務的轉(zhuǎn)變)

假設一個網(wǎng)站(discuz)從最開始訪問量很小做到日pv千萬,我們來推測一下它的mysql服務器架構(gòu)演變過程。
1. 第一階段
網(wǎng)站訪問量日pv量級在1w以下。單臺機器跑web和db,不需要做架構(gòu)層調(diào)優(yōu)(比如,不需要增加memcached緩存)。此時,數(shù)據(jù)往往都是每日冷備份的,但有時候如果考慮數(shù)據(jù)安全性,會搭建一個mysql主從。
2. 第二階段
網(wǎng)站訪問量日pv達到幾萬。此時單臺機器已經(jīng)有點負載,需要我們把web和db分開,需要搭建memcached服務作為緩存。也就是說,在這個階段,我們還可以使用單臺機器跑mysql去承擔整個網(wǎng)站的數(shù)據(jù)存儲和查詢。如果做mysql主從,目的也是為了數(shù)據(jù)安全性。
3. 第三階段
網(wǎng)站訪問量日pv達到幾十萬。單臺機器雖然也可以支撐,但是需要的機器配置要比之前的機器好很多。如果經(jīng)費允許,可以購買配置很高的機器來跑mysql服務,但是并不是說,配置翻倍,性能也翻倍,到了一定階段配置增加已經(jīng)不能帶來性能的增加。所以,此階段,我們會想到做mysql服務的集群,也就是說我們可以拿多臺機器跑mysql。但,mysql的集群和web集群是不一樣的,我們需要考慮數(shù)據(jù)的一致性,所以不能簡單套用做web集群的方式(lvs,nginx代理)??梢宰龅募軜?gòu)是,mysql主從,一主多從。為了保證架構(gòu)的健壯和數(shù)據(jù)完整,主只能是一個,從可以是多個。
還有一個問題,我們需要想到,就是在前端web層,我們的程序里面指定了mysql機器的ip,那么當mysql機器有多臺時,程序里面如何去配置?discuz,其實有一個功能,支持mysql讀寫分離。即,我們可以拿多臺機器跑mysql,其中一臺寫,其他多臺是讀,我們只需要把讀和寫的ip分別配置到程序中,程序自動會去區(qū)分機器。當然,如果不使用discuz自帶的配置,我們還可以引用一個軟件叫做 mysql-proxy, 使用他來實現(xiàn)讀寫分離。它支持一主多從的模式。
4. 第四階段
    網(wǎng)站訪問量日pv到幾百萬。之前的一主多從模式已經(jīng)遇到瓶頸,因為當網(wǎng)站訪問量變大,讀數(shù)據(jù)庫的量也會越來越大,我們需要多加一些從進來,但是從的數(shù)量增加到數(shù)十臺時,由于主需要把bin-log全部分發(fā)到所有從上,那么這個過程本身就是一件很繁瑣的事情,再加上頻繁讀取,勢必會造成從上同步過來的數(shù)據(jù)有很大延遲。所以,我們可以做一個優(yōu)化,把mysql原來的一主多從變?yōu)橐恢饕粡?,然后從作為其他從的主,而前面的主只負責網(wǎng)站業(yè)務的寫入,而后面的從不負責網(wǎng)站任何業(yè)務,只負責給其他從同步bin-log。這樣還可以繼續(xù)多疊加幾個從庫。
5. 第五階段
    網(wǎng)站訪問量日pv到1千萬的時候,我們發(fā)現(xiàn),網(wǎng)站的寫入量非常大,我們之前架構(gòu)中只有一個主,這里的主已經(jīng)成為瓶頸了。所以,需要再近一步做出調(diào)整。比如,我們可以把業(yè)務分模塊,把用戶相關(guān)的單獨分離出來,把權(quán)限、積分等也可以分離出來單獨跑一個庫,然后再做主從,也就是所謂的分庫。當然也可以換一個緯度,把訪問量或者寫入量大的表單獨分離出來,跑在一臺服務器上,也可以把一個表分成多個小表。這一步操作,涉及到一些程序上的改動,所以需要事先和開發(fā)同事做好溝通和設計??傊?,這一步要做的就是分庫分表。

   再往后發(fā)展,繼續(xù)把大表分小表即可。 而國內(nèi)阿里淘寶網(wǎng)站的數(shù)據(jù)量是巨量的,他們的數(shù)據(jù)庫全部都是mysql,他們的mysql架構(gòu)就是遵循分庫分表這個原則的,只不過他們劃分規(guī)則會有很多緯度,比如可以根據(jù)地域劃分,可以根據(jù)買家、賣家劃分,可以根據(jù)時間劃分等等。

看了以上關(guān)于如何有效優(yōu)化Mysql瓶頸詳細內(nèi)容,是否有所收獲。如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

向AI問一下細節(jié)

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

AI