概念:資料庫區分於其他檔案系統的一種特徵
好處:希望執行一些操作時,要麼同時執行,要麼同時不執行,最終達到資料的一致性
特性:【★】
acid
分類:
1、隱式事務
比如:insert、update、delete本身就是乙個事務
2、顯式事務
特徵:具有明顯的開啟和結束的標記
set autocommit=0; 取消隱式事務自動提交的功能
start transaction;開啟事務
…增刪改查sql語句
commit;提交事務
rollback;回滾事務
併發事務容易出現的問題:
髒讀:乙個事務讀到了另乙個事務未提交的資料
不可重複讀:在乙個事務執行期間,兩次查詢讀到的結果不一致
幻讀:乙個事務進行插入操作,沒有提交。另乙個事務讀到了沒有提交的資料
如何解決?
read uncommitted: 髒讀、不可重複、幻讀
read committed:不可重複讀、幻讀
repeatable read:幻讀(mysql5.5版本之前會出現幻讀,但5.5之後不會出現)
serializable:序列化(效能極低)
mysql預設的是repeatable read
如何檢視隔離級別?
select @@tx_isolation
;
如何設定隔離級別?
set @@tx_isolation
='read-uncommitted'
;set
[global
]transaction
isolation
level
read
uncommitted
;
show variables like 『autocommit』;
開啟事務
set autocommit=0;
#取消自動提交
start
transaction
;#開啟新事務,可選
insert
into beauty values
(null
,'付明明2'
,'女'
,now()
,'112'
,null
,null);
rollback
;#回滾事務
commit
;#提交事務
select
*from beauty;
delete和truncate在事務中的區別:
delete可以回滾, truncate不能回滾
select
*from
`admin`
insert
into admin values(1
,'xiaoming'
,'000000'
)set
global
transaction
isolation
level
repeatable
read
;
dos1
c:\> mysql -uroot -proot
mysql>
use girls;
database changed
mysql>
select @@tx_isolation
;
±----------------+
| @@tx_isolation |
±----------------+
| repeatable-read |
±----------------+
mysql>
set autocommit =0;
mysql>
insert
into account values(11
,』john』,』000』)
mysql>
commit
//最小的隔離級別 ,需要重啟dos ,因為沒有效果
mysql>
setglobal
transaction
isolation
level
read
uncommitted
;
query ok, 0 rows affected (0.00 sec)
mysql>
select @@tx_isolation
;
±----------------+
| @@tx_isolation |
±----------------+
| repeatable-read |
±----------------+
mysql>
select @@tx_isolation
;
±-----------------+
| @@tx_isolation |
±-----------------+
| read-uncommitted |
±-----------------+
mysql>
set autocommit =0;
mysql>
insert
into admin(username,password)
values
('tr12'
,'erw3');
mysql>
rollback
;
query ok, 0 rows affected (0.01 sec)
dos2
c:\> mysql -uroot -proot
mysql>
use girls;
database changed
mysql>
select @@tx_isolation
;
±----------------+
| @@tx_isolation |
±----------------+
| repeatable-read |
±----------------+
mysql >
select
*from admin;
mysql >
select
*from admin;
重啟 重啟 重啟 重啟
mysql>
select @@tx_isolation
;
±-----------------+
| @@tx_isolation |
±-----------------+
| read-uncommitted |
±-----------------+
mysql >
select
*from admin;
mysql >
select
*from admin;
事務處理 資料庫事務
事務簡介 事務的作用 事務的作用是將一系列操作作為乙個整體,一但其 現問題,會回滾到事務的開始狀態。即事務維護了資料的完整性和一致性。事務的四個特性 acid 原子性 事務的操作是原子不可分割的。一致性 事務的運算元據保證一致性,不存在一部分改變一部分不改變。隔離性 隔離性是當多個使用者併發訪問資料...
資料庫的事務處理
事務是這樣一種機制,它確保多個sql語句被當作單個工作單 元來處理。事務具有以下的作用 事務是完整性的單位,乙個事務的執行是把資料庫從乙個一 致的狀態轉換成另乙個一致的狀態。因此,如果事務孤立執行時 是正確的,但如果多個事務併發交錯地執行,就可能相互干擾,造成資料庫狀態的不一致。在多使用者環境中,資...
事務處理(二) 資料庫事務
事務的作用是將一系列操作作為乙個整體,一但其中出現問題,會回滾到事務的開始狀態。即事務維護了資料的完整性和一致性。如果不考慮隔離性,事務會出現以下問題。髒讀又稱無效資料的讀出,是指在資料庫訪問中,事務t1將某一值修改,然後事務t2讀取該值,此後t1因為某種原因撤銷對該值的修改,這就導致了t2所讀取到...