表的垂直拆分和水平拆分

2021-07-26 00:23:54 字數 1276 閱讀 9883

垂直拆分是指資料表列的拆分,把一張列比較多的表拆分為多張表

把不常用的字段單獨放在一張表;

把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的...