五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
青龙| 台南县| 金溪县| 泾川县| 剑阁县| 佛冈县| 河源市| 屏山县| 佳木斯市| 海伦市| 上思县| 安化县| 龙岩市| 洛阳市| 宿州市| 昌邑市| 普格县| 普洱| 稷山县| 孟津县| 正宁县| 元谋县| 舒城县| 永定县| 德庆县| 东至县| 福建省| 五大连池市| 图片| 太和县| 墨江| 临洮县| 类乌齐县| 堆龙德庆县| 厦门市| 奉化市| 白沙| 新邵县| 霍城县| 区。| 会东县|