日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分库分表读写分离

發(fā)布時(shí)間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分库分表读写分离 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么要分庫分表和讀寫分離?

類似淘寶網(wǎng)這樣的網(wǎng)站,海量數(shù)據(jù)的存儲(chǔ)和訪問成為了系統(tǒng)設(shè)計(jì)的瓶頸問題,日益增長(zhǎng)的業(yè)務(wù)數(shù)據(jù),無疑對(duì)數(shù)據(jù)庫造成了相當(dāng)大的負(fù)載,同時(shí)對(duì)于系統(tǒng)的穩(wěn)定性和擴(kuò)展性提出很高的要求。隨著時(shí)間和業(yè)務(wù)的發(fā)展,數(shù)據(jù)庫中的表會(huì)越來越多,表中的數(shù)據(jù)量也會(huì)越來越大,相應(yīng)地,數(shù)據(jù)操作的開銷也會(huì)越來越大;另外,無論怎樣升級(jí)硬件資源,單臺(tái)服務(wù)器的資源(CPU、磁盤、內(nèi)存、網(wǎng)絡(luò)IO、事務(wù)數(shù)、連接數(shù))總是有限的,最終數(shù)據(jù)庫所能承載的數(shù)據(jù)量、數(shù)據(jù)處理能力都將遭遇瓶頸。分表、分庫和讀寫分離可以有效地減小單臺(tái)數(shù)據(jù)庫的壓力。

MySQ一主多從,讀寫分離;寫主庫,讀從庫(所有的數(shù)據(jù)庫的數(shù)據(jù)都是一樣的)
數(shù)據(jù)一樣的,那么當(dāng)數(shù)據(jù)量太大的時(shí)查詢還是很慢的

分庫分表的原因

  • 隨著單庫中的數(shù)據(jù)量越來越大,相應(yīng)的,查詢所需要的時(shí)間也越來越多,這個(gè)時(shí)候,相當(dāng)于數(shù)據(jù)的處理遇到了瓶頸
  • 單庫發(fā)生意外的時(shí)候,需要修復(fù)的是所有的數(shù)據(jù),而多庫中的一個(gè)庫發(fā)生意外的時(shí)候,只需要修復(fù)一個(gè)庫(當(dāng)然,也可以用物理分區(qū)的方式處理這種問題)
  • 分庫(根據(jù)用戶的ID分庫)
    所有數(shù)據(jù)庫的表結(jié)構(gòu)是一樣的,但存儲(chǔ)的數(shù)據(jù)完全不同
    真實(shí)的開發(fā)環(huán)境以用戶的ID進(jìn)行分離,每一個(gè)庫的數(shù)據(jù)量小,查詢就很快了
    無法解決問題:當(dāng)一個(gè)數(shù)據(jù)庫中表中數(shù)據(jù)量過大的時(shí)候,查詢依然很慢

    分表(根據(jù)存儲(chǔ)數(shù)據(jù)的時(shí)間來分)
    當(dāng)一個(gè)數(shù)據(jù)庫的數(shù)據(jù)量過大時(shí),必須進(jìn)行表拆分
    分表主要是基于數(shù)據(jù)表的某個(gè)字段來將一個(gè)表拆分為多個(gè)子表,即一個(gè)表中的數(shù)據(jù)行拆分到多個(gè)子表中去保存,子表存放到同一個(gè)數(shù)據(jù)庫的不同表或者不同的數(shù)據(jù)庫中。

    分庫分表帶來的問題及解決辦法
    任何事情都有兩面性,分庫分表也不例外,如果采用分庫分表,會(huì)引入新的的問題

    1、分布式事務(wù)問題
    使用分布式事務(wù)中間件解決,具體是通過最終一致性還是強(qiáng)一致性分布式事務(wù),看業(yè)務(wù)需求,這里就不多說。

    2、跨節(jié)點(diǎn)關(guān)聯(lián)查詢 Join 問題
    切分之前,我們可以通過Join來完成。而切分之后,數(shù)據(jù)可能分布在不同的節(jié)點(diǎn)上,此時(shí)Join帶來的問題就比較麻煩了,考慮到性能,盡量避免使用Join查詢。

    解決這個(gè)問題的一些方法:
    全局表
    全局表,也可看做是 “數(shù)據(jù)字典表”,就是系統(tǒng)中所有模塊都可能依賴的一些表,為了避免跨庫Join查詢,可以將 這類表在每個(gè)數(shù)據(jù)庫中都保存一份。這些數(shù)據(jù)通常
    很少會(huì)進(jìn)行修改,所以也不擔(dān)心一致性的問題。
    字段冗余
    利用空間換時(shí)間,為了性能而避免join查詢。例:訂單表保存userId時(shí)候,也將userName冗余保存一份,這樣查詢訂單詳情時(shí)就不需要再去查詢"買家user表"了。
    數(shù)據(jù)組裝
    在系統(tǒng)層面,分兩次查詢。第一次查詢的結(jié)果集中找出關(guān)聯(lián)數(shù)據(jù)id,然后根據(jù)id發(fā)起第二次請(qǐng)求得到關(guān)聯(lián)數(shù)據(jù)。最后將獲得到的數(shù)據(jù)進(jìn)行字段拼裝。

    3、跨節(jié)點(diǎn)分頁、排序、函數(shù)問題
    跨節(jié)點(diǎn)多庫進(jìn)行查詢時(shí),會(huì)出現(xiàn)Limit分頁、Order by排序等問題。分頁需要按照指定字段進(jìn)行排序,當(dāng)排序字段就是分片字段時(shí),通過分片規(guī)則就比較容易定位到指定的分片;

    當(dāng)排序字段非分片字段時(shí),就變得比較復(fù)雜了。需要先在不同的分片節(jié)點(diǎn)中將數(shù)據(jù)進(jìn)行排序并返回,然后將不同分片返回的結(jié)果集進(jìn)行匯總和再次排序,最終返回給用戶。

    4、全局主鍵避重問題
    如果都用主鍵自增肯定不合理,如果用UUID那么無法做到根據(jù)主鍵排序,所以我們可以考慮通過雪花ID來作為數(shù)據(jù)庫的主鍵,

    5、數(shù)據(jù)遷移問題
    采用雙寫的方式,修改代碼,所有涉及到分庫分表的表的增、刪、改的代碼,都要對(duì)新庫進(jìn)行增刪改。同時(shí),再有一個(gè)數(shù)據(jù)抽取服務(wù),不斷地從老庫抽數(shù)據(jù),往新庫寫,

    邊寫邊按時(shí)間比較數(shù)據(jù)是不是最新的。

    當(dāng)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)容量接近或超過單臺(tái)服務(wù)器的容量、QPS/TPS接近或超過單個(gè)數(shù)據(jù)庫實(shí)例的處理極限等此時(shí),往往是采用垂直和水平結(jié)合的數(shù)據(jù)拆分方法,把數(shù)據(jù)服務(wù)和數(shù)據(jù)存儲(chǔ)分布到多臺(tái)數(shù)據(jù)庫服務(wù)器上

    讀寫分離

    什么是讀寫分離

    讀寫分離的實(shí)質(zhì)是將應(yīng)用程序?qū)?shù)據(jù)庫的讀寫操作分配到多個(gè)數(shù)據(jù)庫服務(wù)器上,從而降低單臺(tái)數(shù)據(jù)庫的訪問壓力。

    讀寫分離一般通過配置主從數(shù)據(jù)庫的方式,數(shù)據(jù)的讀取來自從庫,對(duì)數(shù)據(jù)庫增加修改刪除操作主庫。

    為什么要讀寫分離呢?
    通過數(shù)據(jù)庫中間件,可以對(duì)數(shù)據(jù)庫進(jìn)行水平擴(kuò)展,由原來單臺(tái)數(shù)據(jù)庫擴(kuò)展到多臺(tái)數(shù)據(jù)庫,數(shù)據(jù)庫中間件通過路由規(guī)則將數(shù)據(jù)的訪問請(qǐng)求路由到其中一臺(tái)數(shù)據(jù)庫上

    • 因?yàn)閿?shù)據(jù)庫的“寫”(寫10000條數(shù)據(jù)到oracle可能要3分鐘)操作是比較耗時(shí)的。
    • 但是數(shù)據(jù)庫的“讀”(從oracle讀10000條數(shù)據(jù)可能只要5秒鐘)。
    • 所以讀寫分離,解決的是,數(shù)據(jù)庫的寫入,影響了查詢的效率。
    • 降低了數(shù)據(jù)訪問的瓶頸和單臺(tái)數(shù)據(jù)庫的壓力。通過數(shù)據(jù)庫中間件還可以將DBA和研發(fā)進(jìn)行解耦,提升DBA運(yùn)維效率。

    讀寫分離方案

    • 當(dāng)數(shù)據(jù)庫讀遠(yuǎn)大于寫,查詢多的情況,就可以考慮主數(shù)據(jù)負(fù)責(zé)寫操作,從數(shù)據(jù)庫負(fù)責(zé)讀操作,一主多重,從而把數(shù)據(jù)讀寫分離
    • 可以結(jié)合redis等緩存來配合分擔(dān)數(shù)據(jù)的讀操作,大大的降低后端數(shù)據(jù)庫的壓力

    總結(jié)

    以上是生活随笔為你收集整理的分库分表读写分离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色婷婷导航 | 亚洲熟女乱色一区二区三区久久久 | 制服.丝袜.亚洲.中文.综合 | 欧美在线一级片 | 免费激情网址 | 亚洲青涩网 | 欧美日韩在线观看成人 | 九九自拍 | 一本色道久久88综合无码 | 国产在线网站 | 亚州成人| free性护士vidos猛交 | 五月色婷| 国产精品秘入口18禁麻豆免会员 | 免费成人av在线播放 | 丰满少妇在线观看资源站 | 国产人妻精品一区二区三 | 中文字幕欧美视频 | 日本网站免费观看 | 97潮色 | 日韩在线一二三 | 开心激情播播网 | 激情福利在线 | 日本一级二级视频 | 成av人在线 | 少妇人妻精品一区二区三区 | 男生坤坤放进女生坤坤里 | 国产欧美日韩在线播放 | 亚洲精品一区二区三区蜜桃久 | 少妇一级免费 | 成人快手免费看片 | 亚洲av最新在线网址 | 欧美日韩一二三区 | 色视频一区 | 久久精品www人人爽人人 | 婷婷中文字幕在线 | 丝袜国产视频 | 日本久久久久久久久 | 亚洲人成人一区二区在线观看 | 69人妻精品久久无人专区 | 国产99久久久国产精品 | 最新国产网址 | 海角官网 | 欧美69久成人做爰视频 | 午夜羞羞网站 | 日韩美女视频 | 欧美天天性 | 色狠狠av老熟女 | 欧美一区二区三区在线免费观看 | 久草视频免费在线 | 亚洲精品无人区 | 欧美做爰猛烈床戏大尺度 | 岳乳丰满一区二区三区 | av最新天| 国产美女免费 | 成人做受黄大片 | 色老头网址 | 美腿丝袜亚洲色图 | wwwav视频在线观看 | 91精品国产色综合久久不卡98 | 国产毛片18 | 五月天小说网 | hitomi一区二区三区精品 | 成人性生交大免费看 | 露脸丨91丨九色露脸 | 男人猛吃奶女人爽视频 | 极品尤物一区二区三区 | 中文字幕999 | 四虎在线看片 | 久久精品国产99久久不卡 | 黄色复仇草 | 免费h片在线观看 | 久久婷婷色 | 青青草免费在线视频 | 天天摸天天干天天操 | 欧美成人黄色 | 精品一区久久 | 看全黄大色黄大片美女人 | a√天堂网| 免费在线观看成人 | 伦理片一区二区三区 | 法国极品成人h版 | 欧美成人乱码一区二区三区 | 国产3页 | 精品无码久久久久久久久果冻 | 中国av免费 | 乖女从小调教h尿便器小说 欧美韩一区二区 | 日批免费看 | 日韩亚洲精品在线 | 国产免费网址 | av看片资源 | 北岛玲av | 一集毛片 | 少妇精品视频一区二区 | 亚洲中文字幕一区二区 | 最好看十大无码av | 亚洲黄片一区 | 免费在线观看成人av | 五月天丁香在线 |