什麼是事務
一、概念
事務指的是邏輯上的一組操作,這一組操作要不同時成功,要不同時失敗,只要這一組操作裡有一個失敗,意味著這一組都失敗 ---同生共死
二、事務的管理
(MySQL資料庫事務預設是自動提交,Oracle資料庫事務預設是不自動提交)
(一)dos命令列管理事務1.手動開啟事務start tansaction --開啟事務excute 多條 sqlcommit 提交 / rollback 回滾2.設定一個自動提交引數show variables like "%commit%" --檢視與commit相關引數set autocommit = 0; -- 將autocommit引數設定為OFF.
(二)JDBC管理事務JDBC的事務的管理的APIsetAutoCommit(boolean autoCommit); --是自動提交還是手動commit(); --提交事務rollback(); --回滾
(三)建立表,插入3條資料create table account(id int primary key auto_increment,name varchar(20),money double);
insert into account values (null,"張森",10000);insert into account values (null,"鳳姐",10000);insert into account values (null,"如花",10000)
內省1.用來獲取JavaBean的屬性及屬性的get和set方法2.JavaBean就是一個滿足了特定格式的Java類
三、事務特性
原子性:強調事務的不可分割一致性:強調的是事務的執行的前後,資料的完整性要保持一致隔離性:一個事務的執行不應該受到其他事務的干擾永續性:事務一旦結束(提交/回滾)資料就持久保持到了資料庫
四、如果不考慮隔離性,會引發一些安全性問題
1、讀問題髒讀:一個事務讀到另一個事務還沒有提交的資料不可重複讀:一個事務讀到了另一個事務已經提交的update資料,導致在當前的事務中多次查詢資料不一致虛讀/幻讀:一個事務讀到另一個事務已經insert資料,導致當前事務中多次查詢結果不一致
2、寫問題引發兩類丟失更新
五、解決引發的讀問題
設定事務的隔離級別read uncommitted :未提交讀。髒讀,不可重複讀,虛讀都可能發生read committed :已提交讀。避免髒讀,不可重複讀和虛度有可能發生repeatable read :可重複讀。避免髒讀和不可重複讀,虛讀可能發生serializable :序列化的。避免髒讀,不可重複讀,虛讀的發生select @@tx_isolation; 檢視隔離級別set session transaction isolation level 級別; 設定隔離級別
什麼是事務
一、概念
事務指的是邏輯上的一組操作,這一組操作要不同時成功,要不同時失敗,只要這一組操作裡有一個失敗,意味著這一組都失敗 ---同生共死
二、事務的管理
(MySQL資料庫事務預設是自動提交,Oracle資料庫事務預設是不自動提交)
(一)dos命令列管理事務1.手動開啟事務start tansaction --開啟事務excute 多條 sqlcommit 提交 / rollback 回滾2.設定一個自動提交引數show variables like "%commit%" --檢視與commit相關引數set autocommit = 0; -- 將autocommit引數設定為OFF.
(二)JDBC管理事務JDBC的事務的管理的APIsetAutoCommit(boolean autoCommit); --是自動提交還是手動commit(); --提交事務rollback(); --回滾
(三)建立表,插入3條資料create table account(id int primary key auto_increment,name varchar(20),money double);
insert into account values (null,"張森",10000);insert into account values (null,"鳳姐",10000);insert into account values (null,"如花",10000)
內省1.用來獲取JavaBean的屬性及屬性的get和set方法2.JavaBean就是一個滿足了特定格式的Java類
三、事務特性
原子性:強調事務的不可分割一致性:強調的是事務的執行的前後,資料的完整性要保持一致隔離性:一個事務的執行不應該受到其他事務的干擾永續性:事務一旦結束(提交/回滾)資料就持久保持到了資料庫
四、如果不考慮隔離性,會引發一些安全性問題
1、讀問題髒讀:一個事務讀到另一個事務還沒有提交的資料不可重複讀:一個事務讀到了另一個事務已經提交的update資料,導致在當前的事務中多次查詢資料不一致虛讀/幻讀:一個事務讀到另一個事務已經insert資料,導致當前事務中多次查詢結果不一致
2、寫問題引發兩類丟失更新
五、解決引發的讀問題
設定事務的隔離級別read uncommitted :未提交讀。髒讀,不可重複讀,虛讀都可能發生read committed :已提交讀。避免髒讀,不可重複讀和虛度有可能發生repeatable read :可重複讀。避免髒讀和不可重複讀,虛讀可能發生serializable :序列化的。避免髒讀,不可重複讀,虛讀的發生select @@tx_isolation; 檢視隔離級別set session transaction isolation level 級別; 設定隔離級別