成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL 要分表分庫怎么進行數據切分?

開發 前端
數據庫分布式核心內容無非就是數據切分(Sharding)以及切分后對數據的定位、整合。

 數據庫分布式核心內容無非就是數據切分(Sharding)以及切分后對數據的定位、整合。數據切分就是將數據分散存儲到多個數據庫中,使得單一數據庫中的數據量變小,通過擴充主機的數量緩解單一數據庫的性能問題,從而達到提升數據庫操作性能的目的。

數據切分根據其切分類型,可以分為兩種方式:垂直(縱向)切分和水平(橫向)切分。

1.垂直(縱向)切分

垂直切分常見有垂直分庫和垂直分表兩種。

1.1 垂直分庫   就是根據業務耦合性,將關聯度低的不同表存儲在不同的數據庫。做法與大系統拆分為多個小系統類似,按業務分類進行獨立劃分。與"微服務治理"的做法相似,每個微服務使用單獨的一個數據庫。如圖:

將不同模塊的數據表分庫存儲。模塊間不相互關聯查詢

1.2 垂直分表   是基于數據庫中的"列"進行,某個表字段較多,可以新建一張擴展表,將不經常用或字段長度較大的字段拆分出去到擴展表中。在字段很多的情況下(例如一個大表有100多個字段),通過"大表拆小表",更便于開發與維護,也能避免跨頁問題,MySQL底層是通過數據頁存儲的,一條記錄占用空間過大會導致跨頁,造成額外的性能開銷。另外數據庫以行為單位將數據加載到內存中,這樣表中字段長度較短且訪問頻率較高,內存能加載更多的數據,命中率更高,減少了磁盤IO,從而提升了數據庫性能。

  • 解決業務系統層面的耦合,業務清晰
  • 與微服務的治理類似,也能對不同業務的數據進行分級管理、維護、監控、擴展等
  • 高并發場景下,垂直切分一定程度的提升IO、數據庫連接數、單機硬件資源的瓶頸

缺點:

  • 部分表無法join,只能通過接口聚合方式解決,提升了開發的復雜度
  • 分布式事務處理復雜
  • 依然存在單表數據量過大的問題(需要水平切分)

2. 水平(橫向)切分

當一個應用難以再細粒度的垂直切分,或切分后數據量行數巨大,存在單庫讀寫、存儲性能瓶頸,這時候就需要進行水平切分了。

水平切分分為庫內分表和分庫分表,是根據表內數據內在的邏輯關系,將同一個表按不同的條件分散到多個數據庫或多個表中,每個表中只包含一部分數據,從而使得單個表的數據量變小,達到分布式的效果。如圖所示:

相對縱向切分這一將表分類的做法,此法是按表內每個字段的某個規則來將數據分散存儲于不同的數據庫(或不同的表),也就是按照數行來進行切分數據。

水平切分的優點:

  • 不存在單庫數據量過大、高并發的性能瓶頸,提升系統穩定性和負載能力
  • 應用端改造較小,不需要拆分業務模塊

缺點:

  • 跨分片的事務一致性難以保證
  • 跨庫的join關聯查詢性能較差
  • 數據多次擴展難度和維護量極大

水平切分后同一張表會出現在多個數據庫/表中,每個庫/表的內容不同。幾種典型的數據分片規則為:

2.1 根據數值范圍

按照時間區間或ID區間來切分。例如:按日期將不同月甚至是日的數據分散到不同的庫中;將userId為1~9999的記錄分到第一個庫,10000~20000的分到第二個庫,以此類推。某種意義上,某些系統中使用的"冷熱數據分離",將一些使用較少的歷史數據遷移到其他庫中,業務功能上只提供熱點數據的查詢,也是類似的實踐。

這樣的優點在于:

  • 單表大小可控
  • 天然便于水平擴展,后期如果想對整個分片集群擴容時,只需要添加節點即可,無需對其他分片的數據進行遷移
  • 使用分片字段進行范圍查找時,連續分片可快速定位分片進行快速查詢,有效避免跨分片查詢的問題。

缺點:

  • 熱點數據成為性能瓶頸。連續分片可能存在數據熱點,例如按時間字段分片,有些分片存儲最近時間段內的數據,可能會被頻繁的讀寫,而有些分片存儲的歷史數據,則很少被查詢

2.2 根據數值取模

一般采用hash取模mod的切分方式,例如:將 Customer 表根據 cusno 字段切分到4個庫中,余數為0的放到第一個庫,余數為1的放到第二個庫,以此類推。這樣同一個用戶的數據會分散到同一個庫中,如果查詢條件帶有cusno字段,則可明確定位到相應庫去查詢。

優點:

  • 數據分片相對比較均勻,不容易出現熱點和并發訪問的瓶頸

缺點:

  • 后期分片集群擴容時,需要遷移舊的數據(使用一致性hash算法能較好的避免這個問題)
  • 容易面臨跨分片查詢的復雜問題。比如上例中,如果頻繁用到的查詢條件中不帶cusno時,將會導致無法定位數據庫,從而需要同時向4個庫發起查詢,再在內存中合并數據,取最小集返回給應用,分庫反而成為拖累

 

 

責任編輯:張燕妮 來源: 開源博客
相關推薦

2021-07-28 15:44:52

Java開發數據庫

2022-01-07 14:00:35

分庫分表業務量

2021-01-26 05:37:08

分庫分表內存

2017-07-17 14:45:43

數據庫DB分庫切分策略

2019-09-09 08:28:48

互聯網數據磁盤

2021-10-27 20:54:24

分庫分表高并發

2020-11-18 09:39:02

MySQL數據庫SQL

2022-09-26 08:28:22

分庫分表數據

2020-07-30 17:59:34

分庫分表SQL數據庫

2021-09-06 07:58:48

分庫數據庫分表

2019-07-31 09:27:23

數據庫MySQLSQL

2022-12-27 19:07:52

2018-09-21 15:50:58

數據庫MySQL分庫分表

2019-11-12 09:54:20

分庫分表數據

2019-01-16 14:00:54

數據庫分庫分表

2024-08-02 15:47:28

數據庫分庫分表

2019-08-16 10:19:01

NewSQL數據庫分庫分表

2019-05-13 15:00:14

MySQLMyCat數據庫

2021-08-31 20:21:11

VitessMySQL分庫

2019-03-06 14:42:01

數據庫分庫分表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人精品在线 | 日韩中文字幕 | 久久丁香 | 国产精品a久久久久 | 久久一区二区视频 | 免费观看黄 | 精品欧美| 久久精品欧美一区二区三区不卡 | 国产成人精品久久二区二区91 | 在线免费观看成人 | 成人在线视频网站 | 成人做爰www免费看视频网站 | 熟女毛片| 国产www成人 | 亚洲第一网站 | 久久99久久99 | av无遮挡 | 久久久久久高潮国产精品视 | 中文字幕人成乱码在线观看 | 午夜三级在线观看 | 亚洲综合二区 | 狠狠色综合久久婷婷 | 国产视频一二三区 | 亚洲成人免费观看 | 日韩在线不卡视频 | 国产精品久久99 | 青青草亚洲 | 成人性生交大片免费看r链接 | 丝袜 亚洲 欧美 日韩 综合 | 国产精品国产三级国产a | 久久综合一区 | 国产精品久久久久久久久免费高清 | 国产区久久 | 国产精品久久久久久久三级 | 色综合成人网 | 久久精品无码一区二区三区 | 看a网站| 成人精品一区亚洲午夜久久久 | 欧美日韩一区不卡 | 毛片免费看 | 亚洲免费在线观看视频 |