亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > MySQL分庫(kù)分表與分區(qū)的入門指南

MySQL分庫(kù)分表與分區(qū)的入門指南

熱門標(biāo)簽:大豐地圖標(biāo)注app 南太平洋地圖標(biāo)注 400電話辦理服務(wù)價(jià)格最實(shí)惠 催天下外呼系統(tǒng) 武漢電銷機(jī)器人電話 400電話變更申請(qǐng) 呂梁外呼系統(tǒng) 北京金倫外呼系統(tǒng) html地圖標(biāo)注并導(dǎo)航

前言

關(guān)系型數(shù)據(jù)庫(kù)比較容易成為系統(tǒng)瓶頸,單機(jī)存儲(chǔ)容量、連接數(shù)、處理能力都有限,當(dāng)數(shù)據(jù)量和并發(fā)量起來(lái)之后,就必須對(duì)數(shù)據(jù)庫(kù)進(jìn)行切分了。

數(shù)據(jù)切分(sharding)的手段就是分庫(kù)分表。分庫(kù)分表有兩方面,可能是光分庫(kù)不分表,也可能是光分表不分庫(kù)。

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

為什么要分庫(kù)分表

分表

單表數(shù)據(jù)量太大時(shí),會(huì)嚴(yán)重影響sql執(zhí)行的性能。一般單表到達(dá)幾百萬(wàn)的時(shí)候,性能就會(huì)相對(duì)差一些了,這時(shí)就得分表了。

分表就是把一個(gè)表的數(shù)據(jù)放到多個(gè)表中,然后查詢的時(shí)候就查一個(gè)表。比如按照項(xiàng)目id來(lái)分表:將固定數(shù)量的項(xiàng)目數(shù)據(jù)放在一個(gè)表中,這樣就可以控制每個(gè)表的數(shù)據(jù)量在可控的范圍內(nèi)。

分庫(kù)

根據(jù)經(jīng)驗(yàn)來(lái)講,一個(gè)庫(kù)最多支持到并發(fā)2000時(shí)就需要擴(kuò)容了,而且一個(gè)健康的單庫(kù)并發(fā)值最好保持在1000左右。那么你可以將一個(gè)庫(kù)的數(shù)據(jù)拆分到多個(gè)庫(kù)中,訪問的時(shí)候就訪問一個(gè)庫(kù)好了。

這就是所謂的分庫(kù)分表,為啥要分庫(kù)分表?

  • 提高并發(fā)支撐能力
  • 降低磁盤使用率
  • 提高SQL執(zhí)行性能

如何分庫(kù)分表

直接看圖:

對(duì)于垂直拆分,建議最好在系統(tǒng)設(shè)計(jì)之初做好表設(shè)計(jì),避免垂直分表。

水平拆分可以按照range來(lái)分,或是按照某個(gè)字段hash。按照range來(lái)分,好處在于擴(kuò)容簡(jiǎn)單,準(zhǔn)備好新的表或庫(kù)就可以了。但是容易產(chǎn)生熱點(diǎn)問題,實(shí)際使用時(shí)要結(jié)合業(yè)務(wù)場(chǎng)景來(lái)看。按照hash來(lái)分,好處在于可以平均分配每個(gè)庫(kù)或表的請(qǐng)求壓力,缺點(diǎn)是擴(kuò)容麻煩,之前的數(shù)據(jù)要rehash,存在一個(gè)數(shù)據(jù)遷移的過程。

分庫(kù)分表帶來(lái)的問題

分庫(kù)分表能有效地緩解單機(jī)和單庫(kù)帶來(lái)的網(wǎng)絡(luò)IO、硬件資源、連接數(shù)的壓力。但也帶來(lái)了一些問題。

  • 事務(wù)一致性問題
    通過分布式事務(wù)或者保證最終一致性來(lái)解決。
  • 跨節(jié)點(diǎn)關(guān)聯(lián)查詢join問題
    全局表、字段冗余、數(shù)據(jù)組裝、ER分片
  • 跨節(jié)點(diǎn)分頁(yè)、排序、聚集函數(shù)問題
    首先在不同分片節(jié)點(diǎn)進(jìn)行查詢,最后要對(duì)結(jié)果進(jìn)行匯總或歸并
  • 全局主鍵避重問題
    各種分布式ID生成算法
  • 數(shù)據(jù)遷移、擴(kuò)容問題
    如果是range分片,只需要添加節(jié)點(diǎn)就可以進(jìn)行擴(kuò)容了。
    如果是hash,一般做法是先讀出歷史數(shù)據(jù),然后按指定的分片規(guī)則再將數(shù)據(jù)寫入到各個(gè)分片節(jié)點(diǎn)中。

數(shù)據(jù)遷移

數(shù)據(jù)遷移介紹兩種方案。

一個(gè)最low的方案,就是系統(tǒng)停機(jī)一段時(shí)間,用實(shí)現(xiàn)寫好的導(dǎo)數(shù)據(jù)的工具跑一遍把單獨(dú)單表的數(shù)據(jù)獨(dú)出來(lái),寫到分庫(kù)分表里面去。

第二個(gè)方案聽起來(lái)就比較靠譜了,雙寫遷移方案。在線上系統(tǒng)里,之前所有寫數(shù)據(jù)的地方,增刪改操作,除了對(duì)舊庫(kù)增刪改,再加上對(duì)新庫(kù)的增刪改,這就是所謂的雙寫。然后系統(tǒng)部署之后,把方案一里的導(dǎo)數(shù)據(jù)工具跑起來(lái),讀老庫(kù)寫新庫(kù)。寫的時(shí)候要根據(jù)gmt_modified這類字段判斷這條數(shù)據(jù)最后修改的時(shí)間,除非是讀出來(lái)新庫(kù)沒有,或是比新庫(kù)數(shù)據(jù)新才會(huì)寫。簡(jiǎn)單來(lái)說就是不允許用老數(shù)據(jù)覆蓋新數(shù)據(jù)。

寫完一輪之后,有可能還是存在不一致,那么就程序自動(dòng)新一輪校驗(yàn),對(duì)比新老庫(kù)每個(gè)表的每條數(shù)據(jù),接著如果有不一樣的,就針對(duì)那些不一樣的,從老庫(kù)讀數(shù)據(jù)再次寫。反復(fù)循環(huán)直到數(shù)據(jù)完全一致。

中間件

分庫(kù)分表的中間件比較常見的有:

  • Cobar:阿里b2b團(tuán)隊(duì)開發(fā)和開源的,屬于proxy層方案,介于應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間。應(yīng)用程序通過JDBC驅(qū)動(dòng)訪問Cobar集群,Cobar根據(jù)SQL和分庫(kù)規(guī)則對(duì)SQL做分解,然后分發(fā)到MySQL集群不同的數(shù)據(jù)庫(kù)實(shí)例上執(zhí)行。不支持讀寫分離、存儲(chǔ)過程、跨庫(kù)join和分頁(yè)等操作。最近幾年都沒更新了,也沒啥人用了。
  • TDDL:淘寶團(tuán)隊(duì)開發(fā)的,屬于client層方案。支持基本的crud語(yǔ)法和讀寫分離,但不支持join、多表查詢等語(yǔ)法。目前只用也不多,因?yàn)檫€依賴淘寶的diamond配置管理系統(tǒng)。
  • Atlas:360開源的,屬于proxy層方案。也是好幾年沒維護(hù),現(xiàn)在用的公司基本也很少了。
  • Sharding-jdbc:當(dāng)當(dāng)開源的,屬于client層方案,目前已更名為ShardingSphere。SQL語(yǔ)法支持的也比較多,沒有太多限制,支持分庫(kù)分表、讀寫分離、分布式id生成、柔性事務(wù)(最大努力送達(dá)型事務(wù)、TCC事務(wù))。而且使用的公司比較多,社區(qū)活躍。
  • Mycat:基于Cobar改造,屬于proxy層方案。支持的功能非常完善。相比Sharding-jdbc來(lái)說,年輕一些。

綜上,現(xiàn)在可以考慮使用的就是Sharding-jdbc和Mycat。

Sharding-jdbc這種client層方案的有點(diǎn)在于不用部署,運(yùn)維成本低,不需要代理層的二次轉(zhuǎn)發(fā),性能高。缺點(diǎn)是有耦合性。
Mycat這種proxy層方案的缺點(diǎn)在于需要部署,自己運(yùn)維一套中間件,運(yùn)維成本高,但是好處在于對(duì)項(xiàng)目是透明的。

MySQL分區(qū)(不建議使用)

這里介紹分區(qū)主要是防止和切分、分庫(kù)分表等概念混淆。
MySQL從5.1版本開始支持分區(qū)(partition)的功能。分區(qū)指根據(jù)一定的規(guī)則,數(shù)據(jù)庫(kù)把一個(gè)表分解成多個(gè)更小的、更容易管理的部分。就訪問數(shù)據(jù)庫(kù)的應(yīng)用而言,邏輯上只有一個(gè)表或一個(gè)索引,但是實(shí)際上這個(gè)表可能由多個(gè)物理分區(qū)組成,即對(duì)應(yīng)用是透明的。
MySQL分區(qū)引入了分區(qū)鍵的概念,采取分治法,有利于管理非常大的表。分區(qū)鍵用于根據(jù)某個(gè)區(qū)間值、特定值列表或HASH函數(shù)執(zhí)行數(shù)據(jù)的聚集,讓數(shù)據(jù)根據(jù)規(guī)則分布在不同的分區(qū)中。MySQL 5.7中可用的分區(qū)類型主要有以下6種:

  • RANGE分區(qū):基于一個(gè)給定連續(xù)區(qū)間范圍,把數(shù)據(jù)分配到不同的分區(qū)。
  • LIST分區(qū):類似RANGE分區(qū),區(qū)別在LIST分區(qū)是基于枚舉出的值列表分區(qū),RANGE是基于給定的連續(xù)區(qū)間范圍分區(qū)。
  • COLUMNS分區(qū):類似于RANGE和LIST,區(qū)別在于分區(qū)鍵既可以是多列,又可以是非整數(shù)。
  • HASH分區(qū):基于給定的分區(qū)個(gè)數(shù),把數(shù)據(jù)取模分配到不同的分區(qū)。
  • KEY分區(qū):類似于HASH分區(qū),但使用MySQL提供的哈希函數(shù)。
  • 子分區(qū):也叫做復(fù)合分區(qū)或者組合分區(qū),即在主分區(qū)下再做一層分區(qū),將數(shù)據(jù)再次分割。

這里舉一LIST分區(qū)的例子:

CREATE TABLE orders_list (
  id INT AUTO_INCREMENT,
  customer_surname VARCHAR(30),
  store_id INT,
  salesperson_id INT,
  order_date DATE,
  note VARCHAR(500),
  INDEX idx (id)
) ENGINE = INNODB
  PARTITION BY LIST(store_id) (
  PARTITION p1
  VALUES IN (1, 3, 4, 17)
  INDEX DIRECTORY = '/var/orders/district1'
  DATA DIRECTORY = '/var/orders/district1',
  PARTITION p2
  VALUES IN (2, 12, 14)
  INDEX DIRECTORY = '/var/orders/district2'
  DATA DIRECTORY = '/var/orders/district2',
  PARTITION p3
  VALUES IN (6, 8, 20)
  INDEX DIRECTORY = '/var/orders/district3'
  DATA DIRECTORY = '/var/orders/district3',
  PARTITION p4
  VALUES IN (5, 7, 9, 11, 16)
  INDEX DIRECTORY = '/var/orders/district4'
  DATA DIRECTORY = '/var/orders/district4',
  PARTITION p5
  VALUES IN (10, 13, 15, 18)
  INDEX DIRECTORY = '/var/orders/district5'
  DATA DIRECTORY = '/var/orders/district5'
);

分區(qū)的優(yōu)點(diǎn):

  • 擴(kuò)大存儲(chǔ)容量。
  • 優(yōu)化查詢。在WHERE子句中包含分區(qū)條件時(shí)可以只掃描必要的分區(qū)來(lái)提高查詢效率;同事在涉及SUM()和COUNT()這類聚合函數(shù)的查詢時(shí),可以在每個(gè)分區(qū)上并行處理。
  • 對(duì)于已經(jīng)過期或不需要保存的數(shù)據(jù)分區(qū),可以通過刪除分區(qū)來(lái)快速刪除數(shù)據(jù)。
  • 跨多磁盤來(lái)分散查詢數(shù)據(jù),獲得更大的查詢吞吐量。

總結(jié)

到此這篇關(guān)于MySQL分庫(kù)分表與分區(qū)的文章就介紹到這了,更多相關(guān)MySQL分庫(kù)分表分區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談?dòng)唵沃貥?gòu)之 MySQL 分庫(kù)分表實(shí)戰(zhàn)篇
  • mysql死鎖和分庫(kù)分表問題詳解
  • MySQL 分表分庫(kù)怎么進(jìn)行數(shù)據(jù)切分
  • MySql分表、分庫(kù)、分片和分區(qū)知識(shí)深入詳解
  • MySql分表、分庫(kù)、分片和分區(qū)知識(shí)點(diǎn)介紹
  • MySQL分庫(kù)分表總結(jié)講解
  • mysql分表分庫(kù)的應(yīng)用場(chǎng)景和設(shè)計(jì)方式
  • mysql數(shù)據(jù)庫(kù)分表分庫(kù)的策略
  • MyBatis實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)分庫(kù)分表操作和總結(jié)(推薦)
  • MYSQL數(shù)據(jù)庫(kù)數(shù)據(jù)拆分之分庫(kù)分表總結(jié)
  • Mysql數(shù)據(jù)庫(kù)分庫(kù)和分表方式(常用)
  • MYSQL性能優(yōu)化分享(分庫(kù)分表)
  • MySQL分庫(kù)分表詳情

標(biāo)簽:龍巖 迪慶 徐州 南充 自貢 無(wú)錫 麗水 西寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL分庫(kù)分表與分區(qū)的入門指南》,本文關(guān)鍵詞  MySQL,分庫(kù),分表,與,分區(qū),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL分庫(kù)分表與分區(qū)的入門指南》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL分庫(kù)分表與分區(qū)的入門指南的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美大片aaaa一级毛片| 欧美大片一区| 成人免费观看的视频黄页| 精品国产三级a| 欧美一级视频免费观看| a级毛片免费观看网站| 台湾毛片| 精品在线视频播放| 午夜激情视频在线观看| 色综合久久久久综合体桃花网| 欧美一级视频免费观看| 亚欧成人乱码一区二区| 精品视频在线观看一区二区| 二级片在线观看| 日韩一级黄色| 久久久久久久网| 91麻豆精品国产片在线观看| 国产伦理精品| 91麻豆精品国产自产在线观看一区| 青青久在线视频| 可以免费看毛片的网站| 欧美激情伊人| 欧美爱色| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 午夜激情视频在线观看| 欧美一级视频免费观看| 九九精品久久| 午夜在线观看视频免费 成人| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 色综合久久久久综合体桃花网| 久久福利影视| 国产国产人免费视频成69堂| 999久久66久6只有精品| 欧美激情中文字幕一区二区| 999久久久免费精品国产牛牛| 亚洲精品影院| 午夜激情视频在线观看| 精品在线视频播放| 亚洲精品中文字幕久久久久久| 成人高清视频在线观看| 午夜家庭影院| 国产亚洲精品成人a在线| 国产a毛片| 美女免费精品高清毛片在线视| 日本在线不卡视频| 亚飞与亚基在线观看| 精品视频在线看| 国产精品自拍在线观看| 精品在线视频播放| 欧美激情一区二区三区在线| 精品视频在线观看免费| 久久精品免视看国产成人2021| 欧美日本免费| 精品在线视频播放| 国产一区二区精品在线观看| 久久精品免视看国产成人2021| 精品在线观看国产| 国产不卡高清在线观看视频| 久久福利影视| 欧美日本免费| 青青青草影院 | 成人高清免费| 精品视频在线观看一区二区| 日韩在线观看免费完整版视频| 午夜欧美成人久久久久久| 台湾毛片| 黄视频网站免费看| 成人影院一区二区三区| 台湾毛片| 国产成人精品综合久久久| 日本特黄特色aa大片免费| 国产视频久久久久| 青青青草视频在线观看| 天天做人人爱夜夜爽2020毛片| 精品久久久久久综合网| 久草免费在线观看| 成人影院一区二区三区| 麻豆网站在线看| 国产视频久久久久| 国产亚洲精品成人a在线| 中文字幕一区二区三区 精品| 九九精品久久| 麻豆网站在线看| 久久福利影视| 韩国三级香港三级日本三级| 999久久66久6只有精品| 日韩专区第一页| 国产一区精品| 亚洲精品中文字幕久久久久久| 九九热国产视频| 精品国产一区二区三区久久久蜜臀| 精品视频一区二区| 美女免费精品高清毛片在线视| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 韩国毛片 免费| 色综合久久久久综合体桃花网| 国产伦久视频免费观看 视频| 欧美激情一区二区三区在线播放| 久久国产精品永久免费网站| 精品视频在线观看一区二区| 欧美激情一区二区三区在线| 久久精品欧美一区二区| 国产一级生活片| 亚洲 激情| 欧美国产日韩一区二区三区| 99久久精品国产高清一区二区| 亚欧乱色一区二区三区| 欧美激情一区二区三区在线| 久久国产精品永久免费网站| 国产精品自拍在线观看| 国产视频一区二区在线播放| 欧美日本免费| 日韩专区亚洲综合久久| 九九干| 精品国产三级a| 国产一区二区精品在线观看| 免费国产在线视频| 亚洲精品影院| 免费毛片基地| 91麻豆精品国产自产在线观看一区| 国产精品自拍亚洲| 精品国产香蕉伊思人在线又爽又黄| a级毛片免费观看网站| 天堂网中文字幕| 一级毛片视频免费| 黄视频网站在线免费观看| 999精品视频在线| 国产成人精品综合久久久| 黄视频网站免费| 免费毛片基地| 精品在线观看国产| 精品久久久久久中文| 天天做人人爱夜夜爽2020毛片| 国产精品自拍在线观看| 四虎影视久久| 国产成+人+综合+亚洲不卡| 99热精品在线| 你懂的在线观看视频| 国产视频久久久久| 91麻豆爱豆果冻天美星空| 欧美激情一区二区三区在线| 欧美激情影院| 精品视频在线观看一区二区| 成人高清免费| 亚洲女人国产香蕉久久精品| 亚洲 激情| 青青青草视频在线观看| 色综合久久天天综合| 色综合久久天天综合绕观看| 天天做人人爱夜夜爽2020毛片| 日韩专区亚洲综合久久| 亚洲精品久久久中文字| 久草免费在线视频| 国产美女在线一区二区三区| 成人av在线播放| 国产精品免费久久| a级毛片免费观看网站| 二级片在线观看| 欧美日本二区| 精品久久久久久中文| 日本免费乱理伦片在线观看2018| 韩国三级视频网站| 精品国产亚一区二区三区| 久久精品店| 欧美国产日韩一区二区三区| 精品国产亚洲一区二区三区| 麻豆污视频| 欧美激情影院| 国产一级生活片| 亚欧成人乱码一区二区| 四虎影视久久| 亚洲天堂一区二区三区四区| 成人免费一级纶理片| 亚洲精品影院| 一级女人毛片人一女人| 超级乱淫伦动漫| 韩国毛片 免费| 国产伦精品一区二区三区在线观看| 国产精品自拍亚洲| 日本在线播放一区| 91麻豆精品国产片在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产网站免费在线观看| 中文字幕一区二区三区 精品| 超级乱淫伦动漫| 久久99中文字幕| 黄视频网站免费看| 精品在线视频播放| 成人高清视频在线观看| 九九久久国产精品大片| 欧美激情伊人| 久久国产影视免费精品| 国产成人精品综合久久久| 毛片成人永久免费视频| 一级女人毛片人一女人| 欧美一级视频免费观看| 久草免费在线观看| 91麻豆精品国产片在线观看| 黄色免费三级| 天天做日日爱夜夜爽|