Mysql中數據切分的不同形式 數據的切分(Sharding)根據其切分規則的類型,可以分為兩種切分模式。一種是按照不同的表(或者Schema)來切分到不同的數據庫(主機)之上,這種切可以稱之為數據的 垂直(縱向)切分;另外一種則是根據表中的數據的邏輯關系,將同一個表中的數據按照某種條件拆分到多台數據庫(主機)上面,這種切分稱之為數據的水平(橫向)切分; 垂直切分的優點 1.數據庫的拆分簡單明了,拆分規則明確; 2.應用程序模塊清晰明確,整合容易; 3.數據維護方便易行,容易定位; 垂直切分的缺點 1.部分表關聯無法在數據庫級別完成,需要在程序中完成; 2.對於訪問極其頻繁且數據量超大的表仍然存在性能平靜,不一定能滿足要求; 3.事務處理相對更為復雜; 4.切分達到一定程度之後,擴展性會遇到限制; 5.過讀切分可能會帶來系統過渡復雜而難以維護; 簡單的水平切分主要是將某個訪問極其平凡的表再按照某個字段的某種規則來分散到多個表之中,每個表中包含一部分數據。 水平切分的優點 1.表關聯基本能夠在數據庫端全部完成; 2.不會存在某些超大型數據量和高負載的表遇到瓶頸的問題; 3.應用程序端整體架構改動相對較少; 4.事務處理相對簡單; 5.只要切分規則能夠定義好,基本上較難遇到擴展性限制; 水平切分的缺點 1.切分規則相對更為復雜,很難抽象出一個能夠滿足整個數據庫的切分規則; 2.後期數據的維護難度有所增加,人為手工定位數據更困難; 3.應用系統各模塊耦合度較高,可能會對後面數據的遷移拆分造成一定的困難。