日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

第一百三十七期:一个简单的小案例带你理解MySQL中的事务

發布時間:2023/12/10 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一百三十七期:一个简单的小案例带你理解MySQL中的事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

作者:Java的架構師技術棧

事務又叫做TCL,全稱是transaction control language,意思是事務控制語言。這篇文章還是屬于我的mysql基礎文章,在前面我們介紹了下面這些基礎知識:

  • 數據庫的增查改刪操作
  • 數據表的增查改刪操作
  • 數據的增查改刪操作
  • 數據的約束以及增查改刪
  • Mysql中的內置函數

這篇文章還是基礎系列的文章,主要是介紹mysql中的事務,為了保持文章的完整性,就算你沒有看過之前的教程也沒問題。

一、事務的理解

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

  • update?table?user?set?money=500?where?name?=?"張三";??
  • update?table?user?set?money=1500?where?name?=?"李四";?
  • 但是在計算機中可能會不一樣。可能上面語句執行了下面的沒有執行,因此為了保證兩條語句要么都執行,要么都不執行,這時候就用到了事務。

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

    事務具有四個特性,也是面試常考的四個特性ACID:

    • A(原子性Atomicity):原子性指的是事務是一個不可分割的,要么都執行要么都不執行。
    • C(一致性Consistency):事務必須使得數據庫從一個一致性狀態,到另外一個一致性狀態。
    • I(隔離性Isolation):指的是一個事務的執行,不能被其他的事務所干擾。
    • D(持久性Durability):持久性指的是一個事務一旦提交了之后,對數據庫的改變就是永久的。

    二、創建一個事務

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

    • 隱式的事務很簡單,比如我們的insert、delete、update、select這些語句都是隱式的事務。
    • 顯示的事務指的是帶有很明顯的開始和結束的標記,下面就來創建一個顯示的事務。

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

  • set?autocommit?=?0;?
  • 步驟二:開啟一個事務

  • start?transaction;?
  • 步驟三:sql語句

  • update?table?user?set?money=500?where?name?=?"張三";??
  • update?table?user?set?money=1500?where?name?=?"李四";?
  • 步驟四:結束事務

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

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

    在這里我們使用的是commit進行提交。當然如果突然發現我們之前的操作有錯誤,那就可以使用rollback。

    三、事務的隔離級別

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

    (1)臟讀

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

    (2)不可重復讀

    有倆事務T1,T2。如果T1讀了一條數據,之后T2更新了這條數據,T1再次讀取就發現值變了。

    (3)幻讀

    有倆事務T1,T2。如果T1讀了一條數據,之后T2插入了一些新的數據,T1再次讀取就會多出現一些數據。

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

    mysql默認的事務隔離級別為repeatable-read,Oracle默認的是read-committed,

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

    閱讀目錄(置頂)(長期更新計算機領域知識)

    閱讀目錄(置頂)(長期更新計算機領域知識)

    閱讀目錄(置頂)(長期科技領域知識)

    歌謠帶你看java面試題

    總結

    以上是生活随笔為你收集整理的第一百三十七期:一个简单的小案例带你理解MySQL中的事务的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。