久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > mysql數(shù)據(jù)庫什么時(shí)候才需要分庫分表?

        mysql數(shù)據(jù)庫什么時(shí)候才需要分庫分表?

        來源:千鋒教育
        發(fā)布人:xqq
        時(shí)間: 2023-10-13 03:17:39 1697138259

        一、mysql數(shù)據(jù)庫什么時(shí)候才需要分庫分表

        如果系統(tǒng)處于高速發(fā)展階段,拿商城系統(tǒng)來說,一天下單量可能幾十萬,那數(shù)據(jù)庫中的訂單表增長就特別快,增長到一定階段數(shù)據(jù)庫查詢效率就會(huì)出現(xiàn)明顯下降。

        因此,當(dāng)單表數(shù)據(jù)增量過快,超過 500 萬的數(shù)據(jù)量就要考慮分表了。

        那如何分表呢?

        分表有幾個(gè)維度,一是水平拆分和垂直拆分,二是單庫內(nèi)分表和多庫內(nèi)分表。

        水平拆分和垂直拆分

        就拿用戶表(user)來說,表中有 7 個(gè)字段:id,name,age,sex,nickname,description,如果 nickname 和 description 不常用,我們可以將其拆分為另外一張表:用戶詳細(xì)信息表,這樣就由一張用戶表拆分為了用戶基本信息表+用戶詳細(xì)信息表,兩張表結(jié)構(gòu)不一樣相互獨(dú)立。但是從這個(gè)角度來看垂直拆分并沒有從根本上解決單表數(shù)據(jù)量過大的問題,因此我們還是需要做一次水平拆分。

        拆分表

        還有一種拆分方法,比如表中有一萬條數(shù)據(jù),我們拆分為兩張表,id 為奇數(shù)的:1,3,5,7……放在 user1 中, id 為偶數(shù)的:2,4,6,8……放在 user2 中,這樣的拆分辦法就是水平拆分了。

        水平拆分的方式有很多,除了上面說的按照 id 拆表,還可以按照時(shí)間維度去拆分,比如訂單表,可以按每日、每月等進(jìn)行拆分。

        每日表:只存儲(chǔ)當(dāng)天的數(shù)據(jù)。每月表:可以起一個(gè)定時(shí)任務(wù)將前一天的數(shù)據(jù)全部遷移到當(dāng)月表。歷史表:同樣可以用定時(shí)任務(wù)把時(shí)間超過 30 天的數(shù)據(jù)遷移到 history 表。

        總結(jié)一下水平拆分和垂直拆分的特點(diǎn):

        垂直拆分:基于表或字段劃分,表結(jié)構(gòu)不同。水平拆分:基于數(shù)據(jù)劃分,表結(jié)構(gòu)相同,數(shù)據(jù)不同。

        單庫內(nèi)拆分和多庫拆分

        拿水平拆分為例,每張表都拆分為了多個(gè)子表,多個(gè)子表存在于同一數(shù)據(jù)庫中。比如用戶表拆分為用戶 1 表、用戶 2 表。

        單庫拆分

        在一個(gè)數(shù)據(jù)庫中將一張表拆分為幾個(gè)子表在一定程度上可以解決單表查詢性能的問題,但是也會(huì)遇到一個(gè)問題:單數(shù)據(jù)庫存儲(chǔ)瓶頸。

        所以在業(yè)界用的更多的還是將子表拆分到多個(gè)數(shù)據(jù)庫中。比如下圖中,用戶表拆分為兩個(gè)子表,兩個(gè)子表分別存在于不同的數(shù)據(jù)庫中。

        多庫拆分

        一句話總結(jié):分表主要是為了減少單張表的大小,解決單表數(shù)據(jù)量帶來的性能問題。

        延伸閱讀:

        二、為什么要分庫分表

        答案很簡單:數(shù)據(jù)庫出現(xiàn)性能瓶頸。用大白話來說就是數(shù)據(jù)庫快扛不住了。

        數(shù)據(jù)庫出現(xiàn)性能瓶頸,對(duì)外表現(xiàn)有幾個(gè)方面:

        大量請(qǐng)求阻塞

        在高并發(fā)場景下,大量請(qǐng)求都需要操作數(shù)據(jù)庫,導(dǎo)致連接數(shù)不夠了,請(qǐng)求處于阻塞狀態(tài)。

        SQL 操作變慢

        如果數(shù)據(jù)庫中存在一張上億數(shù)據(jù)量的表,一條 SQL 沒有命中索引會(huì)全表掃描,這個(gè)查詢耗時(shí)會(huì)非常久。

        存儲(chǔ)出現(xiàn)問題

        業(yè)務(wù)量劇增,單庫數(shù)據(jù)量越來越大,給存儲(chǔ)造成巨大壓力。

        從機(jī)器的角度看,性能瓶頸無非就是 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)這些,要解決性能瓶頸最簡單粗暴的辦法就是提升機(jī)器性能,但是通過這種方法成本和收益投入比往往又太高了,不劃算,所以重點(diǎn)還是要從軟件角度入手。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        MySQL里的year_month的用法是什么?

        一、MySQL里的year_month的用法是什么year_month估計(jì)是自定義函數(shù)吧,系統(tǒng)函數(shù)里沒有這個(gè)。猜測你的需求是獲取年和月,參考SELECT DATE_FORMAT(...詳情>>

        2023-10-13 04:59:46
        Oracle數(shù)據(jù)庫的實(shí)例是什么?

        一、Oracle數(shù)據(jù)庫的實(shí)例Oracle實(shí)例指的是由Oracle內(nèi)存結(jié)構(gòu)(SGA)和Oracle進(jìn)程組合在一起的統(tǒng)稱,是一系列復(fù)雜的內(nèi)存結(jié)構(gòu)和操作系統(tǒng)進(jìn)程;在任...詳情>>

        2023-10-13 04:34:10
        oracle數(shù)據(jù)庫有什么優(yōu)勢?

        一、oracle數(shù)據(jù)庫有什么優(yōu)勢1、Oracle是大型數(shù)據(jù)庫而Mysql是中小型數(shù)據(jù)庫,Oracle市場占有率達(dá)40%,Mysql只有20%左右,同時(shí)Mysql是開源的而Orac...詳情>>

        2023-10-13 04:33:00
        為什么不用key-value型數(shù)據(jù)庫實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫?

        一、為什么不用key-value型數(shù)據(jù)庫實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫TiDB / CockroachDB 都是基于 KV 模型做的分布式關(guān)系型數(shù)據(jù)庫。TiDB 實(shí)際上是構(gòu)建在 TiKV + p...詳情>>

        2023-10-13 04:21:53
        關(guān)系型數(shù)據(jù)庫是什么?

        一、什么是關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫是按照關(guān)系模型組織和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫。它使用表格(表)的形式來表示和存儲(chǔ)數(shù)據(jù),每個(gè)表代表一個(gè)實(shí)體,而...詳情>>

        2023-10-13 04:12:45
        普格县| 东海县| 海晏县| 濮阳市| 乌拉特前旗| 南丹县| 景洪市| 台北县| 石楼县| 潼南县| 天峨县| 济阳县| 紫阳县| 兖州市| 汶上县| 香港| 南京市| 乌鲁木齐县| 南江县| 伊宁市| 曲靖市| 府谷县| 古丈县| 长武县| 赤水市| 化州市| 嵩明县| 山阳县| 宁武县| 凤城市| 汉源县| 集安市| 肇庆市| 金阳县| 抚州市| 缙云县| 鄂托克旗| 务川| 黑河市| 玉林市| 沙坪坝区|