1、事務的概念
事務:一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。
事務處理(事務操作):保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交(commit),那麼這些修改就永久地儲存下來;要麼資料庫管理系統將放棄所作的所有修改,整個事務回滾(rollback)到最初狀態。
為確保資料庫中資料的一致性,資料的操縱應當是離散的成組的邏輯單元:當它全部完成時,資料的一致性可以保持,而當這個單元中的一部分操作失敗,整個事務應全部視為錯誤,所有從起始點以後的操作應全部回退到開始狀態。
2、事務的特點
事務的acid(acid)屬性
(1) 原子性(atomicity
)
原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生
(2)一致性(consistency
)
事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態
(3)隔離性(isolation
)
事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
(4)永續性(durability
)
永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來的其他操作和資料庫故障不應該對其有任何影響
3、事物的使用
以第乙個 dml 語句的執行作為開始
以下面的其中之一作為結束:
commit 或 rollback 語句
ddl 或 dcl 語句(自動提交)
使用者會話正常結束
系統異常終了
4、資料庫的隔離級別
(1)對於同時執行的多個事務, 當這些事務訪問資料庫中相同的資料時, 如果沒有採取必要的隔離機制, 就會導致各種併發問題
髒讀: 對於兩個事務 t1, t2, t1 讀取了已經被 t2 更新但還沒有被提交的字段. 之後, 若 t2 回滾, t1讀取的內容就是臨時且無效的.
不可重複讀: 對於兩個事務t1, t2, t1 讀取了乙個字段, 然後 t2 更新了該字段. 之後, t1再次讀取同乙個字段, 值就不同了.
幻讀: 對於兩個事務t1, t2, t1 從乙個表中讀取了乙個字段, 然後 t2 在該表中插入了一些新的行. 之後, 如果 t1 再次讀取同乙個表, 就會多出幾行.
(2)資料庫事務的隔離性: 資料庫系統必須具有隔離併發執行各個事務的能力, 使它們不會相互影響, 避免各種併發問題.
(3)乙個事務與其他事務隔離的程度稱為隔離級別. 資料庫規定了多種事務隔離級別, 不同隔離級別對應不同的干擾程度, 隔離級別越高, 資料一致性就越好, 但併發性越弱.
5、資料庫提供的 4 種事務隔離級別
oracle 支援的 2 種事務隔離級別:read commited, serializable
。
oracle 預設的事務隔離級別為:read commited
mysql 支援 4 種事務隔離級別.
mysql 預設的事務隔離級別為:repeatable read
6、在 mysql 中設定隔離級別
(1)每啟動乙個 mysql 程式, 就會獲得乙個單獨的資料庫連線. 每個資料庫連線都有乙個全域性變數@@tx_isolation
, 表示當前的事務隔離級別
(2)檢視當前的隔離級別:select @@tx_isolation;
(3)設定當前 mysql 連線的隔離級別:set transaction isolation level read committed;
(4)設定資料庫系統的全域性的隔離級別:set global transaction isolation level read committed;
黑猴子的家 mysql 日期函式
1 獲取當前日期 select now 2 獲取日期,沒有時間 select curdate 3 獲取時間,沒有日期 select curtime 4 獲取日期的指定部分 select year now select month now select monthname now select day...
黑猴子的家 mysql 標識列
1 標識列總結 標識列又稱為自增長列 語法auto increment 特點 設定為標識列的字段,值不用手動插入,自動會有序列值,不用擔心重複問題 1 標識列字段的型別必須為數值型 2 標識列欄位必須為乙個key 主鍵或唯一或外來鍵 3 乙個表中至多有乙個標識列 4 如果用delete刪除,標識列的...
黑猴子的家 mysql 資料刪除
刪除的方式一 語法 delete from 表 where 條件 1 案例 刪除 號碼的長度小於11位的女神資訊 delete from beauty where length phone 11 2 案例 刪除小燕子 delete from beauty where name 小燕子 delete ...