校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Mysql事務處理詳解

Mysql事務處理詳解

熱門標簽:400電話申請什么好 電銷機器人價格多少錢一臺 龍圖酒吧地圖標注 怎么申請400電話申請 百度地圖標注地方備注 電話機器人免費嗎 地圖標注圖標素材入駐 怎么辦理400電話呢 好搜地圖標注

一、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()
begin
start 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()
begin
set 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)
begin
declare err INT default 0;
-- 如果出現異常,會自動處理并rollback
declare 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(); -- 獲取上一次插入的自增ID
insert into student(name,num) VALUEs('ccc',err);
-- 運行沒有異常,提交事務
commit;
-- 設置返回值為1
set rtn=1;
set autocommit=1;
end
;;
delimiter ;;
set @n=1;
call pro_new(@n);
select @n;

您可能感興趣的文章:
  • 通過實例分析MySQL中的四種事務隔離級別
  • 解決Mysql收縮事務日志和日志文件過大無法收縮問題
  • mysql的存儲過程、游標 、事務實例詳解
  • PHP mysqli事務操作常用方法分析
  • Mysql事務操作失敗如何解決
  • MySQL四種事務隔離級別詳解
  • NodeJs使用Mysql模塊實現事務處理實例
  • MySQL數據庫事務隔離級別詳解
  • MySQL事務的基礎學習以及心得分享

標簽:撫順 內江 防疫工作 溫州 固原 汕尾 廣西 浙江

巨人網絡通訊聲明:本文標題《Mysql事務處理詳解》,本文關鍵詞  Mysql,事務處理,詳解,Mysql,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql事務處理詳解》相關的同類信息!
  • 本頁收集關于Mysql事務處理詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产成人a级片| 欧美日韩黄色一区二区| 久久香蕉国产线看观看99| 全国精品久久少妇| 欧美一级夜夜爽| 激情小说欧美图片| 久久久亚洲综合| 成人精品gif动图一区| 国产精品青草久久| 色综合婷婷久久| 亚洲一区二区欧美| 色8久久精品久久久久久蜜| 亚洲一区二区黄色| 欧美电影免费观看高清完整版在线 | 91精品国产91久久综合桃花| 777欧美精品| 1区2区3区欧美| 欧美日韩视频专区在线播放| 秋霞午夜鲁丝一区二区老狼| 欧美精品一区二区三区视频| 成人av在线网| 亚洲高清视频的网址| 精品国产a毛片| 91在线小视频| 麻豆成人在线观看| 中文字幕在线免费不卡| 欧美日韩免费不卡视频一区二区三区| 美日韩一区二区三区| 欧美激情一区在线| 欧美日韩日日摸| 国产精品 日产精品 欧美精品| 亚洲视频一区二区在线| 欧美一级欧美一级在线播放| 成人白浆超碰人人人人| 日韩不卡一二三区| 国产精品成人免费在线| 欧美一区二区精品久久911| 成人爱爱电影网址| 久久国产尿小便嘘嘘尿| 亚洲免费三区一区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 99热精品一区二区| 日产国产高清一区二区三区| 欧美性猛交一区二区三区精品 | 日韩视频免费观看高清完整版在线观看| 精品日产卡一卡二卡麻豆| 蜜桃一区二区三区在线观看| 亚洲欧洲国产专区| 久久亚洲捆绑美女| 成av人片一区二区| 国产伦精品一区二区三区视频青涩| 尤物av一区二区| 国产精品福利一区二区| 成人av电影观看| 午夜欧美一区二区三区在线播放| 欧美三级韩国三级日本三斤| 亚洲一区二三区| 色综合久久久网| 国产91精品免费| 国产精品成人免费精品自在线观看| 久久99久久久欧美国产| www成人在线观看| 欧美三级中文字| 欧美美女bb生活片| 视频一区欧美日韩| 亚洲综合久久久久| 亚洲私人影院在线观看| 国产精品天天摸av网| 久久久久综合网| 日韩免费看的电影| 日韩一区二区电影在线| 欧美一区二区三区人| 欧美精品在线观看播放| 91福利国产精品| 欧美在线影院一区二区| 在线一区二区视频| 欧美亚洲高清一区| 欧美性视频一区二区三区| 色吧成人激情小说| 日本韩国精品一区二区在线观看| 91在线观看下载| 91老师国产黑色丝袜在线| 97久久久精品综合88久久| 99re8在线精品视频免费播放| 国产成人啪午夜精品网站男同| 韩国女主播成人在线| 国产又黄又大久久| 高清在线成人网| av男人天堂一区| 91福利在线观看| 欧美人牲a欧美精品| 欧美一区二区三区在线观看视频| 日韩一区二区在线免费观看| 精品剧情在线观看| 久久久久久久av麻豆果冻| 国产精品欧美综合在线| 一区二区三区小说| 日日骚欧美日韩| 久久不见久久见中文字幕免费| 国产成人av在线影院| 国产成人啪免费观看软件| 91玉足脚交白嫩脚丫在线播放| 91亚洲精品久久久蜜桃网站| 91黄视频在线观看| 亚洲精品大片www| 日日摸夜夜添夜夜添国产精品 | 日韩亚洲欧美在线| 91福利视频在线| 欧美人成免费网站| 欧美一级免费观看| 日韩三级精品电影久久久| 欧美日韩久久不卡| 精品国产乱码久久| 亚洲图片激情小说| 亚洲一级片在线观看| 国产一二三精品| 亚洲第一av色| 麻豆一区二区三| 成人动漫中文字幕| 日韩手机在线导航| 亚洲色图制服丝袜| 久久国产综合精品| 色久优优欧美色久优优| 久久久久久久久久久久电影| 亚洲人成网站色在线观看| 久久99久久99小草精品免视看| eeuss国产一区二区三区| 日韩一级片在线播放| 亚洲色图清纯唯美| 国内外精品视频| 欧美日韩亚洲不卡| 国产精品久久久久久久久晋中 | 亚洲一区二区成人在线观看| 久久国产精品一区二区| 一道本成人在线| 久久久777精品电影网影网 | 精品久久五月天| 日韩精品乱码av一区二区| 欧美怡红院视频| 91精品国产综合久久香蕉的特点| 国产成人免费av在线| 日韩欧美精品三级| 国产河南妇女毛片精品久久久| 国产一区二区主播在线| 国产成人综合在线| 欧美日韩在线直播| 欧美影院一区二区三区| 91视频观看视频| 成人高清免费观看| 日韩精品成人一区二区在线| 久久在线观看免费| 日韩欧美亚洲国产另类| 成人激情免费电影网址| 99精品国产一区二区三区不卡| 国产原创一区二区三区| 日本高清无吗v一区| 成人涩涩免费视频| 六月丁香婷婷久久| 国产女同性恋一区二区| 欧美在线观看视频一区二区 | 91在线观看美女| 久久老女人爱爱| 亚洲欧洲成人精品av97| 亚洲国产精品人人做人人爽| 国产精品免费久久| 精品国产一区二区三区忘忧草| 91福利在线导航| 欧洲日韩一区二区三区| 免费精品视频在线| 亚洲色图色小说| 国产精品欧美极品| 在线欧美日韩精品| 久久se精品一区二区| 国产精品短视频| 国产精品水嫩水嫩| 不卡高清视频专区| 亚洲靠逼com| 亚洲视频香蕉人妖| 亚洲日本免费电影| 麻豆精品在线看| 高清视频一区二区| 色av成人天堂桃色av| 欧美性受xxxx| 久久久综合精品| 国产精品一区三区| 国产成人精品免费看| 一区二区三区日本| 日韩一区二区免费在线观看| 制服丝袜国产精品| 欧美成人艳星乳罩| 国产欧美日韩三级| 亚洲激情综合网| 成人欧美一区二区三区| 另类专区欧美蜜桃臀第一页| 欧美中文字幕久久| 亚洲欧洲av色图| 91视频免费播放| 亚洲综合久久久久| 欧美在线免费播放| 一区二区在线看|