成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

刷盤,還是不刷盤,是一個問題 | 架構(gòu)師之路重啟

數(shù)據(jù)庫
本文我們一起來看數(shù)據(jù)庫中一個典型的讀寫事務(wù)的場景,并了解這里面可能涉及的技術(shù)問題。

前幾個有個朋友留言,問我說最近兩年公號發(fā)讀書感悟,職場感悟,AI實(shí)踐居多了,發(fā)架構(gòu)思路類的內(nèi)容少了。

最近準(zhǔn)備重啟架構(gòu)思路類的內(nèi)容,且會保持一如既往的風(fēng)格:

  • 希望引發(fā)大家思考,多討論,多互動;
  • 核心原理通俗化描述,目標(biāo)是讓所有人搞懂;
  • 思路,比結(jié)論重要;

本篇源自我去年看到的一篇關(guān)于ARIES算法的論文,作為重啟后的第一篇,算是一個引子,希望大伙多多支持。

畫外音:去掉了論文里復(fù)雜的概念、算法及公式,加入了相關(guān)概念的補(bǔ)充解釋說明與架構(gòu)思考與補(bǔ)充。

讓我們來看數(shù)據(jù)庫中一個典型的讀寫事務(wù)的場景。

事務(wù)T1:

  • 開始事務(wù)
  • 讀取記錄A的值(假設(shè)A=1)
  • 修改記錄A的值(假設(shè)修改為2)
  • 提交事務(wù)

這里面可能涉及哪些技術(shù)問題呢?

問題一,數(shù)據(jù)庫如何讀取記錄A的值?

相關(guān)技術(shù)點(diǎn):

  • 數(shù)據(jù)庫使用緩沖池(buffer pool)機(jī)制提升讀寫效率;
  • 數(shù)據(jù)庫以數(shù)據(jù)頁(page)為單位管理緩沖池;
  • 如果被讀取的數(shù)據(jù)在緩沖池中,直接從緩沖池中讀取數(shù)據(jù);
  • 否則,先將磁盤上的數(shù)據(jù)復(fù)制到緩沖池,再從緩沖池中讀取數(shù)據(jù);

此例中,假設(shè)記錄存儲在一個單頁上,且事先不在緩沖池中,故數(shù)據(jù)頁會被復(fù)制到緩沖池。

問題二,數(shù)據(jù)庫如何寫入記錄A的值?

相關(guān)技術(shù)點(diǎn):

  • 數(shù)據(jù)庫直接修改緩沖池中的數(shù)據(jù);
  • 緩沖池中的數(shù)據(jù)不能實(shí)時刷回磁盤,畢竟事務(wù)還沒有提交;

此例中,緩沖池中的數(shù)據(jù)被修改為2,磁盤上的數(shù)據(jù)仍是1(如上圖)。

那么,問題來了,如果緩沖池滿了,要將哪些數(shù)據(jù)刷回磁盤呢?

原則上,得做到:

  • 如果事務(wù)未提交,“臟”數(shù)據(jù)不會被刷回磁盤;
  • 如果事務(wù)已提交,數(shù)據(jù)會被刷回磁盤。

數(shù)據(jù)庫的故障恢復(fù)系統(tǒng)(crash recovery system)也會面臨類似的問題,在數(shù)據(jù)庫崩潰,內(nèi)存中數(shù)據(jù)丟失的時候,未提交的事務(wù)和已提交的事務(wù),如何保證ACID特性?

再來看一個并發(fā)的事務(wù)T1和T2的復(fù)雜場景:

T1.1. 開始事務(wù)

T1.2. 讀取記錄A的值(假設(shè)A=1)

T1.3. 修改記錄A的值(假設(shè)修改為2)

    T2.1開始事務(wù)

    T2.2讀取記錄B的值(假設(shè)B=3)

    T2.3修改記錄B的值(假設(shè)修改為7)

    T2.4提交事務(wù)

T1.4.回滾事務(wù)

假設(shè),記錄A和記錄B都在一個數(shù)據(jù)頁上。

事務(wù)T1讀取記錄A的值,會將磁盤上的數(shù)據(jù)頁復(fù)制到緩沖池,再進(jìn)行讀取(如上圖)。

事務(wù)T1修改記錄A的值,會直接修改緩沖池中的數(shù)據(jù)(如上圖)。

好,這個時候,事務(wù)T2啟動了。

事務(wù)T2先讀取記錄B的值,緩沖池中已經(jīng)存在記錄B所在的頁,所以無需進(jìn)行磁盤訪問。

畫外音:緩沖池的核心作用,提高讀寫性能。

接下來,事務(wù)T2修改記錄B的值,會直接修改緩沖池中的數(shù)據(jù)(如上圖)。

接下來,事務(wù)T2提交了。

這個時刻,我們面臨一個巨大的難題:在數(shù)據(jù)庫返回應(yīng)用程序事務(wù)成功之前,要不要將數(shù)據(jù)刷回磁盤?

如果不將數(shù)據(jù)刷回磁盤,就返回應(yīng)用程序事務(wù)成功,那么萬一數(shù)據(jù)庫故障,緩沖池中的數(shù)據(jù)丟失,事務(wù)T2的ACID特性就會被破壞。

反之,如果將數(shù)據(jù)刷回磁盤,但此時事務(wù)T1還沒有提交/回滾,事務(wù)T1的臟數(shù)據(jù)刷回磁盤,事務(wù)T1的ACID特性也會被破壞。

我們似乎陷入了一個兩難的境地。如果是你,你會考慮用什么思路解決這個問題呢?

總結(jié)與思考:

  • 數(shù)據(jù)庫使用緩沖池(buffer pool)機(jī)制提升讀寫效率;
  • 數(shù)據(jù)庫以數(shù)據(jù)頁(page)為單位管理緩沖池;
  • 數(shù)據(jù)庫直接讀寫緩沖池中的數(shù)據(jù);
  • 此情況,刷盤,還是不刷盤?
責(zé)任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2019-11-06 11:31:26

刷臉支付支付寶互聯(lián)網(wǎng)

2022-04-07 07:30:47

InnoDBMySQL數(shù)據(jù)

2011-04-28 14:17:05

架構(gòu)設(shè)計

2025-01-22 08:00:00

架構(gòu)秒殺系統(tǒng)Java

2012-04-16 17:00:58

金山快盤內(nèi)容備份

2019-07-23 18:15:26

技術(shù)大數(shù)據(jù)數(shù)據(jù)庫

2021-10-25 09:41:04

架構(gòu)運(yùn)維技術(shù)

2012-06-17 12:58:04

架構(gòu)師架構(gòu)

2024-11-13 06:03:45

架構(gòu)設(shè)計架構(gòu)系統(tǒng)

2013-01-10 13:27:32

iOS刷榜Android

2017-10-18 15:19:23

架構(gòu)師技術(shù)開發(fā)

2018-07-03 15:46:24

Java架構(gòu)師源碼

2022-06-06 08:42:04

spring-boo開發(fā)接口防盜刷

2018-02-06 09:58:48

架構(gòu)師MVCiOS

2020-11-25 09:56:48

架構(gòu)運(yùn)維技術(shù)

2022-06-15 10:04:51

存儲選型MySQL

2023-02-09 09:56:32

架構(gòu)

2019-07-31 07:36:12

架構(gòu)運(yùn)維技術(shù)

2009-02-23 11:18:06

J2EE架構(gòu)師Java

2013-04-19 15:12:17

架構(gòu)師WEB架構(gòu)師
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区四区视频 | 精品成人一区二区 | 在线日韩精品视频 | www亚洲精品 | 成人水多啪啪片 | 天堂视频中文在线 | av天天看| 亚洲精品日本 | 欧美日韩国产三级 | 国产精品精品视频一区二区三区 | 精久久久| 国产黄色大片在线免费观看 | 草久在线 | 成人在线精品视频 | 国产精品一区二区视频 | 播放一级黄色片 | 亚洲一区二区三区在线视频 | 久久精品视频12 | 一区二区在线 | 日韩中文字幕一区二区 | a国产视频| 国产9999精品 | 欧美一区二区激情三区 | 日韩一区二区三区视频在线播放 | 久久精品久久久 | 精品免费国产视频 | 91 视频网站 | 欧美区在线观看 | 欧美精品欧美精品系列 | 午夜极品 | 亚洲国产精品久久久 | 中文字幕亚洲一区二区三区 | 国产精品99久久久久久久久 | 成人在线观看免费视频 | 国产日韩欧美一区二区 | 色综合一区二区 | 操久久| 欧美精品一区二区三区在线播放 | aaaa网站| 99久久亚洲 | 国产精品久久久久久52avav |