91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

優(yōu)化MySQL數(shù)據(jù)庫(kù)中樸實(shí)無(wú)華的分表和花里胡哨的分庫(kù)

5jek_harmonyos ? 來(lái)源:CSDN博客 ? 作者:_陳哈哈 ? 2021-08-26 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

blog.csdn.net/qq_39390545/article/details/116248222

一、樸實(shí)無(wú)華的 - 分表

1、垂直分表

2、水平分表

二、花里胡哨的 - 分庫(kù)

3、垂直分庫(kù)

4、水平分庫(kù)

總結(jié)

首先我們要知道分庫(kù)、分表都是干啥的,本文主角還是我們的MySQL為第一視角。首先從字面意思來(lái)看:

分庫(kù):由單個(gè)數(shù)據(jù)庫(kù)實(shí)例拆分成多個(gè)數(shù)據(jù)庫(kù)實(shí)例,將數(shù)據(jù)分布到多個(gè)數(shù)據(jù)庫(kù)實(shí)例中。

分表:由單張表拆分成多張表,將數(shù)據(jù)劃分到多張表內(nèi)。

要知道,對(duì)于大型互聯(lián)網(wǎng)項(xiàng)目,數(shù)據(jù)量級(jí)可能不是我們能想到的,每日新增數(shù)據(jù)量過(guò)千萬(wàn)是常有的事兒,想靠單臺(tái)MySQL服務(wù)器是不現(xiàn)實(shí)的。你項(xiàng)羽在牛B,也頂不住四個(gè)隊(duì)友掛機(jī)?。?!項(xiàng)羽:???

隨著業(yè)務(wù)數(shù)據(jù)量和網(wǎng)站QPS日益增高,對(duì)數(shù)據(jù)庫(kù)壓力也越來(lái)越大,單機(jī)版數(shù)據(jù)庫(kù)很快會(huì)到達(dá)存儲(chǔ)和并發(fā)瓶頸,就需要做數(shù)據(jù)庫(kù)性能方面的優(yōu)化,分庫(kù)分表采取的是分而治之的策略,分庫(kù)目的是減輕單臺(tái)MySQL實(shí)例存儲(chǔ)壓力及可擴(kuò)展性,而分表是解決單張表數(shù)據(jù)過(guò)大以后查詢的瓶頸問(wèn)題,坦白說(shuō),這些問(wèn)題也是所有關(guān)系型數(shù)據(jù)庫(kù)的“硬傷”。

今天我們就基于常見分庫(kù)、分表的策略方式以及場(chǎng)景,來(lái)搞清楚我們到底啥時(shí)候用的到。常用策略包括:垂直分表、水平分表、垂直分庫(kù)、水平分庫(kù)。

一、樸實(shí)無(wú)華的 - 分表

1、垂直分表

垂直分表,或者叫豎著切表,是不是感受到該策略是以字段為依據(jù)的!主要按照字段的活躍性、字段長(zhǎng)度,將表中字段拆分到不同的表(主表和擴(kuò)展表)中。

特點(diǎn):

每個(gè)表的結(jié)構(gòu)都不一樣;

每個(gè)表的數(shù)據(jù)也不一樣,

有一個(gè)關(guān)聯(lián)字段,一般是主鍵或外鍵,用于關(guān)聯(lián)兄弟表數(shù)據(jù);

所有兄弟表的并集是該表的全量數(shù)據(jù);

場(chǎng)景 :

有幾個(gè)字段屬于熱點(diǎn)字段,更新頻率很高,要把這些字段單獨(dú)切到一張表里,不然innodb行鎖很惡心的,鎖死你呀~~如用戶表里的余額字段?不,我的余額就很穩(wěn)定,一直是0。。

有大字段,如text,存儲(chǔ)壓力很大,畢竟innodb數(shù)據(jù)和索引是同一個(gè)文件;同時(shí),我又喜歡用SELECT *,你懂得,這磁盤IO消耗的,跟玩兒似的,誰(shuí)都扛不住的。

有明顯的業(yè)務(wù)區(qū)分,或表結(jié)構(gòu)設(shè)計(jì)時(shí)字段冗余;有些小伙伴看到第一點(diǎn)時(shí),就發(fā)現(xiàn)陳哈哈是個(gè)菜雞,用戶表怎么會(huì)有余額字段?明顯有問(wèn)題??!趕緊先到評(píng)論區(qū)噴陳哈哈一波~~然后笑嘻嘻的發(fā)現(xiàn)原來(lái)是個(gè)小尾巴,真不要臉是吧。。是的,因此不同業(yè)務(wù)我們要把具體字段拆開,這樣才有利于業(yè)務(wù)后續(xù)擴(kuò)展哦。

2、水平分表

水平分表,也叫“橫著切”。。以行數(shù)據(jù)為依據(jù)進(jìn)行切分,一般按照某列的自容進(jìn)行切分。

手機(jī)號(hào)表,我們可以通過(guò)前兩位或前三位進(jìn)行切分,如131、132、133 → phone_131、phone_132、phone_133,手機(jī)號(hào)有11位(100億),量大是很正常的事兒,這年頭誰(shuí)家老頭老太太每個(gè)手機(jī)呢是吧。這樣切就把一張大表切成了好幾十張小表,數(shù)據(jù)量不就下來(lái)了。有同學(xué)就問(wèn)了那我怎么知道我這手機(jī)號(hào)查哪個(gè)表呢?一看你就沒(méi)認(rèn)真看前兩行標(biāo)紅的點(diǎn),為啥標(biāo)紅嘞?比如我查13100001111,那我截取前三位,動(dòng)態(tài)拼接到查詢的表名上,就行了。

特點(diǎn):

每個(gè)表的結(jié)構(gòu)都一樣;

每個(gè)表的數(shù)據(jù)都不一樣,沒(méi)有交集;

所有表的并集是該表的全量數(shù)據(jù);

場(chǎng)景 :?jiǎn)伪淼臄?shù)據(jù)量過(guò)大或增長(zhǎng)速度很快,已經(jīng)影響或即將會(huì)影響SQL查詢效率,加重了CPU負(fù)擔(dān),提前到達(dá)瓶頸。記得水平分表越早越好,別問(wèn)我為什么。。

你要有興趣試一試,就關(guān)注我,讓csdn研發(fā)同學(xué)給我的粉絲們分個(gè)表哈哈。。算了,別做夢(mèng)了,忘了你是個(gè)菜狗了么~

二、花里胡哨的 - 分庫(kù)

需要你注意的是,傳統(tǒng)的分庫(kù)和我們熟悉的集群、主從復(fù)制可不是一個(gè)事兒;多節(jié)點(diǎn)集群是將一個(gè)庫(kù)復(fù)制成N個(gè)庫(kù),從而通過(guò)讀寫分離實(shí)現(xiàn)多個(gè)MySQL服務(wù)的負(fù)載均衡,實(shí)際是圍繞一個(gè)庫(kù)來(lái)搞的,這個(gè)庫(kù)稱為Master主庫(kù)。而分庫(kù)就不同了,分庫(kù)是將這個(gè)主庫(kù)一分為N,比如一分為二,然后針對(duì)這兩個(gè)主庫(kù),再配置2N個(gè)從庫(kù)節(jié)點(diǎn)。

3、垂直分庫(kù)

縱向切庫(kù),太經(jīng)典的切分方式,基于表進(jìn)行切分,通常是把新的業(yè)務(wù)模塊或集成公共模塊拆分出去,比如我們最熟悉的單點(diǎn)登錄、鑒權(quán)模塊。熟悉的味道,記得有一次我把一些沒(méi)用的表切到一個(gè)性能很好的服務(wù)器中,這服務(wù)器我專門用來(lái)學(xué)習(xí),后來(lái)也不知被哪個(gè)狗腿子告密了~ 我**你個(gè)**,有種站出來(lái),你個(gè)**東西。

特點(diǎn):

每個(gè)庫(kù)的表都不一樣;

表不一樣,數(shù)據(jù)就更不一樣了~ 沒(méi)有任何交集;

每個(gè)庫(kù)相對(duì)獨(dú)立,模塊化

場(chǎng)景 :可以抽象出單獨(dú)的業(yè)務(wù)模塊時(shí),可以抽象出公共區(qū)時(shí)(如字典、公共時(shí)間、公共配置等),或者想有一臺(tái)屬于自己的服務(wù)器時(shí)?

4、水平分庫(kù)

以行數(shù)據(jù)為依據(jù),將一個(gè)庫(kù)中的數(shù)據(jù)拆分到多個(gè)庫(kù)中。大型分表體驗(yàn)一下?坦白說(shuō)這種策略并不實(shí)用,因?yàn)闀?huì)對(duì)后臺(tái)開發(fā)很不友好,有很多坑,不建議采用,理解即可。

特點(diǎn):

每個(gè)庫(kù)的結(jié)構(gòu)都一樣;

每個(gè)庫(kù)的數(shù)據(jù)都不一樣,沒(méi)有交集;

所有庫(kù)的并集是全量數(shù)據(jù);

場(chǎng)景 :系統(tǒng)絕對(duì)并發(fā)量上來(lái)了,CPU內(nèi)存壓力大。分表難以根本上解決量的問(wèn)題,并且還沒(méi)有明顯的業(yè)務(wù)歸屬來(lái)垂直分庫(kù),主庫(kù)磁盤接近飽和。

總結(jié)

本文就到這里,希望你學(xué)廢了!其實(shí),在實(shí)際工作中,我們?cè)谶x擇分庫(kù)分表策略前,想到的應(yīng)該是從緩存、讀寫分離、SQL優(yōu)化等方面,因?yàn)檫@些能夠更直接、代價(jià)更小的解決問(wèn)題。要記住動(dòng)表就是動(dòng)根本,你永遠(yuǎn)不知道這張表后面會(huì)連帶多少歷史遺留問(wèn)題,如果是個(gè)很大型的項(xiàng)目,遇到些問(wèn)題你就跟經(jīng)理提議要分庫(kù)分表,小心被呼死~

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7335

    瀏覽量

    94804
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    906

    瀏覽量

    29559

原文標(biāo)題:老大讓我優(yōu)化數(shù)據(jù)庫(kù),我上來(lái)就分庫(kù)分表。。。

文章出處:【微信號(hào):harmonyos_developer,微信公眾號(hào):harmonyos_developer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深度解讀MySQL數(shù)據(jù)庫(kù)備份恢復(fù)策略

    數(shù)據(jù)是企業(yè)的核心資產(chǎn),數(shù)據(jù)庫(kù)備份是保障數(shù)據(jù)安全的最后一道防線。某天上午10點(diǎn),運(yùn)營(yíng)人員誤執(zhí)行了一條DELETE語(yǔ)句,刪除了訂單近一個(gè)月的
    的頭像 發(fā)表于 01-26 17:40 ?664次閱讀

    恒訊科技解析:如何安裝MySQL并創(chuàng)建數(shù)據(jù)庫(kù)

    安裝和管理MySQL不必復(fù)雜。只需幾分鐘,你就能在Linux服務(wù)器上搭建MySQL,創(chuàng)建第一個(gè)數(shù)據(jù)庫(kù),甚至自動(dòng)化備份——同時(shí)確保數(shù)據(jù)安全有序。 什么是
    的頭像 發(fā)表于 01-14 14:25 ?181次閱讀

    工業(yè)數(shù)據(jù)臺(tái)支持接入MySQL數(shù)據(jù)庫(kù)

    工業(yè)數(shù)據(jù)臺(tái)完全支持接入MySQL數(shù)據(jù)庫(kù) ,且通過(guò)數(shù)據(jù)同步、集成與治理等技術(shù)手段,能夠充分發(fā)揮MySQL
    的頭像 發(fā)表于 12-04 11:23 ?383次閱讀
    工業(yè)<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>中</b>臺(tái)支持接入<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>嗎

    PLC數(shù)據(jù)保存到MySQL數(shù)據(jù)庫(kù)解決方案

    。將這些數(shù)據(jù)可靠、高效地保存到數(shù)據(jù)庫(kù),能夠?yàn)槠髽I(yè)搭建數(shù)據(jù)平臺(tái),支撐后續(xù)的數(shù)據(jù)分析、報(bào)表生成以及決策支持等應(yīng)用。 在實(shí)際應(yīng)用場(chǎng)景,面對(duì)到多源
    的頭像 發(fā)表于 09-30 16:50 ?1593次閱讀
    PLC<b class='flag-5'>數(shù)據(jù)</b>保存到<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>解決方案

    mysql數(shù)據(jù)恢復(fù)—mysql數(shù)據(jù)庫(kù)被truncate的數(shù)據(jù)恢復(fù)案例

    某云ECS網(wǎng)站服務(wù)器,linux操作系統(tǒng),部署了mysql數(shù)據(jù)庫(kù)。工作人員在執(zhí)行數(shù)據(jù)庫(kù)版本更新測(cè)試時(shí),錯(cuò)誤地將本應(yīng)在測(cè)試庫(kù)執(zhí)行的sql腳本在生產(chǎn)庫(kù)
    的頭像 發(fā)表于 09-11 09:28 ?881次閱讀
    <b class='flag-5'>mysql</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>表</b>被truncate的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫(kù)性能優(yōu)化指南

    作為一名在大廠摸爬滾打多年的運(yùn)維老兵,我見過(guò)太多因?yàn)?b class='flag-5'>數(shù)據(jù)庫(kù)性能問(wèn)題導(dǎo)致的生產(chǎn)事故。今天分享一套完整的數(shù)據(jù)庫(kù)優(yōu)化方法論,從SQL層面到硬件配置,幫你徹底解決性能瓶頸!
    的頭像 發(fā)表于 08-18 11:21 ?757次閱讀

    MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南

    作為一名運(yùn)維工程師,MySQL數(shù)據(jù)庫(kù)優(yōu)化是我們?nèi)粘9ぷ髦凶罹咛魬?zhàn)性的任務(wù)之一。MySQL 8.0作為當(dāng)前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發(fā)揮其潛力,仍需要我們
    的頭像 發(fā)表于 07-24 11:48 ?866次閱讀

    企業(yè)級(jí)MySQL數(shù)據(jù)庫(kù)管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系型數(shù)據(jù)庫(kù),承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)與處理。作為數(shù)據(jù)庫(kù)管理員(DBA),掌握MySQL
    的頭像 發(fā)表于 07-09 09:50 ?736次閱讀

    遠(yuǎn)程訪問(wèn)內(nèi)網(wǎng)MySQL數(shù)據(jù)庫(kù)?這個(gè)方案更簡(jiǎn)單

    各位開發(fā)者朋友們,是否還在為無(wú)法隨時(shí)隨地訪問(wèn)內(nèi)網(wǎng)MySQL數(shù)據(jù)庫(kù)而煩惱?今天分享一個(gè)超實(shí)用的方法,通過(guò)容器部署 MySQL 結(jié)合 ZeroNews 內(nèi)網(wǎng)穿透,讓你在任何地方都能安全訪問(wèn)和管理數(shù)
    的頭像 發(fā)表于 07-04 18:06 ?879次閱讀
    遠(yuǎn)程訪問(wèn)內(nèi)網(wǎng)<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>?這個(gè)方案更簡(jiǎn)單

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)被加密如何恢復(fù)數(shù)據(jù)?

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server數(shù)據(jù)庫(kù)被加密,無(wú)法使用。 數(shù)據(jù)庫(kù)MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?691次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>被加密如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    MySQL數(shù)據(jù)庫(kù)采集網(wǎng)關(guān)是什么?有什么功能?

    MySQL數(shù)據(jù)庫(kù)采集網(wǎng)關(guān)是一種用于連接、采集、處理并傳輸數(shù)據(jù)MySQL數(shù)據(jù)庫(kù)的中間設(shè)備或軟件系統(tǒng),通常部署在
    的頭像 發(fā)表于 05-26 15:20 ?675次閱讀

    PLC數(shù)據(jù)臺(tái)對(duì)接到MySQL數(shù)據(jù)庫(kù)并對(duì)接到生產(chǎn)看板

    生產(chǎn)任務(wù)的先后順序和時(shí)間節(jié)點(diǎn),優(yōu)化生產(chǎn)資源的配置,確保生產(chǎn)過(guò)程的高效運(yùn)行。 對(duì)此,數(shù)之能提供PLC數(shù)據(jù)臺(tái)對(duì)接到MySQL數(shù)據(jù)庫(kù)和生產(chǎn)看板的
    的頭像 發(fā)表于 05-26 11:20 ?545次閱讀
    PLC<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>中</b>臺(tái)對(duì)接到<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>并對(duì)接到生產(chǎn)看板

    MySQL數(shù)據(jù)庫(kù)是什么

    開發(fā)、企業(yè)應(yīng)用和大數(shù)據(jù)場(chǎng)景。以下是其核心特性和應(yīng)用場(chǎng)景的詳細(xì)說(shuō)明: 核心特性 關(guān)系型數(shù)據(jù)庫(kù)模型 數(shù)據(jù)(Table) 形式組織,由行(
    的頭像 發(fā)表于 05-23 09:18 ?1231次閱讀

    數(shù)據(jù)采集到MYSQL和SQLSERVER數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)哪些功能

    將工業(yè)設(shè)備數(shù)據(jù)采集到MySQL和SQLServer數(shù)據(jù)庫(kù)后,可實(shí)現(xiàn)生產(chǎn)管理、設(shè)備運(yùn)維、決策支持等多維度功能。對(duì)此,數(shù)之能提供多種工業(yè)設(shè)備數(shù)據(jù)采集到數(shù)
    的頭像 發(fā)表于 05-07 15:32 ?593次閱讀

    自來(lái)水廠數(shù)據(jù)臺(tái):設(shè)備數(shù)據(jù)輕松轉(zhuǎn)發(fā)至MySQL數(shù)據(jù)庫(kù)

    傳感器、水表、PLC等源頭設(shè)備,采集實(shí)時(shí)的水質(zhì)、水量、壓力等相關(guān)數(shù)據(jù),形成完善的數(shù)據(jù)監(jiān)控、告警、管理、控制和分析的數(shù)字化工作機(jī)制,為持續(xù)提升供水服務(wù)質(zhì)量提供了有力幫助。 MySQL數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 04-22 13:54 ?542次閱讀