MySQL資料庫的事務處理

2021-10-08 13:14:53 字數 3850 閱讀 4785

概念:資料庫區分於其他檔案系統的一種特徵

好處:希望執行一些操作時,要麼同時執行,要麼同時不執行,最終達到資料的一致性

特性:【★】

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所讀取到...