MySQL垂直切分和水平切分概念和優缺點介紹
資料的切分(Sharding)根據其切分規則的型別,可以分為兩種切分模式。一種是按照不同的表(或者Schema)來切分到不同的資料庫(主機)之上,這種切可以稱之為資料的垂直(縱向)切分;另外一種則是根據表中的資料的邏輯關係,將同一個表中的
資料按照某種條件拆分到多臺資料庫(主機)上面,這種切分稱之為資料的水平(橫向)切分。
垂直切分
一個資料庫由很多表的構成,每個表對應著不同的業務,垂直切分是指按照業務將表進行分類,分佈到不同的資料庫上面,這樣也就將資料或者說壓力分擔到不同的庫上面, 如下圖:
垂直切分的優缺點介紹:
優點:
拆分後業務清晰,拆分規則明確。
系統之間整合或擴充套件容易。
資料維護簡單。
缺點:
部分業務表無法join,只能透過介面方式解決,提高了系統複雜度。
受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件跟效能提高。
事務處理複雜。
由於垂直切分是按照業務的分類將表分散到不同的庫,所以有些業務表會過於龐大,存在單庫讀寫與儲存瓶頸,所以就需要水平
拆分來做解決。
水平切分
相對於垂直拆分,水平拆分不是將表做分類,而是按照某個欄位的某種規則來分散到多個庫之中,每個表中包含一部分資料。簡單來說,我們可以將資料的水平切分理解為是按照資料行的切分,就是將表中的某些行切分到一個資料庫,而另外的某些行又切
分到其他的資料庫中,如下圖:
水平切分的優缺點介紹:
優點:
拆分規則抽象好,join操作基本可以資料庫做。
不存在單庫大資料,高併發的效能瓶頸。
應用端改造較少。
提高了系統的穩定性跟負載能力。
缺點:
拆分規則難以抽象。
分片事務一致性難以解決。
資料多次擴充套件難度跟維護量極大。
跨庫join效能較差。
垂直切分和水平切分共同的特點和缺點有:
引入分散式事務的問題。
跨節點Join的問題。
跨節點合併排序分頁問題。
多資料來源管理問題。
資料按照某種條件拆分到多臺資料庫(主機)上面,這種切分稱之為資料的水平(橫向)切分。
垂直切分
一個資料庫由很多表的構成,每個表對應著不同的業務,垂直切分是指按照業務將表進行分類,分佈到不同的資料庫上面,這樣也就將資料或者說壓力分擔到不同的庫上面, 如下圖:
垂直切分的優缺點介紹:
優點:
拆分後業務清晰,拆分規則明確。
系統之間整合或擴充套件容易。
資料維護簡單。
缺點:
部分業務表無法join,只能透過介面方式解決,提高了系統複雜度。
受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件跟效能提高。
事務處理複雜。
由於垂直切分是按照業務的分類將表分散到不同的庫,所以有些業務表會過於龐大,存在單庫讀寫與儲存瓶頸,所以就需要水平
拆分來做解決。
水平切分
相對於垂直拆分,水平拆分不是將表做分類,而是按照某個欄位的某種規則來分散到多個庫之中,每個表中包含一部分資料。簡單來說,我們可以將資料的水平切分理解為是按照資料行的切分,就是將表中的某些行切分到一個資料庫,而另外的某些行又切
分到其他的資料庫中,如下圖:
水平切分的優缺點介紹:
優點:
拆分規則抽象好,join操作基本可以資料庫做。
不存在單庫大資料,高併發的效能瓶頸。
應用端改造較少。
提高了系統的穩定性跟負載能力。
缺點:
拆分規則難以抽象。
分片事務一致性難以解決。
資料多次擴充套件難度跟維護量極大。
跨庫join效能較差。
垂直切分和水平切分共同的特點和缺點有:
引入分散式事務的問題。
跨節點Join的問題。
跨節點合併排序分頁問題。
多資料來源管理問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2135431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL垂直和水平切分-轉載整理MySql
- MySQL水平切分MySql
- MySQL資料切分策略介紹MySql
- MySQL垂直拆分和水平拆分的優缺點和共同點總結MySql
- 資料庫水平切分方法資料庫
- MySQL NDB Cluster和Galera Cluster的主要特性和優缺點介紹MySql
- MySQL觸發器的使用和優缺點介紹ZGMHMySql觸發器
- 分散式系統「伸縮性」大招之——「水平&垂直切分」詳解分散式
- 三向切分的快速排序和優化排序優化
- XtraBackup備份原理和優缺點介紹
- MySQL InnoDB獨立表空間模式的優點和缺點介紹MySql模式
- MySQL MHA工具的優缺點介紹MySql
- MySQL binlog三種格式的優缺點和修改方法介紹MySql
- MySQL innoDB獨立表空間和共享表空間的優點和缺點介紹MySql
- MySQL MERGE表的優缺點介紹MySql
- Redis和MongoDB優缺點介紹!Python學習RedisMongoDBPython
- TokuDB的優缺點和適用場景介紹
- MySQL GTID複製的優缺點介紹MySql
- GC演算法介紹及工作原理和優缺點GC演算法
- PXC(Percona XtraDB Cluster)特性和優缺點介紹
- mysql和Oracle的特點,優缺點MySqlOracle
- MySQL的binlog的格式及優缺點介紹MySql
- 靜態IP的優缺點介紹
- Ajax,jQuery ajax,axios和fetch介紹、區別以及優缺點jQueryiOS
- MariaDB Codership Galera Cluster的特性和架構優缺點介紹架構
- JAVA切分大檔案Java
- NUMA架構介紹及優缺點分析架構
- 常用的開源網路和資料庫監控工具功能和優缺點介紹資料庫
- DB 分庫分表的基本思想和切分策略
- 關係型資料庫和NOSQL資料庫的優缺點介紹資料庫SQL
- 繼承的優點和缺點繼承
- iframe有哪些優點和缺點?
- 分享6個Java框架及優缺點介紹Java框架
- Vue js用split切分並去掉空值和item的空格VueJS
- shell切分字串到陣列字串陣列
- MySQL分割槽表的分割槽原理和優缺點MySql
- 使用代理通過使用者名稱和密碼驗證優缺點介紹密碼
- Java單例模式:缺點和優點Java單例模式