垂直拆分與水平拆分

2021-07-15 05:37:14 字數 766 閱讀 6785

垂直拆分:

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

通常我們按以下原則進行垂直拆分:

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

把text,bigint等大字段拆分出來放在附表中。

經常組合查詢的列放在一張表中(聯合索引)。

垂直拆分的表在查詢的時候用join關鍵字連線起來即可。

水平拆分:

水平拆分是指資料表行的拆分,當表的行數超過200萬行時,查詢就會變得更慢,這時可以把一張的表的資料拆成多張表來存放。

原則:進行水平拆分後的表,欄位名與資料型別型別應該都與原表相同,但是要去掉主鍵auto_increment。在insert時需要一張臨時表(或其他方法)uid_temp來提供自增的id,該錶的唯一用處就是提供自增的id,得到自增的id後,通過取模法進行分表插入。

比如一張有400w的使用者表users,為提高其查詢效率我們把其分成4張表users1,users2,users3,users4。通過用id(自增id事先通過臨時表或其他方法已獲得)取模的方法把資料分散到表id%4+1 = [1,2,3,4]內。然後查詢,更新,刪除也是通過id取模的方法先獲得表,再執行相應sql。

參考:

Mycat垂直拆分與水平拆分

垂直拆分 垂直拆分是根據資料庫裡面的資料表的業務進行拆分,比如 乙個資料庫裡面既存在使用者資料,又存在訂單資料,那麼垂直拆分可以把使用者資料放入到使用者庫,把訂單資料放到訂單庫。垂直分表是對資料表進行垂直拆分的一種方式,常見是把乙個多欄位的大表按常用字段和非常用字段進行拆分,每個表裡面的資料記錄數一...

垂直拆分和水平拆分

前言 做資料庫分表的時候,總是能看到水平切分 垂直切分,但是並不能理解何為水平 何為垂直。僅此做個記錄。一般情況下說的水平切分 垂直切分,都是指的資料庫層面的。隨著業務量的增加,資料量肯定快速增長,拿mysql來說,單錶資料量在百萬級內讀取效率還是可以的,可是一旦達到千萬級,效能會有較大的降低。如果...

水平拆分和垂直拆分

網際網路時代談論最多的話題就是拆分。拆分一般分為水平拆分和垂直拆分,這並不單指對資料庫或者快取的拆分,主要是表達一種分而治之的思想。水平拆分是指由於單一節點無法滿足需求,需要擴充套件為多個節點,多個節點具有一直的功能,組成乙個服務池,乙個節點服務一部分請求量,所有節點共同處理大規模高併發的請求量。垂...