mysql事務(wù)知識點分析

這篇文章主要講解了“MySQL事務(wù)知識點分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql事務(wù)知識點分析”吧!

專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)石河子免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

1.  事務(wù)

1.1.  事務(wù)的特性

InnoDB存儲引擎支持事務(wù),默認(rèn)自提交模式,如要開啟事務(wù),必須以begin命令開始,以commit或者rollback結(jié)束。

事務(wù)特性

l  原子性(Atomiity):要么都做,要么都不做。

l  一致性(Consistency):操作前后滿足業(yè)務(wù)規(guī)則約束。

l  隔離性(Isolation):多個并發(fā)事務(wù)互不影響。

l  持久性(Durabili):事務(wù)結(jié)束,對數(shù)據(jù)的修改是持久的。

1.2.  事務(wù)語句

事務(wù)開啟語句由begin或start transaction(read write|read only)命令開始,結(jié)束用commit或rollback顯示結(jié)束。

隱式提交:DDL操作或再次輸入begin和start transaction命令。

隱式回滾:退出會話、連接超時、關(guān)機(jī)等。

關(guān)閉自提交特性(set autocommit=0)

開啟自提交特性(set autocommit=1)

關(guān)閉自動提交好處:不用一個事務(wù)一次提交,多個事務(wù)一起體驕傲,提高處理能力。

關(guān)閉自提交壞處:如一事務(wù)長期不提交,導(dǎo)致行鎖等待,影響數(shù)據(jù)庫TPS值。

不建議關(guān)閉自提交模式。

1.3.  truncate和delete的區(qū)別

truncate 是DDL,事務(wù)中不能回滾,會清空表的自增屬性,回到原始開始值。

delete是DML

共同點:清空表內(nèi)數(shù)據(jù),

1.4.  事務(wù)的隔離級別

SQL標(biāo)準(zhǔn)的4鐘隔離級別

n  讀未提交(read uncommitted),RU,一個事務(wù)可以讀取到其他事務(wù)未提交的數(shù)據(jù)變化,叫臟讀,生產(chǎn)環(huán)境不建議使用。

n  讀已提交(read committed),RC,一個事務(wù)可以讀其他事務(wù)已提交的數(shù)據(jù)變化,叫不可重復(fù)讀,是Oracle默認(rèn)事務(wù)隔離級別。

n  可重復(fù)讀(repetable read),RR,一個事務(wù)中,直到事務(wù)結(jié)束前,都可以反復(fù)讀取到事務(wù)剛開始時看到的數(shù)據(jù),并一直不發(fā)生變化,避免了臟讀、不可重復(fù)讀、幻讀現(xiàn)象的發(fā)生。mysql默認(rèn)事務(wù)隔離級別。

n  串行(serializable),在每個讀的數(shù)據(jù)行上都加表級共享鎖,在每次寫數(shù)據(jù)時都要加表級排他鎖。造成InnoDB的并發(fā)能力下降、大量超時和鎖競爭的發(fā)生,不建議用到生產(chǎn)環(huán)境。

查看當(dāng)前庫隔離級別

[mysql]>show variables like '%tx_isolation%';

+---------------+-----------------+

| Variable_name | Value           |

+---------------+-----------------+

| tx_isolation  | REPEATABLE-READ |

+---------------+-----------------+

修改全局或當(dāng)前會話的事務(wù)隔離級別

set global|session transaction isolation level

1.5.  臟讀、不可重復(fù)讀、幻讀、可重復(fù)讀

1.5.1.  臟讀

RU,一個事務(wù)讀取別的事務(wù)未提交的數(shù)據(jù)。

1.5.2.  不可重復(fù)讀與幻讀

不可重復(fù)讀:一個事務(wù)讀取到其他事務(wù)針對舊數(shù)據(jù)的修改記錄,常見(update,delte)。

幻讀:一個事務(wù)讀取到其他事務(wù)新增數(shù)據(jù),常見(insert),允許出現(xiàn)在已提交事務(wù)的隔離級別中。

1.5.3.  可重復(fù)讀

可重復(fù)讀是mysql默認(rèn)事務(wù)隔離級別,消除臟讀、不可重復(fù)讀、幻讀等現(xiàn)象,很好保證事務(wù)的一致性。

如在本事務(wù)想讀取別的新增數(shù)據(jù),可如下:

查詢:select * from t for update;

本事務(wù)提交一次:commit;

感謝各位的閱讀,以上就是“mysql事務(wù)知識點分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對mysql事務(wù)知識點分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當(dāng)前題目:mysql事務(wù)知識點分析
分享路徑:http://bm7419.com/article40/jcspho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、關(guān)鍵詞優(yōu)化外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版響應(yīng)式網(wǎng)站、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)