亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

Mysql事務處理詳解

2024-07-24 13:14:16
字體:
來源:轉載
供稿:網友

一、Mysql事務概念

 MySQL 事務主要用于處理操作量大,復雜度高的數據。由一步或幾步數據庫操作序列組成邏輯執行單元,這系列操作要么全部執行,要么全部放棄執行。在 MySQL 中只有使用了 Innodb 數據庫引擎的數據庫或表才支持事務。事務用來管理 insert,update,delete 語句。

二、事務特性:Atomicity(原子性)、Consistency(穩定性,一致性)、隔離性(Isolation)和Durability(持續性,可靠性)。這四個特性也簡稱ACID性。

  1.原子性:事務是應用中最小的執行單位,就如原子是自然界最小顆粒,具有不可再分的特征一樣。事務是應用中不可再分的最小邏輯執行體,一組事務,要么成功;要么撤回。

  2.穩定性,一致性:事務執行的結果,必須使數據庫從一個一致性狀態,變到另一個一致性狀態。當數據庫中只包含事務成功提交的結果時,數據庫處于一致性狀態。一致性是通過原子性來保證的。有非法數據(外鍵約束之類),事務撤回。

  3.隔離性:各個事務的執行互不干擾,任意一個事務的內部操作對其他并發的事務,都是隔離的。也就是說:并發執行的事務之間不能看到對方的中間狀態,并發執行的事務之間不能相互影響。事務獨立運行。一個事務處理后的結果,影響了其他事務,那么其他事務會撤回。事務的100%隔離,需要犧牲速度。

  4.持續性,可靠性:持續性也稱為持久性,指事務一旦提交,對數據所做的任何改變,都要記錄到永久存儲器中,通常是保存進物理數據庫。軟、硬件崩潰后,InnoDB數據表驅動會利用日志文件重構修改??煽啃院透咚俣炔豢杉娴?, innodb_flush_log_at_trx_commit 選項 決定什么時候吧事務保存到日志里。

  注意事項:存儲引擎MyISAM不支持事物,存儲引擎InnoDB支持事物。事務只針對對數據數據產生影響的語句有效。show engines 查看mysql鎖支持的數據引擎。

三、讀取數據概念

  1.臟讀(Dirty Reads):所謂臟讀就是對臟數據的讀取,而臟數據所指的就是未提交的數據。一個事務正在對一條記錄做修改,在這個事務完成并提交之前,這條數據是處于待定狀態的(可能提交也可能回滾),這時,第二個事務來讀取這條沒有提交的數據,并據此做進一步的處理,就會產生未提交的數據依賴關系。這種現象被稱為臟讀。

  2.不可重復讀(Non-Repeatable Reads):一個事務先后讀取同一條記錄,但兩次讀取的數據不同,我們稱之為不可重復讀。也就是說,這個事務在兩次讀取之間該數據被其它事務所修改。

  3.幻讀(Phantom Reads):一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據,這種現象就稱為幻讀。

四、事務隔離級別

  修改事務隔離級別語法:
  SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

  1、Read Uncommitted(未授權讀取、讀未提交):這是最低的隔離等級,允許其他事務看到沒有提交的數據。這種等級會導致臟讀。如果一個事務已經開始寫數據,則另外一個事務則不允許同時進行寫操作,但允許其他事務讀此行數據。該隔離級別可以通過“排他寫鎖”實現。避免了更新丟失,卻可能出現臟讀。也就是說事務B讀取到了事務A未提交的數據。SELECT語句以非鎖定方式被執行,所以有可能讀到臟數據,隔離級別最低。

SET session transaction isolation level read uncommitted ;SET global transaction isolation level read uncommitted;/*全局建議不用*/SELECT @@global.tx_isolation;SELECT @@session.tx_isolation;SELECT @@tx_isolation;

  新建一個簡單的student表,設置id和name,num字段,開啟事務1對表新增通過存儲過程,事務不提交,查看當前數據庫事務狀態,可以看到一條數據事務,事務級別為READ UNCOMMITTED:

drop table if exists student;create table student(id int primary key auto_increment comment 'id',name varchar(100) comment '名稱',num int);drop procedure if exists proc_on_sw;delimiter ;;create procedure proc_on_sw()beginstart transaction;insert into student(name,num) value('aaa',1);select * from information_schema.INNODB_TRX;end;;delimiter ;;call proc_on_sw();

  新建事務2,查詢student表,我們在READ UNCOMMITTED級別下,可以看到其他事務未提交的數據:再去查看數據庫事務狀態,我們會看到狀態正常。

start transaction ;select * from student;commit;select * from information_schema.INNODB_TRX;

  2.Read Committed(授權讀取、讀提交):讀取數據的事務允許其他事務繼續訪問該行數據,但是未提交的寫事務將會禁止其他事務訪問該行。該隔離級別避免了臟讀,但是卻可能出現不可重復讀。事務A事先讀取了數據,事務B緊接了更新了數據,并提交了事務,而事務A再次讀取該數據時,數據已經發生了改變。

SET session transaction isolation level read committed ;SET global transaction isolation level read committed; /*全局建議不用*/drop procedure if exists proc_on_up;delimiter ;;create procedure proc_on_up()beginset autocommit=0;update student set name='cc' where id=1;commit;set autocommit=1;end;;delimiter ;;call proc_on_up();select * from student;


  3.repeatable read(可重復讀取):就是在開始讀取數據(事務開啟)時,不再允許修改操作,事務開啟,不允許其他事務的UPDATE修改操作,不可重復讀對應的是修改,即UPDATE操作。但是可能還會有幻讀問題。因為幻讀問題對應的是插入INSERT操作,而不是UPDATE操作。避免了不可重復讀取和臟讀,但是有時可能出現幻讀。這可以通過“共享讀鎖”和“排他寫鎖”實現。

set session transaction isolation level repeatable read;

  4.串行化、序列化:提供嚴格的事務隔離。它要求事務序列化執行,事務只能一個接著一個地執行,但不能并發執行。如果僅僅通過“行級鎖”是無法實現事務序列化的,必須通過其他機制保證新插入的數據不會被剛執行查詢操作的事務訪問到。序列化是最高的事務隔離級別,同時代價也花費最高,性能很低,一般很少使用,在該級別下,事務順序執行,不僅可以避免臟讀、不可重復讀,還避免了幻像讀。

set session transaction isolation level serializable;

      隔離等級   臟讀   不可重復讀   幻讀
      讀未提交   YES   YES      YES
      讀已提交   NO    YES         YES
      可重復讀   NO    NO        YES
      串行化       NO    NO        NO

五、完整例子包括提交和回滾完整例子

drop procedure if exists pro_new;delimiter;;create procedure pro_new(out rtn int)begindeclare err INT default 0;-- 如果出現異常,會自動處理并rollbackdeclare exit handler for sqlexception ROLLBACK ; -- 啟動事務set autocommit=0;start transaction;insert into student(name,num) values(NULL,2.3);-- set err = @@IDENTITY; -- =  獲取上一次插入的自增ID;set err =last_insert_id(); -- 獲取上一次插入的自增IDinsert into student(name,num) VALUEs('ccc',err);-- 運行沒有異常,提交事務commit;-- 設置返回值為1set rtn=1;set autocommit=1;end;;delimiter ;;set @n=1;call pro_new(@n);select @n;


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久伊人日本| 中文字幕亚洲无线码在线一区| 国产精品极品美女在线观看免费| 精品久久在线播放| 欧美性猛交xxxx富婆弯腰| 欧美xxxx做受欧美| 日韩av资源在线播放| 精品日韩美女的视频高清| 7777精品久久久久久| 亚洲男女性事视频| 欧美黄色片在线观看| 日韩av中文在线| 最近中文字幕2019免费| 色七七影院综合| 国产噜噜噜噜久久久久久久久| 久久久久国产精品一区| 国产精品美女视频网站| 亚洲综合日韩中文字幕v在线| 亚洲精品国产精品国自产观看浪潮| 久久久久久久一区二区| 国产va免费精品高清在线| 国产欧美va欧美va香蕉在线| 亚洲午夜未删减在线观看| 欧美高跟鞋交xxxxxhd| 亚洲免费一级电影| 久99久在线视频| 国产精品三级美女白浆呻吟| 精品成人在线视频| 精品久久久久久久久久久久久| 午夜免费在线观看精品视频| 精品美女国产在线| 国产日韩欧美黄色| 国产精品私拍pans大尺度在线| 亚洲性生活视频在线观看| 精品视频在线播放| 欧美午夜美女看片| 国产女精品视频网站免费| 成人性生交大片免费观看嘿嘿视频| 97国产在线视频| 在线视频精品一| 久久精品夜夜夜夜夜久久| 97视频在线观看免费高清完整版在线观看| 色婷婷综合久久久久| 久久视频在线免费观看| 久久精品视频免费播放| 亚洲天天在线日亚洲洲精| 91chinesevideo永久地址| 亚洲一区二区自拍| 亚洲女人天堂网| 精品精品国产国产自在线| 亚洲激情小视频| 国产69精品久久久久99| 久久久久久久电影一区| 精品国产乱码久久久久久天美| 欧美成人精品不卡视频在线观看| 亚洲欧美在线一区| 日韩精品一二三四区| 欧美日韩视频在线| 欧美性色19p| 亚洲最新av网址| 91麻豆桃色免费看| 日本精品视频网站| 国产一区香蕉久久| 欧美一级电影在线| 日韩欧美高清视频| 51午夜精品视频| 亚洲精品99久久久久中文字幕| 久久九九有精品国产23| 国产欧美日韩精品专区| 国产精品成人免费电影| 亚洲免费一级电影| 在线电影欧美日韩一区二区私密| 国产精品69精品一区二区三区| 国产精品99久久久久久白浆小说| 97久久精品人搡人人玩| 成人黄色免费在线观看| 国产精品99久久久久久久久久久久| 97香蕉超级碰碰久久免费的优势| 亚洲综合中文字幕在线| 91亚洲精品久久久久久久久久久久| 亚洲国产婷婷香蕉久久久久久| 国产精品视频白浆免费视频| 91九色单男在线观看| 久久99精品视频一区97| 韩国三级日本三级少妇99| 成人午夜在线视频一区| 久久视频免费观看| 亚洲第一国产精品| 国内精品久久久久伊人av| 欧美最猛黑人xxxx黑人猛叫黄| 色综合久久88色综合天天看泰| 国产精品久久久久久超碰| 国产精品久久久久av| 国产精品va在线播放| 在线国产精品视频| 国产亚洲精品久久久久久牛牛| 91久久精品视频| 久久久国产精品x99av| 久久久久久国产| 日韩成人激情视频| 国产精品1区2区在线观看| 欧美在线视频免费播放| 91久久精品久久国产性色也91| 4438全国亚洲精品在线观看视频| 中文字幕亚洲一区二区三区| 国产99久久久欧美黑人| 欧美风情在线观看| 亚洲www视频| 国产精品视频大全| 国产精品www网站| 成人黄色片网站| 国产精品中文字幕在线观看| 成人国产精品久久久久久亚洲| 国产精品一区二区3区| 97热精品视频官网| 日韩一区二区在线视频| 午夜精品久久久久久久99热浪潮| 欧美日本高清视频| 国产性色av一区二区| 亚洲男人天堂古典| xxxx欧美18另类的高清| 91免费的视频在线播放| 免费91在线视频| 亚洲国产欧美一区二区丝袜黑人| 日韩av成人在线观看| 亚洲性69xxxbbb| 国产精品视频中文字幕91| 欧美体内谢she精2性欧美| 国产精品偷伦免费视频观看的| 91久久久国产精品| 国产美女91呻吟求| 亚洲欧美日韩成人| 亚洲欧美精品中文字幕在线| 国产精品丝袜白浆摸在线| 欧美精品激情在线观看| 日本精品久久中文字幕佐佐木| 97视频在线免费观看| 国产一区二区在线播放| 亚洲摸下面视频| 亚洲综合色激情五月| 国产日韩综合一区二区性色av| 69av视频在线播放| 国产成人激情小视频| 精品中文字幕在线2019| 日韩av黄色在线观看| 亚洲区在线播放| 成人免费高清完整版在线观看| 国产精品久久久久久久av大片| 亚洲欧美一区二区三区久久| 精品中文字幕视频| 中文字幕亚洲二区| 欧美日韩激情视频| 国产美女主播一区| 亚洲欧洲美洲在线综合| 97香蕉久久超级碰碰高清版| 久久精品国产欧美亚洲人人爽| 日韩美女av在线免费观看| 亚洲bt天天射| 91精品综合久久久久久五月天| 亚洲欧美在线免费观看| 久久精品视频99| 国产美女久久精品香蕉69| 亚洲天堂av网| 91热精品视频|