<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
一個事務是由一條或多條對資料庫操作的SQL語句所組成的一個不可分割的單元,只有當事務中所有操作都正常執行完了,整個事務才會被提交給資料庫,如果有部分事務處理失敗,那麼事務就要回滾到最初的狀態,因此,事務要麼全部執行成功,要麼全部失敗。
所以要記住事務幾個基本概念,如下:
事務是一組SQL語句的執行,要麼全部成功,要麼全部失敗,不能出現部分成功,部分失敗的結果,保證事務執行的原子操作。事務的所有SQL語句全部執行成功,才能提交(commit)事務,把結果寫會磁碟上。事務執行過程中,有的SQL出現錯誤,那麼事務必須要回滾(rollback)到最初的狀態。
比如轉賬業務需要多條SQL語句共同完成,只有這些SQL都執行成功才算業務成功了。
事務處理有三個狀態:
begin:開啟一個事務要執行的全部sql語句都成功了,然後commit提交一個事務如果其中任何一條SQL語句由於停電、或者伺服器出錯,導致SQL執行異常,那事務就沒有提交,事務會回滾(rollback),資料將恢復到事務開始前的狀態
這是儲存引擎來保證的(redo log和undo log保證的)
MyISAM儲存引擎不支援事務,InnoDB儲存引擎支援事務、支援行鎖。
用show enginesG
檢視當前資料庫支援哪些儲存引擎。
select @@autocommit;
檢視對事務提交狀態的設定
資料庫引擎可以通過命令臨時修改,或者通過組態檔永久修改。
如果說我們業務上涉及了事務,我們一般會在程式碼上控制這個變數,一般來說,我們的事務由多條SQL組成,要滿足事務的原子性操作,所以我們設定為手動提交。業務都成功,則提交這個事務;如果業務中間出現失敗,就回滾1個事務。
每一個事務必須滿足下面的4個特性:
事務的原子性(Atomic):事務是一個不可分割的整體,事務必須具有原子特性,及當事務修改時,要麼全執行,要麼全不執行,即不允許事務部分的完成。事務的一致性(Consistency):一個事務執行之前和執行之後,資料庫資料必須保持一致性狀態。資料庫的一致性狀態必須由使用者來負責,由並行控制機制實現。就拿網上購物來說,你只有讓商品出庫,又讓商品進入顧客的購物車才能構成一個完整的事務。(一致性不僅僅體現在事務裡面,包括儲存層引入MySQL為了提高熱點資料的存取效率一般都會加一個快取層Redis或者Memery cache對熱點資料做快取,這就涉及了快取層和資料庫DB層的資料一致性問題)事務的隔離性(Isolution):當兩個或多個事務並行執行時,為了保證資料的安全性,將一個事務內部的操作與其他事務的操作隔離起來,不被其他正在執行的事務所看到,使得並行執行的各個事務之間不能互相影響。隔離級別:資料的安全性和事務的並行性。隔離越嚴格,安全性越高,並行性越低(就是並行控制,保證資料安全)事務的永續性(Durability):事務完成以後(事務commit成功),DBMS保證它對資料庫中的資料的修改時永久性的,即使資料庫因為故障出錯,也應該能夠恢復資料。
MySQL最重要的是紀錄檔,不是資料!
事務的ACD特性是由MySQL的redo log和undo log機制來保證的;I隔離性是由mysql事務的鎖機制來實現保證的。
事務處理不經隔離,並行執行事務時通常會發生以下問題:
髒讀(Dirty Read):一個事務讀取了另一個事務未提交的資料。例如當事務A和事務B並行執行時,當事務A更新後,事務B查詢讀取到A尚未提交的資料,此時事務A回滾,則事務B讀到的資料就是無效的髒資料(事務B讀取了事務A尚未提交的資料)不可重複讀(NonRepeatable Read):一個事務的操作導致另一個事務前後兩次讀到不同的資料。例如當事務A和事務B並行執行時,當事務B查詢讀取資料後,事務A更新操作更改事務B查詢到的資料,此時事務B再去讀該資料,發現前後兩次讀的資料不一樣。(事務B讀取了事務A已提交的資料)虛讀(Phantom Read)幻讀:一個事務的操作導致另一個事務前後兩次查詢的結果資料量不同。例如當事務A和事務B並行執行時,當事務B查詢讀取資料後,事務A新增或者刪除了一條滿足事務B查詢條件的記錄,此時事務B再去查詢,發現查詢到前一次不存在的記錄,或者前一次查詢的一些記錄不見了。(事務B讀取了事務A新增加的資料或者讀不到事務A刪除的資料)
髒讀必須杜絕,因為事務沒有commit。在有些場景下,不可重複讀和幻讀是可以允許的(事務已經commit),不一定非要杜絕(通過設定不同的隔離級別解決),由應用場景需求決定。
select @@autocommit;
檢視MySQL是否自動提交事務
0表示手動提交事務,1表示自動提交事務,設定事務提交方式為手動提交(隻影響當前session):
到此這篇關於MySQL事務的ACID特性以及並行問題方案的文章就介紹到這了,更多相關MySQL事務ACID特性內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45