一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

緩存與數(shù)據(jù)庫(kù)出現(xiàn)不一致的情況如何解決

電子工程師 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師飛燕 ? 2018-07-15 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、數(shù)據(jù)庫(kù)主從不一致

先回顧下,無(wú)緩存時(shí),數(shù)據(jù)庫(kù)主從不一致問(wèn)題。

緩存與數(shù)據(jù)庫(kù)出現(xiàn)不一致的情況如何解決

如上圖,發(fā)生的場(chǎng)景是,寫(xiě)后立刻讀:

主庫(kù)一個(gè)寫(xiě)請(qǐng)求(主從沒(méi)同步完成)

從庫(kù)接著一個(gè)讀請(qǐng)求,讀到了舊數(shù)據(jù)

最后,主從同步完成

導(dǎo)致的結(jié)果是:主動(dòng)同步完成之前,會(huì)讀取到舊數(shù)據(jù)。

可以看到,主從不一致的影響時(shí)間很短,在主從同步完成后,就會(huì)讀到新數(shù)據(jù)。

二、緩存與數(shù)據(jù)庫(kù)不一致

再看,引入緩存后,緩存和數(shù)據(jù)庫(kù)不一致問(wèn)題。

如上圖,發(fā)生的場(chǎng)景也是,寫(xiě)后立刻讀:

(1+2)先一個(gè)寫(xiě)請(qǐng)求,淘汰緩存,寫(xiě)數(shù)據(jù)庫(kù)

(3+4+5)接著立刻一個(gè)讀請(qǐng)求,讀緩存,cache miss,讀從庫(kù),寫(xiě)緩存放入數(shù)據(jù),以便后續(xù)的讀能夠cache hit(主從同步?jīng)]有完成,緩存中放入了舊數(shù)據(jù))

(6)最后,主從同步完成

導(dǎo)致的結(jié)果是:舊數(shù)據(jù)放入緩存,即使主從同步完成,后續(xù)仍然會(huì)從緩存一直讀取到舊數(shù)據(jù)。

可以看到,加入緩存后,導(dǎo)致的不一致影響時(shí)間會(huì)很長(zhǎng),并且最終也不會(huì)達(dá)到一致。

三、問(wèn)題分析

可以看到,這里提到的緩存與數(shù)據(jù)庫(kù)數(shù)據(jù)不一致,根本上是由數(shù)據(jù)庫(kù)主從不一致引起的。當(dāng)主庫(kù)上發(fā)生寫(xiě)操作之后,從庫(kù)binlog同步的時(shí)間間隔內(nèi),讀請(qǐng)求,可能導(dǎo)致有舊數(shù)據(jù)入緩存。

假如主從不一致沒(méi)法徹底解決,引入緩存之后,binlog同步時(shí)間間隔內(nèi),也無(wú)法避免讀舊數(shù)據(jù)。

但是,有沒(méi)有辦法做到,即使引入緩存,不一致不會(huì)比“不引入緩存”更糟呢?這是更為實(shí)際的優(yōu)化目標(biāo)。

思路轉(zhuǎn)化為:在從庫(kù)同步完成之后,如果有舊數(shù)據(jù)入緩存,應(yīng)該及時(shí)把這個(gè)舊數(shù)據(jù)淘汰掉。

四、不一致優(yōu)化

如上圖所述,在并發(fā)讀寫(xiě)導(dǎo)致緩存中讀入了臟數(shù)據(jù)之后:

(6)主從同步

(7)通過(guò)工具訂閱從庫(kù)的binlog,這里能夠最準(zhǔn)確的知道,從庫(kù)數(shù)據(jù)同步完成的時(shí)間

畫(huà)外音:本圖畫(huà)的訂閱工具是DTS,可以是cannal,也可以自己訂閱和分析binlog

(8)從庫(kù)執(zhí)行完寫(xiě)操作,向緩存再次發(fā)起刪除,淘汰這段時(shí)間內(nèi)可能寫(xiě)入緩存的舊數(shù)據(jù)

如此這般,至少能夠保證,引入緩存之后,主從不一致,不會(huì)比沒(méi)有引入緩存更壞。

畫(huà)外音:即使引入緩存,也只有一個(gè)很小的時(shí)間間隔,可能讀到舊數(shù)據(jù)。

五、結(jié)尾

問(wèn):如何完全避免,主從同步時(shí)間差,數(shù)據(jù)的一致性?

答:詳見(jiàn)《數(shù)據(jù)庫(kù)主從不一致,怎么解?》。

問(wèn):該方案,只能優(yōu)化,并發(fā)讀寫(xiě)情況下,緩存與數(shù)據(jù)庫(kù)一致性問(wèn)題。如果,緩存與數(shù)據(jù)庫(kù)兩次操作,原子性被破壞(例如:修改數(shù)據(jù)庫(kù)成功,淘汰緩存失敗,導(dǎo)致的數(shù)據(jù)不一致),如何優(yōu)化數(shù)據(jù)的一致性呢?

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    246

    瀏覽量

    27188
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3927

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    何解數(shù)據(jù)庫(kù)緩存一致

    緩存一致性 每次逢年過(guò)節(jié)的時(shí)候搶票非常艱難,放票的時(shí)候那么多人同時(shí)去搶票,如果所有人查詢、購(gòu)票等都去訪問(wèn)數(shù)據(jù)庫(kù),那數(shù)據(jù)庫(kù)的壓力得有多大,這時(shí)候很多都會(huì)引入
    的頭像 發(fā)表于 09-25 15:25 ?1415次閱讀
    如<b class='flag-5'>何解</b>決<b class='flag-5'>數(shù)據(jù)庫(kù)</b>與<b class='flag-5'>緩存</b><b class='flag-5'>一致</b>性

    MAX直顯示IP不一致怎么解決

    請(qǐng)問(wèn)各位大神,這種IP地址不一致何解決?我已經(jīng)按照MAX上面顯示的IP地址修改了,還是出現(xiàn)IP地址不一致情況。
    發(fā)表于 09-04 09:55

    labview和agilent4294數(shù)據(jù)不一致問(wèn)題

    我利用GPIB,讓labview程序和agilent4294建立通信后。進(jìn)行了單次采集,并在程序中加入讀取4294數(shù)據(jù)作圖部分。但是發(fā)現(xiàn)labview界面的作圖結(jié)果與4294顯示屏上的結(jié)果不一致。存在個(gè)類(lèi)似于讀取的時(shí)間延遲問(wèn)題
    發(fā)表于 09-11 15:23

    何解決STM32發(fā)送的數(shù)據(jù)與串口助手上面顯示數(shù)據(jù)不一致的問(wèn)題?

    何解決STM32發(fā)送的數(shù)據(jù)與串口助手上面顯示數(shù)據(jù)不一致的問(wèn)題?
    發(fā)表于 12-09 06:59

    基于偏好不一致熵的偏好決策方法

    針對(duì)多規(guī)則有序決策系統(tǒng)中的偏好決策問(wèn)題,根據(jù)有序決策的偏好不一致特性,提出了種基于偏好不一致熵的偏好決策方法。首先,定義了樣本的偏好不一致熵( PIEO),用來(lái)度量特定樣本相對(duì)于樣本
    發(fā)表于 12-05 11:50 ?0次下載

    不一致數(shù)據(jù)上精確決策樹(shù)生成算法

    近年來(lái),隨著現(xiàn)實(shí)生活中數(shù)據(jù)量的不斷增大,不一致數(shù)據(jù)出現(xiàn)也越發(fā)頻繁,這使得人工修正不一致數(shù)據(jù)變得
    發(fā)表于 12-26 16:13 ?0次下載
    <b class='flag-5'>不一致</b><b class='flag-5'>數(shù)據(jù)</b>上精確決策樹(shù)生成算法

    感興趣區(qū)域不一致性決策算法

    醫(yī)學(xué)影像感興趣區(qū)域( ROI)的噪聲和疾病誤判是個(gè)典型的不一致性決策問(wèn)題,同時(shí)也是困擾臨床診斷的個(gè)難題。針對(duì)這個(gè)問(wèn)題,基于宏觀與微觀結(jié)合、全局與局部相結(jié)合的思想,提出了基于一致度、
    發(fā)表于 01-02 18:43 ?0次下載

    分布式大數(shù)據(jù)不一致性檢測(cè)

    關(guān)系數(shù)據(jù)庫(kù)中可能存在數(shù)據(jù)不一致性現(xiàn)象,關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)質(zhì)量的個(gè)主要問(wèn)題是存在違反函數(shù)依賴(lài)
    發(fā)表于 01-12 16:29 ?0次下載

    鋰電池組不一致性的原因及危害是怎樣的

    鋰電池組不一致性的原因及損害,看了就明白!鋰電池組電壓不一致會(huì)發(fā)生什么損害?怎么應(yīng)對(duì)鋰電池組不一致性的損害?鋰電池參數(shù)的不一致首要是指容量、內(nèi)阻、開(kāi)路電壓的
    發(fā)表于 03-17 17:39 ?1.2w次閱讀

    鋰電池組不一致性的原因是什么,它的危害有哪些

    鋰電池組不一致性的原因及損害,看了就明白!鋰電池組電壓不一致會(huì)發(fā)生什么損害?怎么應(yīng)對(duì)鋰電池組不一致性的損害?鋰電池參數(shù)的不一致首要是指容量、內(nèi)阻、開(kāi)路電壓的
    發(fā)表于 03-17 17:41 ?4917次閱讀

    緩存數(shù)據(jù)庫(kù)一致性問(wèn)題如何解

    最近不是正好在研究 canal 嘛,剛巧前兩天看了篇關(guān)于解決緩存數(shù)據(jù)庫(kù)一致性問(wèn)題的文章,里邊提到了種解決方案是結(jié)合 canal 來(lái)操作
    的頭像 發(fā)表于 03-24 14:34 ?900次閱讀
    <b class='flag-5'>緩存</b>與<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>一致</b>性問(wèn)題如<b class='flag-5'>何解</b>決

    什么是電芯的不一致性?電芯不一致會(huì)造成什么后果?

    什么是電芯的不一致性?電芯不一致會(huì)造成什么后果? 電芯是電池組成部分之,由正負(fù)極、電解質(zhì)和隔膜組成。在電動(dòng)車(chē)和移動(dòng)設(shè)備中廣泛使用的鋰離子電池,通常由數(shù)十個(gè)甚至數(shù)百個(gè)電芯組成。電芯的不一致
    的頭像 發(fā)表于 11-06 10:56 ?4853次閱讀

    mysql主從復(fù)制數(shù)據(jù)不一致怎么辦

    MySQL主從復(fù)制是種常用的數(shù)據(jù)復(fù)制技術(shù),用于實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步和分布式部署。然而,在實(shí)際應(yīng)用中,主從復(fù)制過(guò)程中出現(xiàn)數(shù)據(jù)
    的頭像 發(fā)表于 11-16 14:35 ?2851次閱讀

    Redis緩存與Mysql如何保證一致性?

    基本流程就是客戶端A請(qǐng)求,先去刪除緩存,然后將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),此時(shí)客戶端B查詢先去查詢緩存,緩存沒(méi)有返回,去查
    的頭像 發(fā)表于 12-02 14:23 ?1314次閱讀
    Redis<b class='flag-5'>緩存</b>與Mysql如何保證<b class='flag-5'>一致</b>性?

    Sybase數(shù)據(jù)恢復(fù)—Sybase數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)怎么恢復(fù)數(shù)據(jù)

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)工程師經(jīng)過(guò)檢測(cè),發(fā)現(xiàn)Sybase數(shù)據(jù)庫(kù)出現(xiàn)故障的原因是:異常斷電造成Sybase數(shù)據(jù)庫(kù)無(wú)法回寫(xiě)正常
    的頭像 發(fā)表于 11-30 16:45 ?439次閱讀
    Sybase<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—Sybase<b class='flag-5'>數(shù)據(jù)庫(kù)</b>無(wú)法啟動(dòng)怎么恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?