[翻譯] MySQL 之 InnoDB 中的 ACID

mysql

官方文檔:15.2 InnoDB and the ACID Model

一污淋、ACID 介紹

ACID 模型是針對那些對數(shù)據(jù)安全谨湘、可用性要求很高的應(yīng)用,在數(shù)據(jù)庫設(shè)計(jì)方面的一些準(zhǔn)則。

MySQL 的 InnoDB 存儲引擎作為 MySQL 的一個組件就嚴(yán)格地符合了 ACID 原則亏栈,從而保證了在服務(wù)崩潰或硬件出問題這樣的異常情況下顾翼,數(shù)據(jù)的完整性不會被破壞投放,結(jié)果不會丟失。

當(dāng)你的應(yīng)用對 ACID 有依賴時适贸,并不需要在一致性檢測和災(zāi)難恢復(fù)方面 重復(fù)造輪子灸芳。

如果你在軟件層面有額外的安全措施或者有機(jī)器值得信賴的硬件,同時你的應(yīng)用也能夠容忍極小量的數(shù)據(jù)不一致性拜姿,也可以在 MySQL 中做一些配置烙样,犧牲一定 ACID 的可靠性來換取更好的性能。

二砾隅、InnoDB 中的 ACID 實(shí)現(xiàn)

1. ACID 的四個要求
  • Atomicity误阻,原子性。 即:事務(wù)中的一組操作必須看做是一個不可分割的最小單位晴埂,要么同時成功究反,要不同時失敗。
  • Consistency儒洛,一致性精耐。即:事務(wù)前后,不能對數(shù)據(jù)的一致性造成破壞琅锻。如:A/B轉(zhuǎn)賬卦停,轉(zhuǎn)賬前后兩人錢的綜合在事務(wù)前后是一樣的,狀態(tài)是一致的恼蓬。
  • Isolation惊完,隔離性。即:多個事務(wù)中处硬,未提交的變更互相之間是不可見的小槐,和事務(wù)的隔離級別有關(guān)。
  • Durability,持久性凿跳。即:事務(wù)對數(shù)據(jù)的變更必須是持久的件豌,即:寫入到磁盤上。
2. Atomicity

ACID 中的 Atomicity 主要涉及 InnoDB 的事務(wù)控嗜,包含:

  • 事務(wù)的自動提交 autocommit
  • 事務(wù)的回滾 rollback
  • 事務(wù)的提交 commit
  • INFORMATION_SCHEMA 的一些數(shù)據(jù)操作
3. Consistency

ACID 中的 Consistency 主要涉及到 InnoDB 是如何保證處理過程中不被各種異常情況打斷或損壞茧彤,如軟件崩潰、硬件宕機(jī)等疆栏,包含:

  • InnoDB 的雙寫緩沖區(qū) doublewrite buffer
  • InnoDB 的災(zāi)難恢復(fù) crash recovery
4. Isolation

ACID 中的 Isolation 主要涉及到 InnoDB 的事務(wù)和事務(wù)的隔離級別曾掂,包含:

  • 事務(wù)的自動提交 autocommit
  • set isolation level 語句
  • InnoDB 低粒度的行鎖,可以在 INFORMATION_SCHEMA 中查看鎖細(xì)節(jié)
5. Durability

ACID 中的 Durability 涉及到 MySQL 和各種硬件的交互配置壁顶。由于 CPU遭殉、網(wǎng)絡(luò)、存儲設(shè)備等存在的各種可能博助,Durability 方面很難給出最佳的指導(dǎo)方案险污。包含:

  • 配置項(xiàng) innodb_doublewrite,開啟或關(guān)閉 InnoDB 的雙寫緩沖區(qū) doublewrite buffer
  • 配置項(xiàng) innodb_flush_log_at_trx_commit富岳,控制 InnoDBlog buffer 寫入磁盤的策略蛔糯。
  • 配置項(xiàng) synch_binlog,控制二進(jìn)制日志寫入磁盤的策略窖式。
  • 配置項(xiàng) innodb_file_per_table蚁飒,開啟或關(guān)閉 InnoDB 是否獨(dú)立于共享的表空間 ibdata1 為每張表使用獨(dú)立的表空間。
  • 各種存儲設(shè)備上的 write buffer
  • 存儲設(shè)備的電池供電緩存 battery-backed cache
  • 操作系統(tǒng)對 fsync() 的支持情況
  • 整個服務(wù)器的不間斷電源 Uninterruptible power supply (UPS)
  • 備份策略:備份了哪些數(shù)據(jù)萝喘?頻率如何淮逻?保存多久?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阁簸,一起剝皮案震驚了整個濱河市爬早,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌启妹,老刑警劉巖筛严,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饶米,居然都是意外死亡桨啃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門檬输,熙熙樓的掌柜王于貴愁眉苦臉地迎上來照瘾,“玉大人,你說我怎么就攤上這事丧慈∥雒” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碳却。 經(jīng)常有香客問我,道長笑旺,這世上最難降的妖魔是什么昼浦? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮筒主,結(jié)果婚禮上关噪,老公的妹妹穿的比我還像新娘。我一直安慰自己乌妙,他們只是感情好使兔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藤韵,像睡著了一般虐沥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泽艘,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天欲险,我揣著相機(jī)與錄音,去河邊找鬼匹涮。 笑死天试,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的然低。 我是一名探鬼主播喜每,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雳攘!你這毒婦竟也來了带兜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吨灭,失蹤者是張志新(化名)和其女友劉穎鞋真,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沃于,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩咖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了繁莹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檩互。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖咨演,靈堂內(nèi)的尸體忽然破棺而出闸昨,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布饵较,位于F島的核電站拍嵌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏循诉。R本人自食惡果不足惜横辆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茄猫。 院中可真熱鬧狈蚤,春花似錦、人聲如沸划纽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勇劣。三九已至靖避,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間比默,已是汗流浹背筋蓖。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留退敦,地道東北人粘咖。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像侈百,于是被迫代替她去往敵國和親瓮下。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容