8.2.事物

開啟事物:當(dāng)開啟事物之后,數(shù)據(jù)只會在臨時表修改,如果不提交,那么關(guān)閉窗口之后,事物就會自動回滾
START TRANSACTION;
如果發(fā)現(xiàn)錯誤,執(zhí)行回滾,就不會講數(shù)據(jù)提交給正式表
ROLLBACK;
如果沒有錯誤,那么就提交數(shù)據(jù)
COMMIT;

---------------------------
在mysql中一條語句會自動提交
為1代表自動提交

image.png

---將參數(shù)改為0,就是一條語句不默認(rèn)提交,除非commit
set @@autocommit=0;

ps:mysql是自動提交一條語句,而Oracle是手動提交一條語句


事物的四大特征

1.原子性:是不可分割的最小操作單位,要么同時成功,要么同時失敗
2.持久性:如果事物一旦提價或者回滾,數(shù)據(jù)庫會持久化的保存數(shù)據(jù)
3.隔離性:多個事物之間相互獨立
4.一致性:事物操作前后,數(shù)據(jù)總量不變

事物的隔離級別

//多個事物操作同一批數(shù)據(jù)可能引發(fā)的問題
1.臟讀:一個事物讀取到另一個事物中沒有提交的事物
2.不可重復(fù)讀(虛讀):在同一個事物中,兩次讀取到的數(shù)據(jù)不一樣
3.幻讀:一個事物操作(DML)數(shù)據(jù)表中所有記錄,另一個事物添加了一條數(shù)據(jù),則第一個事物查詢不到自己的修改
事物的隔離級別:安全性越來越高,效率越來越低
1.read uncommitted:讀未提交的
        產(chǎn)生的問題:臟讀,不可重復(fù)讀,幻讀
2.read committed:讀已提交的(oracle默認(rèn))
        產(chǎn)生的問題:不可重復(fù)讀,幻讀
3.repeatable read:可重復(fù)讀(mysql默認(rèn))
         產(chǎn)生的問題:幻讀
        為什么會產(chǎn)生不可重復(fù)讀問題?
                當(dāng)兩個窗口設(shè)置為read committed的時候,第一個窗口開啟了事
務(wù),然后修改數(shù)據(jù)但是未提交,
這個時候,第二個窗口查詢的是原來的數(shù)據(jù),然后第一個窗口提交數(shù)據(jù),第
二個窗口再次查詢數(shù)據(jù),查詢到的是修改后的數(shù)據(jù),
這樣兩次查詢出來的數(shù)據(jù)就不一樣,所以就叫不可重復(fù)讀!
              當(dāng)設(shè)置為可重復(fù)讀之后,兩個窗口都開啟事物,第一個窗口修改數(shù)據(jù)
但是未提交,第二個窗口查詢數(shù)據(jù)也未提交,這個時候查詢的是未修改的數(shù)
據(jù),然后第一個窗口提交數(shù)據(jù),但是第二個窗口再次查詢數(shù)據(jù),仍然未提交
事務(wù),這個時候查詢的仍然是未修改的數(shù)據(jù),這樣第二個窗口兩次查詢到的
都是未修改的數(shù)據(jù),數(shù)據(jù)保持一致,這就叫可重復(fù)讀!當(dāng)把第二個窗口的
事務(wù)提交之后,再次查詢才能夠查詢到提交之后的數(shù)據(jù)

4.serializable:串行化
        可以解決所有的問題
        當(dāng)?shù)谝粋€事物操作這張表,它會鎖住這張表,不讓另外的事務(wù)訪問,這
個事物會一直暫停在這里,除非第一個事物提交或者回滾
數(shù)據(jù)庫查詢隔離級別
select @@tx_isolation;
數(shù)據(jù)庫設(shè)置隔離級別,必須關(guān)閉當(dāng)前窗口之后才會生效
set global transaction isolation level 級別字符串;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 為了充分發(fā)揮MySQL的性能并順利地使用,就必須理解其設(shè)計。MySQL的靈活性體現(xiàn)在很多方面。例如,你可以通過配置...
    李文文丶閱讀 1,313評論 0 4
  • 今天看到一位朋友寫的mysql筆記總結(jié),覺得寫的很詳細(xì)很用心,這里轉(zhuǎn)載一下,供大家參考下,也希望大家能關(guān)注他原文地...
    信仰與初衷閱讀 4,826評論 0 30
  • 事物 事務(wù)執(zhí)行是一個整體,所有的 SQL 語句都必須執(zhí)行成功。如果其中有 1 條 SQL 語句出現(xiàn)異常,則所有的S...
    哈哈大圣閱讀 511評論 0 1
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復(fù) [日期:2016-11-29] 來源:Linux社區(qū) 作...
    陽屯okyepd閱讀 3,835評論 0 7
  • 1.檢查接口 1.功能說明:檢查園區(qū)名稱是否重復(fù) 2.請求方式:GET 3.請求URL: 4.請求參數(shù): 5.返回...
    陳麗富閱讀 374評論 0 0

友情鏈接更多精彩內(nèi)容