前言sql
作數據庫分表的時候,老是能看到水平切分、垂直切分,可是並不能理解何爲水平、何爲垂直。僅此作個記錄。數據庫
通常狀況下說的水平切分、垂直切分,都是指的數據庫層面的。服務器
隨着業務量的增長,數據量確定快速增加,拿Mysql來講,單表數據量在百萬級內讀取效率仍是能夠的,但是一旦達到千萬級,性能會有較大的下降。若是是複雜的搜索,那麼組合索引對於內存來講也是一筆很大的開銷。這個時候就須要從數據庫層面來進行優化了。架構
廣泛採用的方式就是數據庫 垂直切分+ 水平切分的方式來進行改進。併發
垂直拆分:原來一個表的信息,拆分到兩個或者多個表中,經過主鍵來進行關聯。(垂直拆分列,列數據拆分到不一樣表中)
垂直切分的優勢分佈式
垂直切分的缺點性能
水平切分:把一個表的數據按照某種規則劃分到不一樣表或數據庫裏。(水平拆分行,行數據拆分到不一樣表中)大數據
水平切分的優勢優化
水平切分的缺點spa
通常狀況下說的水平擴展、垂直擴展,都是指的服務層面的。
當一個開發人員提高計算機系統負荷時,一般會考慮兩種方式垂直擴展和水平擴展。選用哪一種策略主要依賴於要解決的問題 以及系統資源的限制。
在垂直擴展模型中,想要增長系統負荷就意味着要在系統現有的部件上下工夫,即經過提升系統部件的能力來實現。
好比增長機器的內存,提升單機處理能力,拆分功能到不一樣的機器上部署等等。
垂直擴展旨在提升自身效率,但總會遇到自身的瓶頸。
在水平擴展模型中,經過增長更多的系統成員來實現。也就是一般所說的加機器。
當你的大量請求併發的時候,能夠經過分佈式的方式,讓請求均勻的分佈到不一樣的機器上,減少壓力。
簡而言之:
垂直擴展:拆分功能爲小功能,來轉移壓力的發生。
水平擴展:複製相同的表、庫、服務器來共同承擔壓力。