資料庫擴充套件大概分為以下幾個步驟:
1、讀寫分離:當資料庫訪問量還不是很大的時候,我們可以適當增加伺服器,資料庫主從複製的方式將讀寫分離;
2、垂直分割槽:當寫入操作一旦增加的時候,那麼主從資料庫將花更多的時間的放在資料同步上,這個時候伺服器也是不堪重負的;那麼就有了資料的垂直分割槽,資料的垂直分割槽思路是將寫入操作比較頻繁的資料表,如使用者表_user,或者訂單表_orders,那麼我們就可以把這個兩個表分離出來,放在不同的伺服器,如果這兩個表和其他表存在聯表查詢,那麼就只能把原來的sql語句給拆分了,先查詢乙個表,在查詢另乙個,雖然說這個會消耗更過效能,但比起那種大量資料同步,負擔還是減輕了不少;
3、水平分割槽:但是往往事情不盡人意,可能採取垂直分割槽能撐一段時間,由於**太火了,訪問量又每日100w,一下子蹦到了1000w,這個時候可以採取資料的進行分離,我們可以根據user的id不同進行分配,如採取%2的形式,或者%10的形式,當然這種形式對以後的擴充套件有了很大的限制,當我由10個分割槽增加到20個的時候,所有的資料都得重新分割槽,那麼將是乙個的很龐大的計算量;以下提供幾種常見的演算法:
雜湊演算法:就是採用user_id%的方式;
範圍:可以根據user_id字元值範圍分割槽,如1-1000為一區,1001-2000則是另乙個區等;
對映關係:就是將user_id存在的所對應的分割槽放在資料庫中儲存,當使用者操作時先去查詢所在分割槽,再進行操作;
對於以上幾種擴充套件方式,讀寫分離主要是操作上的擴充套件,垂直分割槽主要是對寫入較頻繁資料表的分離,水平分割槽主要是資料分離;
mysql垂直分割槽和水平分割槽
資料庫擴充套件大概分為以下幾個步驟 1 讀寫分離 當資料庫訪問量還不是很大的時候,我們可以適當增加伺服器,資料庫主從複製的方式將讀寫分離 2 垂直分割槽 當寫入操作一旦增加的時候,那麼主從資料庫將花更多的時間的放在資料同步上,這個時候伺服器也是不堪重負的 那麼就有了資料的垂直分割槽,資料的垂直分割槽...
mysql垂直分割槽和水平分割槽
它是一種物理資料庫設計技術,mysql資料庫預設使用水平分割槽。2.1 水平分割槽 對錶的行進行分割槽,不同分組中物理分隔的資料組合在一起,表中的所有列都可以在每個分割槽找到,維持了表的屬性結構。2.2 垂直分割槽 把某些特定的列劃分到特定的分割槽,減少表的寬度,每個分割槽都儲存了其中列所在的行。分...
mysql 水平分表 垂直分表
mysql的分表技術 水平分割技術 以qq使用者登入為例 建立uuid表 create table uuid id int unsigned primary key auto increment 建立3張使用者表 create table qqlogin0 id int unsigned prima...