ShardingJdbc分庫分表-淺談分表原理

文章目錄

  • 為什么要分庫分表
  • 一、分庫分表
  • 二、不停機分庫分表數據遷移


為什么要分庫分表

一般的機器(4核16G),單庫的MySQL并發(QPS+TPS)超過了2k,系統基本就完蛋了。最好是并發量控制在1k左右。這里就引出一個問題,為什么要分庫分表?

分庫分表目的:解決高并發,和數據量大的問題。

  • 高并發情況下,會造成IO讀寫頻繁,自然就會造成讀寫緩慢,甚至是宕機。一般單庫不要超過2k并發
  • 數據量大的問題。主要由于底層索引實現導致,MySQL的索引實現為B+TREE,數據量其他,會導致索引樹十分龐大,造成查詢緩慢。第二,innodb的最大存儲限制64TB

要解決上述問題。最常見做法,就是分庫分表。 分庫分表的目的,是將一個表拆成N個表,就是讓每個表的數據量控制在一定范圍內,保證SQL的性能。 一個表數據建議不要超過500W。

在這里插入圖片描述


一、分庫分表

垂直拆分

就是把一個有很多字段的表給拆分成多個表,或者是多個庫上去。每個庫表的結構都不一樣,每個庫表都包含部分字段。一般來說,可以根據業務維度進行拆分,如訂單表可以拆分為訂單、訂單地址、訂單商品、訂單擴展等表,又比如做低代碼平臺的時候,各種表單需要保存。可以把表單內容拆分為一個大字斷表;也可以,根據數據冷熱程度拆分,20%的熱點字段拆到一個表,80%的冷字段拆到另外一個表,但都要建立1:1或者1:N的關系。
在這里插入圖片描述

水平分表

統一個表的數據拆到不同的庫不同的表中。可以根據時間、地區、或某個業務鍵維度,也可以通過hash進行拆分,最后通過路由訪問到具體的數據。拆分后的每個表結構保持一致。

二、不停機分庫分表數據遷移

一般數據庫的拆分也是有一個過程的,一開始是單表,后面慢慢拆成多表。那么我們就看下如何平滑的從MySQL單表過度到MySQL的分庫分表架構。

  1. 利用mysql+canal做增量數據同步,利用分庫分表中間件,將數據路由到對應的新表中
  2. 利用分庫分表中間件,全量數據導入到對應的新表中
  3. 通過單表數據和分庫分表數據兩兩比較,更新不匹配的數據到新表中
  4. 數據穩定后,將單表的配置切換到分庫分表配置上

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719240.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matplotlib從起點出發(14)_Tutorial_imshow_origin_extent

0 總述 imshow()允許你將圖像(將進行顏色映射——基于norm和cmap——的2D數組或將按原樣使用的3D RGB(A)的數組)渲染到數據空間中的矩形區域。最終渲染中圖像的方向由原點和范圍關鍵字參數(以及生成的AxesImage實例上的屬性)和Ax…

一.數據分析簡介

目錄 一、了解數據分析 1.1 什么是數據分析 1.2 數據分析的重要性 1.3 數據分析的基本流程 數據獲取 數據處理 1.4 數據分析的應用場景 客戶分析 營銷分析 二、數據分析工具 jupyter 2.1 編輯器安裝 2.2 Jupyter快捷使用 一、了解數據分析 學習數據分析&#xff0…

[激光原理與應用-75]:激光器設計過程中,功率下降的主要原因大全

目錄 前言:激光器的本質是“電”轉“光”的設備 一、激光器功率下降的原因 二、壽命到期導致功率下降的因素 三、光損耗導致激光器輸出功率下降的因素 四、激光器中的能量轉化不完全導致的功率下降的因素 五、溫度變化導致激光器功率下降的影響因素 六、材料…

LeetCode28 最后一個單詞的長度

題目 給你一個字符串 s,由若干單詞組成,單詞前后用一些空格字符隔開。返回字符串中 最后一個 單詞的長度。單詞 是指僅由字母組成、不包含任何空格字符的最大子字符串。 示例 示例 1:輸入:s "Hello World" 輸出&#x…

Spring Security Oauth資源服務器并發情況下獲取用戶信息錯亂

文章目錄 Oauth2 資源服務器并發情況下獲取用戶信息錯亂問題描述項目配置源碼分析 解決方案1、修改源碼2,添加新的子類實現,并作為新bean注入 Oauth2 資源服務器并發情況下獲取用戶信息錯亂 問題描述 當用戶A與用戶B分別持有一個合法的令牌token 訪問同…

FPGA之加法邏輯運算

由于FPGA需要被反復燒寫,它實現組合邏輯的基本結構不可能像ASIC 那樣通過固定的與非門來完成,而只能采用一種易于反復配置的結構。查找表可以很好地滿足這一要求,目前主流FPGA都采用了基于SRAM 工藝的查找表結構。LUT本質上就是一個RAM。它把…

HarmonyOS-卡片頁面能力說明和使用動效能力

卡片頁面能力說明 開發者可以使用聲明式范式開發ArkTS卡片頁面。如下卡片頁面由DevEco Studio模板自動生成,開發者可以根據自身的業務場景進行調整。 ArkTS卡片具備JS卡片的全量能力,并且新增了動效能力和自定義繪制的能力,支持聲明式范式的…

python | 列表,元組,字符串,集合,字典

列表: 可以容納任意數目不同類型的元素(支持我們學過的任意數據類型)元素之間有先后順序用中括號包裹,每個元素用逗號隔開 例如: students [林黛玉,薛寶釵,賈元春,賈探春,史湘云,妙玉,賈迎春,賈惜春,王熙鳳,賈巧姐…

匯編語言程序設計實驗三 數據串傳送和查表程序

實驗目的和要求 1、堆棧。堆棧指示器SP和堆棧操作指令PUSH。POP。 2、段寄存器和物理地址計算。 3、查表法和查表指令XLAT。 4、數據串傳送程序和數據串傳送指令MOVS。STOS及重復前輟REP。 5、循環指令ROL。邏輯與指令AND和清方向位指令CLD。 6、偽操作指令DB。 實驗環境…

五步法搞定 BI 業務需求梳理

五步法搞定 BI 業務需求梳理。高手就是把復雜的事情簡單化,簡單的東西重復做、認真做。 01 五步法是哪五步 第一、明確用戶 五步法搞定 BI 業務需求梳理。高手就是把復雜的事情簡單化,簡單的東西重復做、認真做。 第二、明確指標 在明確需求用戶的前…

LeetCode 2125.銀行中的激光束數量

銀行內部的防盜安全裝置已經激活。給你一個下標從 0 開始的二進制字符串數組 bank ,表示銀行的平面圖,這是一個大小為 m x n 的二維矩陣。 bank[i] 表示第 i 行的設備分布,由若干 ‘0’ 和若干 ‘1’ 組成。‘0’ 表示單元格是空的&#xff0…

NERF論文筆記

NeRF:Representing Scene as Neural Radiance Fields for View Synthesis 筆記 摘要 實現了一個任意視角視圖生成算法:輸入稀疏的場景圖像,通過優化連續的Volumetric場景函數實現;用全連接深度網絡表達場景,輸入是一個連續的5維…

Unity(第二十部)效果 粒子、線條和拖尾

1、粒子系統 粒子系統介紹 Unity 粒子系統是 Unity 引擎中用于創建和控制粒子效果的工具。它可以模擬各種自然現象,如火焰、煙霧、雨滴等,也可以用于創建特效,如魔法光芒、爆炸效果等。 粒子系統組成 在 Unity 中,粒子系統由發射…

用 Dockerfile為鏡像添加SSH服務

1、基礎鏡像ubuntu:18.04 2、替換為國內的安裝源 3、安裝openssh-server 4、允許root用戶遠程登陸 5、暴露端口22 6、服務開機自啟動 1.創建目錄 [rootopenEuler-node1 db]# mkdir sshd_ubuntu 2.創建 Dockerfile、 run.sh 、authorized_keys、vim aliyun.list 文件 [rootop…

網盤拉新如何對接?盤點最靠譜的一手渠道平臺

2024網盤行業再次重燃戰火。字節旗下產品頭條搜索極速版APP、悟空瀏覽器APP推出對應的網盤功能,剛剛開放了拉新推廣,現在是一個不能錯過新項目的好時機。 如果你對網盤拉新推廣充滿熱情,千萬不要錯過星子助推聯合字節推出的網盤項目機會。小…

python自動化之如何利用allure生成測試報告

Allure測試報告框架幫助你輕松實現”高大上”報告展示。本文通過示例演示如何從0到1集成Allure測試框架。重點展示了如何將Allure集成到已有的自動化測試工程中、以及如何實現報表的優化展示。Allure非常強大,支持多種語言多種測試框架,無論是Java/Pytho…

成功的交易沒有對錯,只有邏輯

大部分人將交易失敗歸咎于心態,但其實我們是否認真思考過自己的基本功是否扎實呢?這篇文章將引導你換個角度看待交易,讓你明白自己應該努力的方向。 曾經,你或許認為資金體量小、信息不對稱、技術不過關、心態不過硬是阻礙交易發展…

TikTok外貿系統的核心功能及其源代碼分享!

隨著全球化的不斷推進,外貿業務成為越來越多企業的增長動力,TikTok作為一個全球性的社交媒體平臺,其用戶基數龐大、活躍度高,為外貿業務提供了無限的商機。 為了幫助企業在TikTok上更好地開展外貿業務,TikTok外貿系統…

【DDD】學習筆記-聚合和聚合根:怎樣設計聚合?

今天我們來學習聚合(Aggregate)和聚合根(AggregateRoot)。 我們先回顧下上一講,在事件風暴中,我們會根據一些業務操作和行為找出實體(Entity)或值對象(ValueObject&…

47、WEB攻防——通用漏洞Java反序列化EXP生成數據提取組件安全

文章目錄 序列化和反序列化的概念: 序列化:把java對象轉換成字節流的過程;反序列化:把字節流恢復為java對象的過程。 對象的序列化主要有兩種用途: 把對象的字節流永久的保存在硬盤上,通常存放在一個文件…