<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
一個事務就是一個完整的業務邏輯。
什麼是一個完整的業務邏輯?
假設轉賬,從A賬戶向B賬戶中轉賬10000.
將A賬戶的錢減去10000 ( update語句)
將B賬戶的錢加上10000 ( update語句)
這就是一個完整的業務邏輯。
以_上的操作是-一個最小的工作單元,要麼同時成功,要麼同時失敗,不可再分。
這兩個update語句要求必須同時成功或者同時失敗,這樣才能保證錢是正確的。
僅有 DML (insert、delete、update)才會有事務一說,其他語句與事務無關!!!
本質上說,一個事務其實就是多條 DML 語句同時成功,或者同時失敗!!!
InnoDB 儲存引擎:提供了一組用來記錄事務性活動的紀錄檔檔案
在事務的執行的過程中,每一條 DML 的操作都會記錄到 “事務性活動的紀錄檔檔案” 中。
在事務的執行過程中,我們可以提交事務,也可以回滾事務。
提交事務?
清空事務性活動的紀錄檔檔案,將資料全部徹底持久化到資料庫表中。
提交事務標誌著,事務的結束。並且是一種全部成功的結束。
回滾事務?
將之前所有的 DML 操作全部復原,並且清空事務性活動的紀錄檔檔案。
回滾事務標誌著,事務的結束,並且是一種全部失敗的結束。
提交事務:commit;
回滾事務:rollback;
事務對應的英語單詞是:transaction
mysql 預設情況下是支援自動提交事務的。(自動提交)
什麼是自動提交?
每執行一次 DML 語句,則提交一次。
如何將 mysql 的自動提交機制關閉呢?
mysql> start transaction;
回滾只能回滾到上一次的提交點
mysql> start transaction; Query OK, 0 rows affected (0.00 sec) mysql> select * from dept_bak; Empty set (0.00 sec) mysql> insert into dept_bak values(10, 'abc', 'beijing'); Query OK, 1 row affected (0.00 sec) mysql> insert into dept_bak values(10, 'abc', 'beijing'); Query OK, 1 row affected (0.00 sec) mysql> select * from dept_bak; +--------+------+---------+ | deptno | name | loc | +--------+------+---------+ | 10 | abc | beijing | | 10 | abc | beijing | +--------+------+---------+ 2 rows in set (0.00 sec) mysql> rollback; Query OK, 0 rows affected (0.00 sec) mysql> select * from dept_bak; Empty set (0.00 sec)
mysql> select * from dept_bak; Empty set (0.00 sec) mysql> insert into dept_bak values(10, 'aaa', 'bbb'); Query OK, 1 row affected (0.01 sec) mysql> insert into dept_bak values(10, 'aaa', 'bbb'); Query OK, 1 row affected (0.00 sec) mysql> select * from dept_bak; +--------+------+------+ | deptno | name | loc | +--------+------+------+ | 10 | aaa | bbb | | 10 | aaa | bbb | +--------+------+------+ 2 rows in set (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> rollback; Query OK, 0 rows affected (0.00 sec) mysql> select * from dept_bak; +--------+------+------+ | deptno | name | loc | +--------+------+------+ | 10 | aaa | bbb | | 10 | aaa | bbb | +--------+------+------+ 2 rows in set (0.00 sec)
A:原子性
說明事務是最小的工作單元。不可再分。
C:一致性
所有事務要求,在同一個事務當中,所有操作必須同時成功,或同時失敗,以保證資料的一致性。
I:隔離性
A事務和B事務之間具有一定的隔離性。
D:永續性
事務最終結束的一個保障。事務提交,就相當於將沒有儲存到硬碟上的資料儲存到硬碟上。
事務隔離性的4個級別:
1. 讀未提交:read uncommitted
(最低隔離級別)
事務 A 可以讀取到事務 B 未提交的資料
存在的問題:髒讀現象(Dirty Read)
2. 讀已提交:read committed
事務 A 只能讀取到事務 B 提交之後的資料
這種隔離級別解決了髒讀現象!!!
存在的問題:不可重複讀取資料。
不可讀取資料:
在事務開啟之後,第一次讀到的資料是3條,當前事務還沒有結束,可能第二次再讀取的時候,讀到的資料是4條,3不等於4,稱為不可重複讀取。
3. 可重複讀:repeatble read
事務 A 開啟之後,不管是多久,每一次在事務A中讀取的資料都是一致的。即使事務B將資料已經修改,並且提交了,事務A讀取到的資料還是沒有發生改變,這就是可重複讀。
該隔離級別解決了不可重複讀。
存在的問題:幻影讀。
可重複讀,事務提交之後,只有事務不結束,讀到的資料永遠都是事務剛開始時的資料。
mysql 中預設的事務隔離級別!!!!
4. 序列化/序列化:serializable
(最高隔離級別)
這是最高隔離級別,效率最低。解決了所有問題。
這種隔離級別表示事務排隊,不能並行!
每一次讀取到資料都是最真實的,並且效率是最低的。
到此這篇關於MySql事務原理介紹及特性的文章就介紹到這了,更多相關MySql事務內容請搜尋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