改變當前db:
use dbname***;
mysql 事務處理主要有兩種方法:
1、用 begin, rollback, commit來實現
begin 開始乙個事務
rollback 事務回滾
commit 事務確認
2、直接用 set 來改變 mysql 的自動提交模式:
set autocommit=0 禁止自動提交
set autocommit=1 開啟自動提交
檢視事務隔離級別
select @@tx_isolation; (mysql預設是repeatable-read 可重複度)
事務隔離級別
髒讀不可重複讀
幻讀讀未提交(read-uncommitted)是是
是不可重複讀(read-committed)否是
是可重複讀(repeatable-read)否否
是序列化(serializable)否否
否3.1 讀未提交(read-uncommitted) 事務a 在讀取時會讀取到事務b未提交的資料
3.2 不可重複讀(read-committed) 事務a 先讀取了資料行11 ,此時事務b修改了資料後11,事務a再次讀取時,資料行11的內容已改變,造出乙個事務內多次讀取資料不一致
設定事務隔離界別
設定當前連線的事務隔離界別為 讀未提交
set session transaction isolation level read uncommitted;
測試語句:
update tb_amount set amount = amount -10 where id = 1;
– 檢視資料庫的鎖
show open tables where in_use > 0;
– 檢視具體的鎖資訊 可看到鎖的表、空間、分頁、資料
select * from information_schema.innodb_locks;
– 檢視鎖之前互相等待的情況
select * from information_schema.innodb_lock_waits;
– 檢視連線程序
show processlist;
– 檢視請求執行的情況 資訊非常豐富
select * from information_schema.innodb_trx;
select * from information_schema
– 結束某個程序
kill 450801
MySQL事務相關概念,特點
1 事務的概念 事務 一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。事務處理 事務操作 保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交 commit 那麼這些修改就永久地儲存下來 要麼資料庫管理系統將放棄所作的...
事務的概念和MySQL事務支援
事務是由一步或幾步資料庫操作序列組成邏輯執行單元,這系列操作要麼全部執行,要麼全部放棄執行。程式和事務是兩個不同的概念。一般而言 一段程式中可能包含多個事務。事務具有四個特性 原子性 atomicity 一致性 consistency 隔離性 isolation 和持續性 durability 這四...
事務的概念和MySQL事務支援
事務是由一步或幾步資料庫操作序列組成邏輯執行單元,這系列操作要麼全部執行,要麼全部放棄執行。程式和事務是兩個不同的概念。一般而言 一段程式中可能包含多個事務。事務具有四個特性 原子性 atomicity 一致性 consistency 隔離性 isolation 和持續性 durability 這四...