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