天天看點

mysql垂直分區和水準分區

資料庫擴充大概分為以下幾個步驟: 

1、讀寫分離:當資料庫通路量還不是很大的時候,我們可以适當增加伺服器,資料庫主從複制的方式将讀寫分離; 

2、垂直分區:當寫入操作一旦增加的時候,那麼主從資料庫将花更多的時間的放在資料同步上,這個時候伺服器也是不堪重負的;那麼就有了資料的垂直 分區,資料的垂直分區思路是将寫入操作比較頻繁的資料表,如使用者表_user,或者訂單表_orders,那麼我們就可以把這個兩個表分離出來,放在不同 的伺服器,如果這兩個表和其他表存在聯表查詢,那麼就隻能把原來的sql語句給拆分了,先查詢一個表,在查詢另一個,雖然說這個會消耗更過性能,但比起那 種大量資料同步,負擔還是減輕了不少; 

3、水準分區:但是往往事情不盡人意,可能采取垂直分區能撐一段時間,由于網站太火了,通路量又每日100w,一下子蹦到了1000w,這個時候 可以采取資料的進行分離,我們可以根據user的Id不同進行配置設定,如采取%2的形式,或者%10的形式,當然這種形式對以後的擴充有了很大的限制,當我 由10個分區增加到20個的時候,所有的資料都得重新分區,那麼将是一個的很龐大的計算量;以下提供幾種常見的算法: 

  雜湊演算法:就是采用user_id%的方式; 

  範圍:可以根據user_id字元值範圍分區,如1-1000為一區,1001-2000則是另一個區等; 

  映射關系:就是将user_id存在的所對應的分區放在資料庫中儲存,當使用者操作時先去查詢所在分區,再進行操作; 

對于以上幾種擴充方式,讀寫分離主要是操作上的擴充,垂直分區主要是對寫入較頻繁資料表的分離,水準分區主要是資料分離;

原文:https://www.cnblogs.com/aipiaoborensheng/p/6394662.html

繼續閱讀