最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫(kù)事務(wù)transaction示例講解教程

 更新時(shí)間:2021年10月26日 17:08:53   作者:數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美  
這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫(kù)事務(wù)transaction的示例講解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

1、什么是事務(wù)?

在這里插入圖片描述

一個(gè)事務(wù)是一個(gè)完整的業(yè)務(wù)邏輯單元,不可再分。
比如:銀行賬戶(hù)轉(zhuǎn)賬,從A賬戶(hù)向B賬戶(hù)轉(zhuǎn)賬10000,需要執(zhí)行兩條update語(yǔ)句:

update t_act set balance=balance-10000 where actno='act-001';
update t_act set balance=balance+10000 where actno='act-0021';

以上兩條DML語(yǔ)句必須同時(shí)成功,或者同時(shí)失敗,不允許出現(xiàn)一條成功,一條失敗。
要想保證以上的兩條DML語(yǔ)句,同時(shí)成功或者同時(shí)失敗,那么就需要使用數(shù)據(jù)庫(kù)的
“事務(wù)機(jī)制”。

2、和事務(wù)相關(guān)的語(yǔ)句只有這3個(gè)DML語(yǔ)句:insert、delete、update

“為什么只有這3個(gè)DML語(yǔ)句:insert、delete、update?”
因?yàn)樗鼈冞@三個(gè)語(yǔ)句都是和數(shù)據(jù)庫(kù)表中的"數(shù)據(jù)相關(guān)"的。事務(wù)的存在是為了保證數(shù)據(jù)的完整性,安全性。

3、假設(shè)所有的業(yè)務(wù)都能使用1條DML語(yǔ)句搞定,還需要事務(wù)機(jī)制嗎?

不需要事務(wù)。
但實(shí)際情況不是這樣的,通常一個(gè)事兒(“事務(wù)”)需要多條DML語(yǔ)句共同聯(lián)合完成。

4、事務(wù)的原理

在這里插入圖片描述

注意:
一旦提交事務(wù),就會(huì)把歷史操作持久化到硬盤(pán)上去,持久化完成后,清空歷史記錄。
一旦回滾事務(wù),就會(huì)把歷史記錄直接清空掉,而不持久化到硬盤(pán)中。
事務(wù)操作,還可以設(shè)計(jì)保存點(diǎn):了解。

5、事務(wù)的四大特性:ACID

在這里插入圖片描述

事務(wù)包括四大特性:ACID
A原子性:事務(wù)是最小的工作單元,不可再分。
C一致性:事務(wù)必須保證多條DML語(yǔ)句,同時(shí)成功或者同時(shí)失敗。
I隔離性:事務(wù)A與事務(wù)B之間具有隔離。
D持久性:持久性指的是最終數(shù)據(jù)必須持久化到硬盤(pán)文件中,事務(wù)才算成功結(jié)束。

下面對(duì)上述事務(wù)四大特性,進(jìn)行一個(gè)更為詳細(xì)的說(shuō)明
“原子性”:一組操作要么都成功,要么都失敗,這一組操作是不可拆分的。
“一致性”:事務(wù)發(fā)生前后,數(shù)據(jù)總額仍然是匹配的。模擬一個(gè)人給另外一個(gè)人轉(zhuǎn)賬來(lái)說(shuō),轉(zhuǎn)賬之前,2人的金額總和為400;轉(zhuǎn)賬以后,2人的金額總額仍為400。
“隔離性”:所有操作沒(méi)有執(zhí)行完畢之前,其它會(huì)話(huà)窗口不能看見(jiàn)中間數(shù)據(jù)的改變過(guò)程,只有當(dāng)前窗口可以看見(jiàn)數(shù)據(jù)改變過(guò)程。
“持久性”:一旦commit提交后,事務(wù)產(chǎn)生的影響就不能夠撤銷(xiāo)了,已經(jīng)實(shí)實(shí)在在把數(shù)據(jù)修改了。

6、關(guān)于事務(wù)之間的隔離性

"事務(wù)的隔離性存在隔離級(jí)別,理論上隔離級(jí)別包括4個(gè)"
隔離級(jí)別一般都是從2級(jí)、3級(jí)起步,1級(jí)一般用不上。

1)第一級(jí)別:讀未提交(read uncommitted)

  對(duì)方的事務(wù)還沒(méi)有提交,當(dāng)前事務(wù)可以讀取到對(duì)方為提交的數(shù)據(jù)。
   讀未提交存在的問(wèn)題:"臟讀現(xiàn)象",表示讀到了臟數(shù)據(jù)。
   "臟讀":指的是一個(gè)事務(wù)正在修改數(shù)據(jù),但是這種修改并沒(méi)有提交到數(shù)據(jù)庫(kù)。
而另一個(gè)事務(wù),訪問(wèn)到了該數(shù)據(jù),此時(shí)這個(gè)數(shù)據(jù)屬于【臟數(shù)據(jù)】,因而叫臟讀。

2)第二級(jí)別:讀已提交(read committed)

   對(duì)方事務(wù)提交后的數(shù)據(jù),我方可以讀取到。
   這種隔離級(jí)別解決了:臟讀現(xiàn)象沒(méi)有了。
   讀已提交存在的問(wèn)題:不可重復(fù)讀。

3)第三級(jí)別:可重復(fù)讀(repeatable read)

   這種隔離級(jí)別解決了:不可重復(fù)讀問(wèn)題。
   這種級(jí)別存在的問(wèn)題:讀取到的數(shù)據(jù)是幻想,即讀取的是備份數(shù)據(jù)。

4)第四級(jí)別:序列化讀/串行化讀(serializable)

   解決了所有問(wèn)題。
   但是效率低,需要事務(wù)排隊(duì)。

"需要注意的是"
oracle數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別是:讀已提交(第二級(jí)別)。
mysq1數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別是:可重復(fù)讀(第三級(jí)別)。

7、演示事務(wù)的隔離級(jí)別(演示數(shù)據(jù)自己造一些)

1)演示事務(wù)之前,需要掌握的知識(shí)點(diǎn)。

1)mysql默認(rèn)情況下,事務(wù)是自動(dòng)提交的。
2)什么是自動(dòng)提交?
   只要是執(zhí)行任意一條DML語(yǔ)句,則自動(dòng)提交一次。
   因此,在演示事務(wù)之前,必須先關(guān)閉自動(dòng)提交。
   "關(guān)閉自動(dòng)提交語(yǔ)句":start transaction;    
3)"演示事務(wù)需要知道的3條命令:"
   -- 關(guān)閉自動(dòng)提交事務(wù)功能。
   start transaction;
  -- 提交事務(wù)。
  commit;
  -- 回滾事務(wù),只能回滾到上一次的提交點(diǎn)。
  rollback;   

2)設(shè)置全局事務(wù)隔離級(jí)別。

"設(shè)置全局事務(wù)隔離級(jí)別,設(shè)置完成后,退出重新登陸。"
-- 設(shè)置第一級(jí)別
set global transaction isolation level read uncommitted;
-- 設(shè)置第二級(jí)別
set global transaction isolation level read committed;
-- 設(shè)置第三級(jí)別(系統(tǒng)默認(rèn)的事務(wù)級(jí)別,不用設(shè)置)
set global transaction isolation level repeatable read;
--設(shè)置第四級(jí)別
set global transaction isolation level serializable;

"查看全局事務(wù)隔離級(jí)別"
mysql> select @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| REPEATABLE-READ       |
+-----------------------+
1 row in set, 1 warning (0.00 sec)

3)演示讀未提交。

首先,設(shè)置全局事務(wù)隔離級(jí)別。

在這里插入圖片描述

下面進(jìn)行正式的演示:

4)演示讀已提交

首先,設(shè)置全局事務(wù)隔離級(jí)別。

在這里插入圖片描述

下面進(jìn)行正式的演示:

在這里插入圖片描述

5)演示可重復(fù)讀

首先,設(shè)置全局事務(wù)隔離級(jí)別。

在這里插入圖片描述

下面進(jìn)行正式的演示:

在這里插入圖片描述

這個(gè)需要注意:

這里演示的是"可重復(fù)讀",我們?cè)谟疫叴翱谘菔臼聞?wù)的一些列過(guò)程,左邊窗口
根本無(wú)法讀取,左邊窗口讀取到的,始終是原始數(shù)據(jù)的備份數(shù)據(jù)。

怎么理解呢?

你別忘記了,左邊窗口,也是開(kāi)啟事務(wù)功能了的,start transaction;只要
是左邊這個(gè)窗口的事務(wù)功能,沒(méi)有結(jié)束(commit或者rollback都可以結(jié)束事務(wù)),那
么左邊窗口讀取到的,始終是原始數(shù)據(jù)的備份數(shù)據(jù),這就是我們所說(shuō)的"幻想"。任
憑右邊黑窗口中做了任何改變,就算你也提交了事務(wù),我左邊窗口,就是看不到。

左邊黑窗口,要怎么才可以看見(jiàn)這個(gè)變化呢?"

只有左邊這個(gè)黑窗口,先結(jié)束了當(dāng)前黑窗口的事務(wù),重新再次讀取,就可以看
到數(shù)據(jù)是真實(shí)變化了。 

6)演示序列化讀

首先,設(shè)置全局事務(wù)隔離級(jí)別。

在這里插入圖片描述

下面進(jìn)行正式的演示:
第一幅圖:

在這里插入圖片描述

當(dāng)左邊窗口,使用"commit"命令,提交事務(wù)以后,我們?cè)倏从疫叴翱诘淖兓?/p>

在這里插入圖片描述

以上就是MySQL數(shù)據(jù)庫(kù)事務(wù)transaction示例講解教程的詳細(xì)內(nèi)容,更多關(guān)于MySQL數(shù)據(jù)庫(kù)事務(wù)transaction的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql主從復(fù)制讀寫(xiě)分離的配置方法詳解

    mysql主從復(fù)制讀寫(xiě)分離的配置方法詳解

    一般來(lái)說(shuō)mysql都是通過(guò) 主從復(fù)制(Master-Slave)的方式來(lái)同步數(shù)據(jù),再通過(guò)讀寫(xiě)分離(MySQL-Proxy)來(lái)提升數(shù)據(jù)庫(kù)的并發(fā)負(fù)載能力 這樣的方案來(lái)進(jìn)行部署與實(shí)施的。
    2018-04-04
  • MySQL模糊查找like通配符使用(小白入門(mén)篇)

    MySQL模糊查找like通配符使用(小白入門(mén)篇)

    這篇文章主要為大家介紹了MySQL模糊查找like通配符使用的小白入門(mén)篇學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 一文帶你搞懂MySQL的事務(wù)隔離級(jí)別

    一文帶你搞懂MySQL的事務(wù)隔離級(jí)別

    這篇文章主要給大家介紹了MySQL事務(wù)隔離級(jí)別,事務(wù)隔離級(jí)別分別是讀未提交,讀已提交,可重復(fù)讀,串行化,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-07-07
  • 解決Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò)

    解決Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò)"1251"的問(wèn)題分析

    這篇文章主要介紹了解決Navicat Premium 連接 MySQL 8.0 報(bào)錯(cuò)"1251"的問(wèn)題分析,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • MySQL億級(jí)大表安全添加字段的三種方案

    MySQL億級(jí)大表安全添加字段的三種方案

    面對(duì)?1.35億條數(shù)據(jù)?的?MySQL?表添加字段,傳統(tǒng)?ALTER?TABLE?可能導(dǎo)致長(zhǎng)時(shí)間鎖表,嚴(yán)重影響業(yè)務(wù),本文將提供一套完整的?零停機(jī)方案,涵蓋?Online?DDL?優(yōu)化、專(zhuān)業(yè)工具使用?和?Java?應(yīng)用層配合策略,需要的朋友可以參考下
    2025-03-03
  • 淺談Mysql指定順序排序查詢(xún)

    淺談Mysql指定順序排序查詢(xún)

    給大家用過(guò)實(shí)例分析了Mysql查詢(xún)中指定順序排序的相關(guān)技術(shù)問(wèn)題,需要的朋友參考一下吧。
    2017-12-12
  • 解決Windows安裝mysql時(shí)提示MSVCR120.DLL動(dòng)態(tài)庫(kù)缺失問(wèn)題

    解決Windows安裝mysql時(shí)提示MSVCR120.DLL動(dòng)態(tài)庫(kù)缺失問(wèn)題

    在Windows Server 2012系統(tǒng)上安裝MySQL 5.7時(shí)遇到“由于找不到MSVCR120.dll,無(wú)法繼續(xù)執(zhí)行代碼”的錯(cuò)誤,原因是系統(tǒng)缺少部分配置文件,解決方法是下載并安裝vcredist文件
    2025-02-02
  • MySQL查詢(xún)隨機(jī)數(shù)據(jù)的4種方法和性能對(duì)比

    MySQL查詢(xún)隨機(jī)數(shù)據(jù)的4種方法和性能對(duì)比

    從MySQL隨機(jī)選取數(shù)據(jù)也是我們最常用的一種發(fā)發(fā),其最簡(jiǎn)單的辦法就是使用”O(jiān)RDER BY RAND()”,本文介紹了包括ORDER BY RAND()的4種獲取隨機(jī)數(shù)據(jù)的方法,并分析了各自的優(yōu)缺點(diǎn)。
    2014-04-04
  • mysql?dblink跨庫(kù)關(guān)聯(lián)查詢(xún)的實(shí)現(xiàn)

    mysql?dblink跨庫(kù)關(guān)聯(lián)查詢(xún)的實(shí)現(xiàn)

    本文主要介紹了mysql?dblink跨庫(kù)關(guān)聯(lián)查詢(xún)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 使用PDO防sql注入的原理分析

    使用PDO防sql注入的原理分析

    這篇文章主要給大家介紹了關(guān)于使用PDO防sql注入的原理的相關(guān)資料,文中還給大家介紹了使用PDO的注意事項(xiàng),通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評(píng)論

兴山县| 威远县| 阿克陶县| 迁西县| 蕲春县| 化德县| 天长市| 毕节市| 敦煌市| 和田县| 孟村| 白山市| 和林格尔县| 莆田市| 青神县| 新蔡县| 万年县| 明光市| 建平县| 子长县| 宾川县| 盐源县| 德惠市| 信宜市| 诸暨市| 原阳县| 阿拉尔市| 乐安县| 手游| 绥棱县| 陵水| 塔河县| 沙湾县| 北辰区| 英超| 余庆县| 柘荣县| 改则县| 曲阜市| 沂源县| 枞阳县|