mysql數(shù)據(jù)庫應(yīng)付大流量網(wǎng)站的的3種架構(gòu)擴(kuò)展方式介紹
數(shù)據(jù)庫擴(kuò)展大概分為以下幾個(gè)步驟:
1、讀寫分離:當(dāng)數(shù)據(jù)庫訪問量還不是很大的時(shí)候,我們可以適當(dāng)增加服務(wù)器,數(shù)據(jù)庫主從復(fù)制的方式將讀寫分離;
2、垂直分區(qū):當(dāng)寫入操作一旦增加的時(shí)候,那么主從數(shù)據(jù)庫將花更多的時(shí)間的放在數(shù)據(jù)同步上,這個(gè)時(shí)候服務(wù)器也是不堪重負(fù)的;那么就有了數(shù)據(jù)的垂直分區(qū),數(shù)據(jù)的垂直分區(qū)思路是將寫入操作比較頻繁的數(shù)據(jù)表,如用戶表_user,或者訂單表_orders,那么我們就可以把這個(gè)兩個(gè)表分離出來,放在不同的服務(wù)器,如果這兩個(gè)表和其他表存在聯(lián)表查詢,那么就只能把原來的sql語句給拆分了,先查詢一個(gè)表,在查詢另一個(gè),雖然說這個(gè)會(huì)消耗更過性能,但比起那種大量數(shù)據(jù)同步,負(fù)擔(dān)還是減輕了不少;
3、水平分區(qū):但是往往事情不盡人意,可能采取垂直分區(qū)能撐一段時(shí)間,由于網(wǎng)站太火了,訪問量又每日100w,一下子蹦到了1000w,這個(gè)時(shí)候可以采取數(shù)據(jù)的進(jìn)行分離,我們可以根據(jù)user的Id不同進(jìn)行分配,如采取%2的形式,或者%10的形式,當(dāng)然這種形式對(duì)以后的擴(kuò)展有了很大的限制,當(dāng)我由10個(gè)分區(qū)增加到20個(gè)的時(shí)候,所有的數(shù)據(jù)都得重新分區(qū),那么將是一個(gè)的很龐大的計(jì)算量;以下提供幾種常見的算法:
哈希算法:就是采用user_id%的方式;
范圍:可以根據(jù)user_id字符值范圍分區(qū),如1-1000為一區(qū),1001-2000則是另一個(gè)區(qū)等;
映射關(guān)系:就是將user_id存在的所對(duì)應(yīng)的分區(qū)放在數(shù)據(jù)庫中保存,當(dāng)用戶操作時(shí)先去查詢所在分區(qū),再進(jìn)行操作;
對(duì)于以上幾種擴(kuò)展方式,讀寫分離主要是操作上的擴(kuò)展,垂直分區(qū)主要是對(duì)寫入較頻繁數(shù)據(jù)表的分離,水平分區(qū)主要是數(shù)據(jù)分離;
相關(guān)文章
Django+mysql配置與簡單操作數(shù)據(jù)庫實(shí)例代碼
這篇文章主要介紹了Django+mysql配置與簡單操作數(shù)據(jù)庫實(shí)例,需要的朋友可以參考下2017-07-07Mysql?optimize?table?時(shí)報(bào)錯(cuò):Temporary?file?write?fail的解決
這篇文章主要介紹了Mysql?optimize?table?時(shí)報(bào)錯(cuò):Temporary?file?write?fail的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理
這篇文章主要介紹了MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-08-08Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份
這篇文章主要介紹了Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09一句命令完成MySQL的數(shù)據(jù)遷移(輕量級(jí)數(shù)據(jù))
有時(shí)候我們需要將數(shù)據(jù)庫遷移的本地,對(duì)于數(shù)據(jù)量不大的數(shù)據(jù)完全可以采用下面的命令實(shí)現(xiàn),如果數(shù)據(jù)量比較大,建議使用專業(yè)的工具,例如帝國備份王等2013-08-08安裝mysql出錯(cuò)”A Windows service with the name MySQL already exis
這篇文章主要介紹了安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決的相關(guān)資料,在日常項(xiàng)目中此問題比較多見,特此把解決辦法分享給大家,供大家參考2016-05-05