一般情況下說的水平切分、垂直切分,都是指的資料庫層面。
隨著業務量的增加,資料量肯定快速增長,拿mysql來說,單錶資料量在百萬級記憶體讀取效率還是可以的,可以一旦達到千萬級,效能會有較大的降低。如果是複雜的查詢操作,那麼組合索引對於記憶體來說也是一筆很大的開銷。這個時候就需要從資料庫層面來進行優化了。
普遍採用的方式就是資料庫 垂直拆分 + 水平拆分的方式來進行改造。
資料庫的垂直拆分: 對業務表進行分類,不同的業務表劃分到不同的資料庫裡。這種形式的拆分往往是便隨著服務化改造,按功能模組將原來強耦合的系統拆分為多個弱耦合的服務,此時往往就會進行資料庫的垂直拆分。
資料表的垂直拆分: 是針對於資料表列的拆分,把一張列比較多的表拆分為多張表。比如可以將
垂直拆分的優點:
垂直拆分的缺點:
水平拆分:分庫分表,把乙個表的資料按照某種規則化分到不同表或資料庫裡。(水平拆分 是按照行資料拆分)。 拆分規則:取模、年份等。
水平拆分的優點:
水平拆分缺點:
總而言之:
資料表垂直拆分: 單錶複雜度。
資料庫垂直拆分: 功能拆分。
水平拆分:分表:解決單錶大資料量問題。 分庫:為了解決單庫效能問題。
垂直拆分和水平拆分
前言 做資料庫分表的時候,總是能看到水平切分 垂直切分,但是並不能理解何為水平 何為垂直。僅此做個記錄。一般情況下說的水平切分 垂直切分,都是指的資料庫層面的。隨著業務量的增加,資料量肯定快速增長,拿mysql來說,單錶資料量在百萬級內讀取效率還是可以的,可是一旦達到千萬級,效能會有較大的降低。如果...
水平拆分和垂直拆分
網際網路時代談論最多的話題就是拆分。拆分一般分為水平拆分和垂直拆分,這並不單指對資料庫或者快取的拆分,主要是表達一種分而治之的思想。水平拆分是指由於單一節點無法滿足需求,需要擴充套件為多個節點,多個節點具有一直的功能,組成乙個服務池,乙個節點服務一部分請求量,所有節點共同處理大規模高併發的請求量。垂...
Mysql 水平拆分和垂直拆分
1,水平分割 例 qq的登入表。假設qq的使用者有100億,如果只有一張表,每個使用者登入的時候資料庫都要從這100億中查詢,會很慢很慢。如果將這一張表分成100份,每張表有1億條,就小了很多,比如qq0,qq1,qq1.qq99表。使用者登入的時候,可以將使用者的id 100,那麼會得到0 99的...