1. 程式人生 > 資料庫 >資料庫事務,事務四大特性,MySQL支援事務

資料庫事務,事務四大特性,MySQL支援事務

資料庫事務:

資料庫的事務是一段原子性的不可分割的sql 語句的批處理,
這個批處理是要麼都執行,要麼回滾(rollback)都不執行。

MYSQL 事務處理主要有兩種方法:

1、用 BEGIN,ROLLBACK,COMMIT來實現 BEGIN 開始一個事務 ROLLBACK 事務回滾 COMMIT 事務確認

2、直接用 SET 來改變 MySQL 的自動提交模式: SET AUTOCOMMIT=0 禁止自動提交 SET AUTOCOMMIT=1 開啟自動提交

事務四大特性ACID :

原子性(Atomicity)
第一個原子性,這個是最簡單的。說的是一個事物內所有操作共同組成一個原子包,要麼全部成功,要麼全部失敗。這是最基本的特性,保證了因為一些其他因素導致資料庫異常,或者宕機。

一致性(Consistency)
第二一致性,這個是大家誤解最深的,很多部落格都喜歡用銀行轉賬的例子來講一直性,所謂的一致性是基於原子性。

原子性只保證了一個事物內的所有操作同一性,大家同生死,不會出現你死了,我還活著。但是,原子性並沒有保證大家同一時刻一起生,一起死。計算機指令是有先後順序的,這樣就決定了一個事物的提交,會經歷一個時間過程,那麼如果事物提交進行到了一半,我讀取了資料庫,會不會讀到中間結果?

為了防止這樣的情況,資料庫事物的一致性就規定了事物提交前後,永遠只可能存在事物提交前的狀態和事物提交後的狀態,從一個一致性的狀態到另一個一致性狀態,而不可能出現中間的過程態。也就是說事物的執行結果是量子化狀態,而不是線性狀態。

資料庫提交事物會有一個過程,如果提交的時候,存在一個時間差,在提交的第一秒,一個刪除過程還沒完成到了第三秒才完成,會不會第一秒訪問的人和第三秒訪問的人得到不同的結果?出現不一致,狀態的混沌?這就是一致性得保證的只會有前狀態和後狀態,絕不會出現中間態。

隔離性(Isolation)
事物的隔離性,基於原子性和一致性,因為事物是原子化,量子化的,所以,事物可以有多個原子包的形式併發執行,但是,每個事物互不干擾。

但是,由於多個事物可能操作同一個資源,不同的事物為了保證隔離性,會有很多鎖方案,當然這是資料庫的實現,他們怎麼實現的,我們不必深究。

永續性(Durability)
永續性,當一個事物提交之後,資料庫狀態永遠的發生了改變,這個事物只要提交了,哪怕提交後宕機,他也確確實實的提交了,不會出現因為

剛剛宕機了而讓提交不生效,是要事物提交,他就像洗不掉的紋身,永遠的固化了,除非你毀了硬碟。

--------------------https://blog.csdn.net/qq_25448409/article/details/78110430?utm_source=copy