最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)據(jù)庫(kù)數(shù)據(jù)更新:從內(nèi)存到磁盤,一步步揭開(kāi)數(shù)據(jù)的神秘面紗!

2023-06-20 10:00 作者:做架構(gòu)師不做框架師  | 我要投稿




大家好,我是小米!今天我要和大家分享一下數(shù)據(jù)庫(kù)數(shù)據(jù)更新的流程。作為一名熱衷于技術(shù)分享的小伙伴,我希望通過(guò)本篇文章,幫助大家更好地理解數(shù)據(jù)庫(kù)數(shù)據(jù)更新的過(guò)程。廢話不多說(shuō),讓我們開(kāi)始吧!

獲取數(shù)據(jù)

在數(shù)據(jù)庫(kù)的數(shù)據(jù)更新過(guò)程中,首先,執(zhí)行器會(huì)從引擎中查找需要更新的數(shù)據(jù)。如果這些數(shù)據(jù)在內(nèi)存中已經(jīng)存在,那么執(zhí)行器會(huì)直接返回它們。這是因?yàn)閮?nèi)存的讀取速度非???,可以快速響應(yīng)查詢請(qǐng)求,提高數(shù)據(jù)訪問(wèn)效率。但是,如果數(shù)據(jù)不在內(nèi)存中,執(zhí)行器就需要進(jìn)行查詢操作,從磁盤或其他存儲(chǔ)介質(zhì)中讀取數(shù)據(jù),然后將查詢結(jié)果返回給執(zhí)行器。

更改數(shù)據(jù)寫入新數(shù)據(jù)

在拿到數(shù)據(jù)后,執(zhí)行器會(huì)先對(duì)數(shù)據(jù)進(jìn)行修改。例如,可以更新數(shù)據(jù)的某個(gè)字段、添加新的記錄或者刪除現(xiàn)有的記錄。修改完成后,執(zhí)行器會(huì)調(diào)用引擎接口,將修改后的數(shù)據(jù)重新寫入數(shù)據(jù)庫(kù)中。引擎接口會(huì)負(fù)責(zé)將數(shù)據(jù)寫入對(duì)應(yīng)的存儲(chǔ)介質(zhì),如磁盤或者固態(tài)硬盤,以保證數(shù)據(jù)的持久性。

prepare階段

當(dāng)執(zhí)行器調(diào)用引擎接口后,引擎會(huì)將數(shù)據(jù)更新到內(nèi)存中,以提供更快的數(shù)據(jù)訪問(wèn)速度。同時(shí),引擎還會(huì)將數(shù)據(jù)寫入 redo log(重做日志)中。redo log 記錄了數(shù)據(jù)庫(kù)發(fā)生的每個(gè)修改操作,包括插入、更新和刪除等,它起到了數(shù)據(jù)恢復(fù)的關(guān)鍵作用。在這個(gè)階段,數(shù)據(jù)處于 prepare(準(zhǔn)備)階段,引擎會(huì)通知執(zhí)行器操作已完成,可以隨時(shí)對(duì)數(shù)據(jù)進(jìn)行操作。

生成binlog

在數(shù)據(jù)更新過(guò)程中,執(zhí)行器會(huì)生成 binlog(二進(jìn)制日志)。binlog 記錄了數(shù)據(jù)庫(kù)的邏輯操作,如增刪改等,它可以用于數(shù)據(jù)恢復(fù)、主從復(fù)制以及故障恢復(fù)等場(chǎng)景。執(zhí)行器生成 binlog 的目的是為了保留數(shù)據(jù)修改的歷史記錄,以便后續(xù)需要進(jìn)行數(shù)據(jù)恢復(fù)或者復(fù)制操作時(shí)使用。

commit階段

當(dāng)所有操作都執(zhí)行完畢后,執(zhí)行器會(huì)調(diào)用引擎的事務(wù)提交接口。引擎接收到提交請(qǐng)求后,將之前寫入 redo log 的數(shù)據(jù)狀態(tài)從 prepare 改成 commit,表示數(shù)據(jù)更新已完成。這個(gè)過(guò)程保證了數(shù)據(jù)的一致性和持久性,確保了事務(wù)的原子性。

二階段提交

二階段提交是一種保證分布式事務(wù)的一致性的協(xié)議。在分布式環(huán)境中,事務(wù)涉及多個(gè)節(jié)點(diǎn),為了保證所有節(jié)點(diǎn)的數(shù)據(jù)操作能夠一致地提交或者回滾,需要引入二階段提交。它分為兩個(gè)階段:準(zhǔn)備階段和提交階段。

  • 在準(zhǔn)備階段,各個(gè)參與者節(jié)點(diǎn)準(zhǔn)備好提交的數(shù)據(jù),并向協(xié)調(diào)者節(jié)點(diǎn)發(fā)送準(zhǔn)備就緒的消息。

  • 在提交階段,協(xié)調(diào)者節(jié)點(diǎn)向各個(gè)參與者節(jié)點(diǎn)發(fā)送提交請(qǐng)求,并等待參與者節(jié)點(diǎn)的響應(yīng)。只有當(dāng)所有參與者節(jié)點(diǎn)都準(zhǔn)備就緒并響應(yīng)提交請(qǐng)求時(shí),協(xié)調(diào)者節(jié)點(diǎn)才會(huì)發(fā)出最終的提交指令。

redo log 的二階段提交

在數(shù)據(jù)庫(kù)數(shù)據(jù)更新過(guò)程中,redo log 也遵循二階段提交的原則。

  • 為了保證數(shù)據(jù)的一致性和持久性,redo log 的寫入操作先于 binlog。這樣做的好處是,即使系統(tǒng)在寫入 binlog 時(shí)出現(xiàn)異常,通過(guò) redo log 的回滾操作,可以將數(shù)據(jù)庫(kù)恢復(fù)到更新前的狀態(tài),避免數(shù)據(jù)丟失或損壞。redo log 的先寫操作可以提供更高的事務(wù)安全性。

  • 與上述情況相反,有時(shí)也會(huì)先寫入 binlog,再寫入 redo log。這種方式可以在數(shù)據(jù)恢復(fù)和備份過(guò)程中提供更多的靈活性和選擇性,但需要特別小心,確保在寫入 binlog 后能夠正確地將數(shù)據(jù)同步到 redo log,以保持?jǐn)?shù)據(jù)的一致性。

總結(jié)

通過(guò)今天的分享,我們對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)更新的流程有了更深入的了解。這個(gè)過(guò)程中涉及到執(zhí)行器、引擎、redo log、binlog 等多個(gè)環(huán)節(jié),每個(gè)環(huán)節(jié)都承擔(dān)著重要的責(zé)任,保證數(shù)據(jù)的正確性和一致性。希望這篇文章對(duì)你有所幫助,如果有任何問(wèn)題或者想法,歡迎在下方留言與我討論。

END

如有疑問(wèn)或者更多的技術(shù)分享,歡迎關(guān)注我的微信公眾號(hào)“知其然亦知其所以然”!




數(shù)據(jù)庫(kù)數(shù)據(jù)更新:從內(nèi)存到磁盤,一步步揭開(kāi)數(shù)據(jù)的神秘面紗!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
河东区| 临澧县| 长子县| 从江县| 临漳县| 瓦房店市| 稷山县| 文水县| 玉屏| 墨玉县| 壶关县| 大名县| 寻乌县| 郸城县| 慈溪市| 应用必备| 太白县| 南部县| 济阳县| 紫云| 仁怀市| 吉安县| 内丘县| 高台县| 治县。| 永吉县| 卓尼县| 华安县| 吉木萨尔县| 曲水县| 漳平市| 大化| 德庆县| 大港区| 神池县| 新沂市| 华蓥市| 裕民县| 靖江市| 临湘市| 岚皋县|