事務管理:邏輯上的一組操作,要麼同時完成,要麼同時失敗。
mysql>start transaction;//宣告乙個事務的開始
//從a的賬戶向b的賬戶轉入100元
mysql>update
account
setmoney=money+100
where
name='a';//
步驟1,向a的賬戶存入100,
mysql>update
account
setmoney=money-100
where
name='b';//
步驟2,從b的賬戶減去100,
mysql>rollback;//回滾事務,前面已經執行完成的步驟將會全部失效,用於取消事務
(必須在commit語句執行之前才會有效,在事務執行過程中意外中斷會預設執行事務回滾語句)
mysql>commit;//提交事務,如果以上兩個步驟都成功,則將最終結果提交到資料庫並產生效果,
//否則只要以上兩個步驟任意乙個失敗則提交失敗,最終不會對資料庫產生影響,
事務的四大特性:(資料庫自帶的功能,除隔離性之外,都不需要我們自己維護)
1,原子性(atomicity):事務是一組不可分割的單位,要麼一起成功,要麼一起失敗;
2,一致性(consistency):事務前後的資料完整性應該保持一致,(滿足所有約束);
3,永續性(durabilty):事務一旦被提交,就能對資料庫資料永久改變,不會應為中途中斷而被影響;
4,隔離性(isolation):多個使用者同時操作事務,事務之間互不干擾;
四大隔離級別:(
1,髒讀是指,在資料庫不做任何隔離的情況下,事務1對資料進行修改後又進行了回滾(相當於事務1最終未對資料進行任何修改),
而事務2在事務1修改前、修改後和回滾後分別對資料進行了3次讀取,其中只有第二次讀取到了資料的變化。
2,不可重複讀是指,在資料庫只做了隔離1或者隔離2的情況下,事務1對資料進行了修改並最終做了提交,而事務2在事務1修改前後分別對資料進行了讀取,
而第一次讀取到的資料在後面是不會再次重複讀取到的。)
1,read uncommitted; 不做任何隔離(安全性最低,效能最高)
2,read committed; 只能防止髒讀
3,repeatable read; 可以防止髒讀,不可重複讀,但是不能防止虛讀(幻讀)/系統預設的級別/
4,serializable; 資料庫執行序列化,所有問題都不會產生,但是效能低
安全性越高,則效能越低,系統預設的隔離級別最好;
---修改資料庫的隔離級別---
settx_isolation='read-uncommitted';//當開啟該隔離級別時,事務管理將失效(出現髒讀現象)
settx_isolation='read-committed';
settx_isolation='repeatable-read';
settx_isolation='serializable';
---查詢資料庫當前的隔離級別---
select @@tx_isolation;
mysql事務管理
事務 由多個sql語句組成 這些sql作為乙個整體不可分割,如果其中一條sql不能執行,那麼整個單元會回滾,只有所有sql語句都成功執行才能說這個事務被成功的執行了 mysql的儲存引擎中innodb bdb支援事務 每個事務的處理都滿足acid屬性 1 原子性 事務被看成乙個不可分割的單元 2 一...
MySQL 事務管理
事務的4個特性 acid 事務管理的相關命令 start transaction 開始事務 sql語句1 sql語句2 commit 提交事務 rollback 回滾 流程示例 start transaction insert into tb user name,age values zhangsa...
mysql 事務管理(高階) 待續
請口述以下問題 什麼是事務到特性,具體說說你到理解 請舉乙個案例描述為什麼要用到事務 賬 事務的隔離級別 待續。a b a給b轉賬100 正常mysql流程 a賬戶b賬戶 a 100 b 100 可能情況 情況a賬戶b賬戶 第一種a 100 b 100 第二種a 100 b第三種 ab 100 第四...