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

MySQL 要分表分庫(kù)怎么進(jìn)行數(shù)據(jù)切分?

開發(fā) 前端
數(shù)據(jù)庫(kù)分布式核心內(nèi)容無(wú)非就是數(shù)據(jù)切分(Sharding)以及切分后對(duì)數(shù)據(jù)的定位、整合。

 數(shù)據(jù)庫(kù)分布式核心內(nèi)容無(wú)非就是數(shù)據(jù)切分(Sharding)以及切分后對(duì)數(shù)據(jù)的定位、整合。數(shù)據(jù)切分就是將數(shù)據(jù)分散存儲(chǔ)到多個(gè)數(shù)據(jù)庫(kù)中,使得單一數(shù)據(jù)庫(kù)中的數(shù)據(jù)量變小,通過(guò)擴(kuò)充主機(jī)的數(shù)量緩解單一數(shù)據(jù)庫(kù)的性能問(wèn)題,從而達(dá)到提升數(shù)據(jù)庫(kù)操作性能的目的。

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

1.垂直(縱向)切分

垂直切分常見有垂直分庫(kù)和垂直分表兩種。

1.1 垂直分庫(kù)   就是根據(jù)業(yè)務(wù)耦合性,將關(guān)聯(lián)度低的不同表存儲(chǔ)在不同的數(shù)據(jù)庫(kù)。做法與大系統(tǒng)拆分為多個(gè)小系統(tǒng)類似,按業(yè)務(wù)分類進(jìn)行獨(dú)立劃分。與"微服務(wù)治理"的做法相似,每個(gè)微服務(wù)使用單獨(dú)的一個(gè)數(shù)據(jù)庫(kù)。如圖:

將不同模塊的數(shù)據(jù)表分庫(kù)存儲(chǔ)。模塊間不相互關(guān)聯(lián)查詢

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

  • 解決業(yè)務(wù)系統(tǒng)層面的耦合,業(yè)務(wù)清晰
  • 與微服務(wù)的治理類似,也能對(duì)不同業(yè)務(wù)的數(shù)據(jù)進(jìn)行分級(jí)管理、維護(hù)、監(jiān)控、擴(kuò)展等
  • 高并發(fā)場(chǎng)景下,垂直切分一定程度的提升IO、數(shù)據(jù)庫(kù)連接數(shù)、單機(jī)硬件資源的瓶頸

缺點(diǎn):

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

2. 水平(橫向)切分

當(dāng)一個(gè)應(yīng)用難以再細(xì)粒度的垂直切分,或切分后數(shù)據(jù)量行數(shù)巨大,存在單庫(kù)讀寫、存儲(chǔ)性能瓶頸,這時(shí)候就需要進(jìn)行水平切分了。

水平切分分為庫(kù)內(nèi)分表和分庫(kù)分表,是根據(jù)表內(nèi)數(shù)據(jù)內(nèi)在的邏輯關(guān)系,將同一個(gè)表按不同的條件分散到多個(gè)數(shù)據(jù)庫(kù)或多個(gè)表中,每個(gè)表中只包含一部分?jǐn)?shù)據(jù),從而使得單個(gè)表的數(shù)據(jù)量變小,達(dá)到分布式的效果。如圖所示:

相對(duì)縱向切分這一將表分類的做法,此法是按表內(nèi)每個(gè)字段的某個(gè)規(guī)則來(lái)將數(shù)據(jù)分散存儲(chǔ)于不同的數(shù)據(jù)庫(kù)(或不同的表),也就是按照數(shù)行來(lái)進(jìn)行切分?jǐn)?shù)據(jù)。

水平切分的優(yōu)點(diǎn):

  • 不存在單庫(kù)數(shù)據(jù)量過(guò)大、高并發(fā)的性能瓶頸,提升系統(tǒng)穩(wěn)定性和負(fù)載能力
  • 應(yīng)用端改造較小,不需要拆分業(yè)務(wù)模塊

缺點(diǎn):

  • 跨分片的事務(wù)一致性難以保證
  • 跨庫(kù)的join關(guān)聯(lián)查詢性能較差
  • 數(shù)據(jù)多次擴(kuò)展難度和維護(hù)量極大

水平切分后同一張表會(huì)出現(xiàn)在多個(gè)數(shù)據(jù)庫(kù)/表中,每個(gè)庫(kù)/表的內(nèi)容不同。幾種典型的數(shù)據(jù)分片規(guī)則為:

2.1 根據(jù)數(shù)值范圍

按照時(shí)間區(qū)間或ID區(qū)間來(lái)切分。例如:按日期將不同月甚至是日的數(shù)據(jù)分散到不同的庫(kù)中;將userId為1~9999的記錄分到第一個(gè)庫(kù),10000~20000的分到第二個(gè)庫(kù),以此類推。某種意義上,某些系統(tǒng)中使用的"冷熱數(shù)據(jù)分離",將一些使用較少的歷史數(shù)據(jù)遷移到其他庫(kù)中,業(yè)務(wù)功能上只提供熱點(diǎn)數(shù)據(jù)的查詢,也是類似的實(shí)踐。

這樣的優(yōu)點(diǎn)在于:

  • 單表大小可控
  • 天然便于水平擴(kuò)展,后期如果想對(duì)整個(gè)分片集群擴(kuò)容時(shí),只需要添加節(jié)點(diǎn)即可,無(wú)需對(duì)其他分片的數(shù)據(jù)進(jìn)行遷移
  • 使用分片字段進(jìn)行范圍查找時(shí),連續(xù)分片可快速定位分片進(jìn)行快速查詢,有效避免跨分片查詢的問(wèn)題。

缺點(diǎn):

  • 熱點(diǎn)數(shù)據(jù)成為性能瓶頸。連續(xù)分片可能存在數(shù)據(jù)熱點(diǎn),例如按時(shí)間字段分片,有些分片存儲(chǔ)最近時(shí)間段內(nèi)的數(shù)據(jù),可能會(huì)被頻繁的讀寫,而有些分片存儲(chǔ)的歷史數(shù)據(jù),則很少被查詢

2.2 根據(jù)數(shù)值取模

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

優(yōu)點(diǎn):

  • 數(shù)據(jù)分片相對(duì)比較均勻,不容易出現(xiàn)熱點(diǎn)和并發(fā)訪問(wèn)的瓶頸

缺點(diǎn):

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

 

 

責(zé)任編輯:張燕妮 來(lái)源: 開源博客
相關(guān)推薦

2021-07-28 15:44:52

Java開發(fā)數(shù)據(jù)庫(kù)

2022-01-07 14:00:35

分庫(kù)分表業(yè)務(wù)量

2021-01-26 05:37:08

分庫(kù)分表內(nèi)存

2017-07-17 14:45:43

數(shù)據(jù)庫(kù)DB分庫(kù)切分策略

2019-09-09 08:28:48

互聯(lián)網(wǎng)數(shù)據(jù)磁盤

2021-10-27 20:54:24

分庫(kù)分表高并發(fā)

2020-11-18 09:39:02

MySQL數(shù)據(jù)庫(kù)SQL

2022-09-26 08:28:22

分庫(kù)分表數(shù)據(jù)

2020-07-30 17:59:34

分庫(kù)分表SQL數(shù)據(jù)庫(kù)

2021-09-06 07:58:48

分庫(kù)數(shù)據(jù)庫(kù)分表

2019-07-31 09:27:23

數(shù)據(jù)庫(kù)MySQLSQL

2019-11-12 09:54:20

分庫(kù)分表數(shù)據(jù)

2022-12-27 19:07:52

2018-09-21 15:50:58

數(shù)據(jù)庫(kù)MySQL分庫(kù)分表

2019-01-16 14:00:54

數(shù)據(jù)庫(kù)分庫(kù)分表

2024-08-02 15:47:28

數(shù)據(jù)庫(kù)分庫(kù)分表

2019-08-16 10:19:01

NewSQL數(shù)據(jù)庫(kù)分庫(kù)分表

2019-05-13 15:00:14

MySQLMyCat數(shù)據(jù)庫(kù)

2019-03-06 14:42:01

數(shù)據(jù)庫(kù)分庫(kù)分表

2021-04-01 05:40:53

分庫(kù)分表數(shù)據(jù)庫(kù)MySQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一道本不卡视频 | 久久久91 | 欧美成人一区二区 | 日韩美女在线看免费观看 | 欧美激情在线观看一区二区三区 | 日韩成人中文字幕 | 亚洲精品99999 | 免费特级黄毛片 | 欧美国产中文 | 九九福利 | 日日艹夜夜艹 | 欧美精品在线观看 | 91爱爱·com| 超碰成人在线观看 | 一区二区三区日韩精品 | 日本中文字幕一区 | 成人精品一区二区三区四区 | 一区二区三区视频免费看 | 日本久久黄色 | 久久国产免费 | 国产高清视频在线观看播放 | 成人免费视频久久 | 国产精品成人一区二区三区夜夜夜 | 天天草天天爱 | 在线啊v | 看亚洲a级一级毛片 | 亚洲不卡在线视频 | 538在线精品 | 日本亚洲欧美 | 在线播放国产一区二区三区 | 性一交一乱一透一a级 | 久久久国| 国产黑丝在线 | 亚洲午夜精品一区二区三区 | 中文字幕国产第一页 | 日本精品久久久久 | 亚洲在线免费观看 | 国产乱码高清区二区三区在线 | 免费av直接看 | 亚洲电影一区 | 涩色视频在线观看 |