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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql事务中怎么更改空值_MySQL事务

發布時間:2023/12/2 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql事务中怎么更改空值_MySQL事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.事務

1.事務特性--ACID

Atomicity(原子性):要么全做,要么不做,不能只做一半(銀行轉賬)

Consistency(約束性):事務的前后,約束都能滿足

Isolation(依賴性):事務之間是獨立的,互不影響的

Durability(持久性):事務執行之后,事物的結果可以持久保存

2.事務隔離級別:

read uncommitted:可以讀到未提交的事務結果

read committed:只能讀已提交事務的結果

repeatable reads:可以讀到開啟事務時的值

serializable:兩個事務同時發生,必定是有先后的

3.實踐操作的準備

使用Join and Group中兩個表,向product表中新添一個字段count,用來記錄產品數量

2.Read Commit

預熱:查詢一下當前數據庫的事務隔離級別,保證事務隔離級別是read-commited

我的數據庫是Mysql5.5,默認事務隔離級別是repeatable-read,所以將其修改為read-commited

1.首先開啟兩個事務--事務A,事務B(注意這里如果使用可視化界面,例如Heidi,可能兩個窗口并不是真正的開啟了兩個事務,所以建議使用cmd來測試)

開啟事務A -> 將自動提交設為否(似乎5.5以上版本事務隔離級別高,不自動提交) -> 查詢productId=4的count

事務A:

開啟事務B,執行與事務A同樣的操作

事務B:

2.在事務B中操作,將productId=4的count更改為49,但是不提交事務

事務B:

3.此時在事務A中查詢一下count值,看在事務B更改數據但是未提交的情況下,事務A是否能查看到更新后的數據

事務A:

結果:事務A不能查看到事務B未提交的數據

4.將事務B提交,操作事務A,看是否能查詢到更新后的數據

事務A:

結果:事務B提交后,事務A能查詢到更新后的數據了

結論:當事務隔離級別為read-commited時,一個事務只能讀取到另一事務已提交的數據

3.Repeatable-read

預熱:查詢并將事務隔離級別修改為repeatable-read,將數據庫中count字段初始化為50

1.分別在開啟事務A,事務B

事務A:

事務B:

2.在事務B端更改count值,但是不提交事務

事務B:

操作事務A查詢count,發現查詢結果沒變

事務A:

3.提交事務B,并且操作事務A查看count,發現查詢到的count值依然沒變

事務B:

事務A:

結論:當事務隔離級別為repeatable-read時,一個事務只能讀到開啟本事務時讀到的數據,無法讀取其他事務更新的數據

4.Serializable

預熱:查詢并將事務隔離級別更改為serializable,將product表中count更改為50

1.分別開啟事務A,事務B

2.在事務B端執行更新操作

事務B:發現沒有一直處于執行中,并沒有執行成功

2.將事務A提交后,發現事務B更新成功

事務A:

事務B:

3.再提交事務B,操作事務A

事務B:

事務A:

結論:在serilizalbe級別下,select語句不僅會開啟事務,還會降數據鎖上,只允許其他事務查詢,不允許更改

5.For update

事務隔離級別沒必要提升到serilizable,只需要使用read-committed,select語句加for update即可

預熱:將事務隔離級別更改為read-committed

1.開啟事務A,并將查詢語句中加入for update

事務A:

事務B:

結果:只有當事務A提交之后,事務B才能查詢到數據

結論:在select語句中加入for update時,只有當次事務提交之后,其他事務才能查詢數據,for update會將數據加鎖,防止其他事務操作發生數據不一致

6.樂觀鎖

在語句中加入版本控制,如果版本是當前版本則可以進行修改,否則進行回滾,還有加鎖可是很浪費時間的哦

轉發一篇文章悲觀鎖和樂觀鎖;,自己很喜歡的公眾號---碼農翻身

7.例題

總結

以上是生活随笔為你收集整理的mysql事务中怎么更改空值_MySQL事务的全部內容,希望文章能夠幫你解決所遇到的問題。

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