垂直拆分是指資料表列的拆分,把一張列比較多的表拆分為多張表
把不常用的字段單獨放在一張表;
把text,blob等大字段拆分出來放在附表中;
經常組合查詢的列放在一張表中;
垂直拆分更多時候就應該在資料表設計之初就執行的步驟,然後查詢的時候用jion關鍵起來即可;水平拆分是指資料表行的拆分,表的行數超過200萬行時,就會變慢,這時可以把一張的表的資料拆成多張表來存放。
1. 拆分原則通常情況下,我們使用取模的方式來進行表的拆分;比如一張有400w的使用者表users
,為提高其查詢效率我們把其分成4張表users1,users2,users3,users4
通過用id取模的方法把資料分散到四張表內id%4+1 = [1,2,3,4]
然後查詢,更新,刪除也是通過取模的方法來查詢
$_get['id'] = 17,
17%4 + 1 = 2,
$tablename = 'users'.'2'
select * from users2 where id = 17;
在insert時還需要一張臨時表uid_temp
來提供自增的id,該錶的唯一用處就是提供自增的id;
insert
into uid_temp values(null);
得到自增的id後,又通過取模法進行分表插入;
注意,進行水平拆分後的表,欄位的列和型別和原表應該是相同的,但是要記得去掉auto_increment自增長另外
create
view
users
as select from users1 union select from users2 union.........
from:
垂直拆分和水平拆分
前言 做資料庫分表的時候,總是能看到水平切分 垂直切分,但是並不能理解何為水平 何為垂直。僅此做個記錄。一般情況下說的水平切分 垂直切分,都是指的資料庫層面的。隨著業務量的增加,資料量肯定快速增長,拿mysql來說,單錶資料量在百萬級內讀取效率還是可以的,可是一旦達到千萬級,效能會有較大的降低。如果...
水平拆分和垂直拆分
網際網路時代談論最多的話題就是拆分。拆分一般分為水平拆分和垂直拆分,這並不單指對資料庫或者快取的拆分,主要是表達一種分而治之的思想。水平拆分是指由於單一節點無法滿足需求,需要擴充套件為多個節點,多個節點具有一直的功能,組成乙個服務池,乙個節點服務一部分請求量,所有節點共同處理大規模高併發的請求量。垂...
Mysql 水平拆分和垂直拆分
1,水平分割 例 qq的登入表。假設qq的使用者有100億,如果只有一張表,每個使用者登入的時候資料庫都要從這100億中查詢,會很慢很慢。如果將這一張表分成100份,每張表有1億條,就小了很多,比如qq0,qq1,qq1.qq99表。使用者登入的時候,可以將使用者的id 100,那麼會得到0 99的...