真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解MySQL中的事務(wù)

今天就跟大家聊聊有關(guān)如何理解MySQL中的事務(wù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了金安免費(fèi)建站歡迎大家使用!

事務(wù)又叫做TCL,全稱是transaction control  language,意思是事務(wù)控制語言。

一、事務(wù)的理解

張三有1000塊錢,李四也有1000塊錢,張三給李四500,還剩下500,李四此時就有1500。我們想象著會執(zhí)行下面的mysql語句:

update table user set money=500 where name = "張三";  update table user set money=1500 where name = "李四";

但是在計算機(jī)中可能會不一樣??赡苌厦嬲Z句執(zhí)行了下面的沒有執(zhí)行,因此為了保證兩條語句要么都執(zhí)行,要么都不執(zhí)行,這時候就用到了事務(wù)。

事務(wù)的意思是一條或者是一組語句組成一個單元,這個單元要么全部執(zhí)行,要么全不執(zhí)行。

事務(wù)具有四個特性,也是面試??嫉乃膫€特性ACID:

  • A(原子性Atomicity):原子性指的是事務(wù)是一個不可分割的,要么都執(zhí)行要么都不執(zhí)行。

  • C(一致性Consistency):事務(wù)必須使得數(shù)據(jù)庫從一個一致性狀態(tài),到另外一個一致性狀態(tài)。

  • I(隔離性Isolation):指的是一個事務(wù)的執(zhí)行,不能被其他的事務(wù)所干擾。

  • D(持久性Durability):持久性指的是一個事務(wù)一旦提交了之后,對數(shù)據(jù)庫的改變就是永久的。

二、創(chuàng)建一個事務(wù)

事務(wù)其實可以劃分為兩大類:隱式的事務(wù)和顯示的事務(wù):

  • 隱式的事務(wù)很簡單,比如我們的insert、delete、update、select這些語句都是隱式的事務(wù)。

  • 顯示的事務(wù)指的是帶有很明顯的開始和結(jié)束的標(biāo)記,下面就來創(chuàng)建一個顯示的事務(wù)。

步驟一:禁用步驟提交功能

set autocommit = 0;

步驟二:開啟一個事務(wù)

start transaction;

步驟三:sql語句

update table user set money=500 where name = "張三";  update table user set money=1500 where name = "李四";

步驟四:結(jié)束事務(wù)

commit(提交)或者是rollback(回滾)。如果確定我們的語句沒有問題,那么我們就可以commit,如果認(rèn)為我們的語句有問題,那就rollback。

如何理解MySQL中的事務(wù)

在這里新建了一個表,然后插入了兩條數(shù)據(jù)。下面我們使用事務(wù),來更新一下:

如何理解MySQL中的事務(wù)

在這里我們使用的是commit進(jìn)行提交。當(dāng)然如果突然發(fā)現(xiàn)我們之前的操作有錯誤,那就可以使用rollback。

三、事務(wù)的隔離級別

上面的事務(wù)在單個情況下一般不會出現(xiàn)什么問題,但是如果同時運(yùn)行多個,就會出現(xiàn)問題了。我們知道并發(fā)操作總是會出現(xiàn)各種各樣的問題,對于事務(wù)來說就會出現(xiàn)下面三個典型的問題:

(1)臟讀

有倆事務(wù)T1,T2。如果T1讀了一條數(shù)據(jù),這條數(shù)據(jù)是T2更新的但是還沒提交,突然T2覺得不合適進(jìn)行事務(wù)回滾了,也就是不提交了。此時T1讀的數(shù)據(jù)就是無效的數(shù)據(jù)。

(2)不可重復(fù)讀

有倆事務(wù)T1,T2。如果T1讀了一條數(shù)據(jù),之后T2更新了這條數(shù)據(jù),T1再次讀取就發(fā)現(xiàn)值變了。

(3)幻讀

有倆事務(wù)T1,T2。如果T1讀了一條數(shù)據(jù),之后T2插入了一些新的數(shù)據(jù),T1再次讀取就會多出現(xiàn)一些數(shù)據(jù)。

如何去解決這些問題呢?既然多個事務(wù)同時運(yùn)行不好,那就把他們隔離開來。這時候就用到了事務(wù)的隔離性。

如何理解MySQL中的事務(wù)

mysql默認(rèn)的事務(wù)隔離級別為repeatable-read,Oracle默認(rèn)的是read-committed,

想要去演示事務(wù)的隔離級別也很簡單,只需要開啟兩個客戶端演示就OK了,在這里就不說了。

看完上述內(nèi)容,你們對如何理解MySQL中的事務(wù)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)站題目:如何理解MySQL中的事務(wù)
鏈接分享:http://weahome.cn/article/gihohi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部