mysql垂直分表好處 水平 垂直拆表的好處

2021-10-17 15:14:28 字數 1806 閱讀 1916

1,水平分表: 一條記錄一條記錄切斷分出來!

2, 垂直分表: 把常用的 ,不常用的,欄位很長的拆出來!

目前很多網際網路系統都存在單錶資料量過大的問題,這就降低了查詢速度,影響了客戶體驗。為了提高查詢速度,我們可以優化sql語句,優化表結構和索引,不過度那些百萬級,千萬級的資料庫表,即便優化過後,查詢速度還是滿足不了要求。這時候我們就可以通過分表降低單次查詢資料量,從而提高查詢速度,一般分表的方式有2種:水平拆分和垂直拆分,倆者各有利弊,適用於不同的情況。

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

通常情況下,我們使用取模的方式來進行表的拆分。比如一張有400萬的使用者表users,為提高其查詢效率我們把其分成4張表user1,user2,user3,user4

通過id 取模的方式把資料分散到四張表內id %4+1=[1,2,3,4];

然後查詢,更新,刪除也是通過取模的方式來查詢。

例:qq的登入表。假設qq的使用者有100億,如果只有一張表,每個使用者登入的時候資料庫都要從這100億中查詢,會很慢很慢。如果將這一張表分成100份,每張表有1億條,就小了很多,比如qq0,qq1,qq1…qq99表。

使用者登入的時候,可以將使用者的id0,那麼會得到0-99的數,查詢表的時候,將表名qq和取模的數連線起來,就構建了表名。比如:123456789使用者,取模的89,那麼就得到qq89表查詢,查詢的時間將會大大縮短。

另外部分業務邏輯也可以通過地區,年份等字段來進行歸檔拆分,進行拆分後的表,只滿足部分查詢的高效查詢需求。這時候就要在產品策劃上,從介面上約束使用者查詢行為,比如,我們是按年來進行歸檔拆分的,這個時候在頁面設計上就約束使用者必須要選擇年,然後才能進行查詢

水平拆分的優點:

表關聯基本能夠在資料庫端全部完成;

不會存在某些超大型資料量和高負載的表遇到瓶頸的問題;

應用程式端整體架構改動相對較少;

事物處理相對簡單

只要切分規則能定義好,基本上較難遇到擴充套件性限制;

水平切分的缺點:

切分規則相對更為複雜,很難抽象出乙個能滿足整個資料庫的切分規則;

後期資料的維護難度有所增加,人為手工定位資料更為困難;

應用系統各模組耦合度較高,可能會對後面資料的遷移拆分造成一定的困難。

垂直拆分

垂直拆分是指表資料列的拆分,把一張列比較多的表拆分成多張表。表的記錄並不多,但是欄位卻很長,表占用空間很大,檢索表的時候需要執行大量的io,嚴重降低了效能。這時候需要把大的字段拆分到另外乙個表,並且該錶與原表是一對一的關係。

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

1,把不常用的字段單獨放在乙個表;

2,把text,blob等大字段拆分出來放在附表中;

3,經常組合查詢的列放在一張表中;

如果我們只想查詢id為8的學生的分數:select 分數 from tt where id = 8;雖然知識查詢分數,但是題目和回答這兩個大字段也是要被掃瞄的,很消耗效能。但是我們只關心分數,並不想查詢題目和回答。這就可以使用垂直分割。我們可以把題目單獨放到一張表中,通過id與tt表建立一對一的關係,同樣將回答單獨放到一張表中。這樣我們插敘tt中的分數的時候就不會掃瞄題目和回答了

垂直切分的優點

資料庫的拆分簡單明瞭,拆分規則明確

應用程式模組清晰明確,整合容易

資料維護方便易行,容易定位

垂直切分的缺點

部分表關聯無法再資料庫級別完成,需要在程式中完成

對於訪問極其頻繁且資料量超大的表仍然存在效能瓶頸,不一定滿足需求;

事務處理相對更為複雜;

切分達到一定程度後。擴充套件性會遇到限制

過度切分可能會帶來系統過度複雜而難以維護;

mysql 水平分表 垂直分表

mysql的分表技術 水平分割技術 以qq使用者登入為例 建立uuid表 create table uuid id int unsigned primary key auto increment 建立3張使用者表 create table qqlogin0 id int unsigned prima...

水平和垂直分表

原文 1,水平分割 例 qq的登入表。假設qq的使用者有100億,如果只有一張表,每個使用者登入的時候資料庫都要從這100億中查詢,會很慢很慢。如果將這一張表分成100份,每張表有1億條,就小了很多,比如qq0,qq1,qq1.qq99表。使用者登入的時候,可以將使用者的id 100,那麼會得到0 ...

垂直分表水平分表

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 分表技術 表的結構不能變 分表技術有 水平分割和垂直分割 當一張越來越大時候,即使新增索引還慢的話,我們可以使用分表 以qq使用者表來具體的說明...