精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

數據庫事務與鎖機制:十個核心場景 + SQL 實戰案例

數據庫
今天這篇文章,我整理了十個數據庫事務與鎖機制的核心場景,每個場景都配上真實可運行的 SQL 案例,帶你從理論到實戰,徹底搞懂事務 ACID 特性和各種鎖的用法,讓你的系統數據零錯誤!

還在為數據庫事務不一致頭疼?明明加了鎖卻還是出現臟數據?別再讓這些問題拖慢項目進度了!今天這篇文章,我整理了 10 個數據庫事務與鎖機制的核心場景,每個場景都配上真實可運行的 SQL 案例,帶你從理論到實戰,徹底搞懂事務 ACID 特性和各種鎖的用法,讓你的系統數據零錯誤!

一、事務基礎:從 ACID 到隔離級別

1. 什么是事務?用一個轉賬案例說清楚

事務就是一組不可分割的 SQL 操作,要么全成功,要么全失敗。比如轉賬時,A 賬戶扣錢和 B 賬戶加錢必須同時完成:

-- 開啟事務


START TRANSACTION;


-- A賬戶扣100元


UPDATE account SET balance = balance - 100 WHERE id = 1;


-- B賬戶加100元


UPDATE account SET balance = balance + 100 WHERE id = 2;


-- 全部成功則提交


COMMIT;


-- 若有錯誤則回滾


-- ROLLBACK;

為什么必須用事務?

如果沒有事務,當 A 扣錢后系統崩潰,B 賬戶沒加錢,就會導致錢憑空消失!

2. 事務隔離級別:解決并發問題的關鍵

MySQL 默認隔離級別是可重復讀,但不同級別解決的問題不同,用對了能避免臟讀、不可重復讀和幻讀:

隔離級別

臟讀

不可重復讀

幻讀

讀未提交(Read Uncommitted)

可能

可能

可能

讀已提交(Read Committed)

避免

可能

可能

可重復讀(Repeatable Read)

避免

避免

可能

串行化(Serializable)

避免

避免

避免

如何設置隔離級別?

-- 查看當前隔離級別


SELECT @@tx_isolation;


-- 設置會話隔離級別為讀已提交


SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

二、事務實戰:避免數據不一致的 3 個核心場景

3. 轉賬場景:用事務保證原子性

場景:A 向 B 轉賬 100 元,必須保證扣錢和加錢同時成功。

-- 初始化賬戶數據


CREATE TABLE account (


   id INT PRIMARY KEY,


   balance DECIMAL(10,2) NOT NULL

);


INSERT INTO account VALUES (1, 1000), (2, 1000);


-- 事務執行轉賬


START TRANSACTION;


-- A扣錢


UPDATE account SET balance = balance - 100 WHERE id = 1;


-- B加錢


UPDATE account SET balance = balance + 100 WHERE id = 2;


-- 檢查是否有錯誤,無錯誤提交


COMMIT;


-- 若出錯則回滾


-- ROLLBACK;

如果中途出錯?

比如執行完 A 扣錢后數據庫崩潰,事務會自動回滾,A 的余額會恢復,避免損失。

4. 訂單創建:事務嵌套多表操作

場景:創建訂單時,需同時操作訂單表和庫存表,任何一步失敗都要全部回滾。

START TRANSACTION;


-- 1. 創建訂單


INSERT INTO orders (order_no, user_id, total_amount)


VALUES ('20250703001', 1001, 299.00);


-- 2. 扣減庫存


UPDATE product_stock


SET stock = stock - 1


WHERE product_id = 5 AND stock >= 1;


-- 檢查庫存扣減是否成功(影響行數為0則失?。?

IF ROW_COUNT() = 0 THEN

   ROLLBACK; -- 庫存不足,回滾


ELSE

   COMMIT; -- 全部成功,提交


END IF;

關鍵技巧:用ROW_COUNT()判斷更新是否生效,避免超賣問題。

5. 并發查詢:隔離級別如何影響結果?

場景:兩個事務同時查詢并修改同一條數據,不同隔離級別會產生不同結果。

讀未提交(Read Uncommitted):能看到其他事務未提交的數據(臟讀)

-- 事務1

START TRANSACTION;


UPDATE user SET balance = 1000 WHERE id = 1;


-- 事務2(此時能看到事務1未提交的1000)


SELECT balance FROM user WHERE id = 1; -- 結果1000

-- 事務1回滾


ROLLBACK;


-- 事務2再次查詢(數據變回原來的值,產生臟讀)


SELECT balance FROM user WHERE id = 1; -- 結果500

讀已提交(Read Committed):只能看到已提交的數據(解決臟讀,但有不可重復讀)

-- 事務1查詢


START TRANSACTION;


SELECT balance FROM user WHERE id = 1; -- 結果500

-- 事務2修改并提交


START TRANSACTION;


UPDATE user SET balance = 1000 WHERE id = 1;


COMMIT;


-- 事務1再次查詢(結果變了,不可重復讀)


SELECT balance FROM user WHERE id = 1; -- 結果1000

生產建議:互聯網項目常用讀已提交,平衡一致性和性能;金融項目用可重復讀或串行化。

三、鎖機制實戰:解決并發沖突

6. 行鎖:鎖住單行數據,提高并發

場景:秒殺活動中,多個用戶同時搶購同一商品,用行鎖防止超賣。

-- 事務1:用戶A搶購商品5

START TRANSACTION;


-- 悲觀鎖:for update 鎖住行


SELECT stock FROM product_stock


WHERE product_id = 5 FOR UPDATE; -- 假設庫存10

-- 扣減庫存


UPDATE product_stock


SET stock = stock - 1


WHERE product_id = 5;


COMMIT;


-- 事務2:用戶B同時搶購


START TRANSACTION;


-- 此時會等待事務1釋放鎖


SELECT stock FROM product_stock


WHERE product_id = 5 FOR UPDATE; -- 等事務1提交后,庫存顯示9

UPDATE product_stock


SET stock = stock - 1


WHERE product_id = 5;


COMMIT;

原理:FOR UPDATE會對查詢的行加排他鎖,其他事務必須等待鎖釋放才能操作同一行。

7. 表鎖:整表鎖定,適合全表操作

場景:批量更新全表數據時,用表鎖避免其他事務干擾。

-- 加表級寫鎖


LOCK TABLES product_stock WRITE;


-- 批量更新


UPDATE product_stock SET stock = 0;


-- 釋放鎖


UNLOCK TABLES;

注意:表鎖會阻塞所有讀寫操作,慎用!僅適合短時間的全表操作。

8. 間隙鎖:防止插入幻影數據

場景:查詢年齡大于 30 的用戶并修改,防止其他事務插入新的年齡大于 30 的用戶(幻讀)。

-- 事務1:查詢并鎖定間隙


START TRANSACTION;


SELECT * FROM user


WHERE age > 30 FOR UPDATE; -- InnoDB在可重復讀級別下會加間隙鎖


-- 事務2:嘗試插入年齡35的用戶(會被阻塞)


INSERT INTO user (name, age) VALUES ('張三', 35); -- 等待鎖釋放


-- 事務1提交后,事務2才能執行


COMMIT;

原理:間隙鎖會鎖定一個范圍(如 30 到正無窮),阻止在該范圍內插入新數據,解決幻讀問題。

四、死鎖與優化:從排查到解決

9. 死鎖產生與避免:兩個事務互相等待鎖

場景:事務 1 鎖住 A 行等待 B 行,事務 2 鎖住 B 行等待 A 行,導致死鎖。

-- 事務1

START TRANSACTION;


UPDATE account SET balance = balance - 100 WHERE id = 1; -- 鎖id=1的行


-- 事務2

START TRANSACTION;


UPDATE account SET balance = balance - 100 WHERE id = 2; -- 鎖id=2的行


-- 事務1嘗試更新id=2(等待事務2釋放鎖)


UPDATE account SET balance = balance + 100 WHERE id = 2;


-- 事務2嘗試更新id=1(等待事務1釋放鎖,此時死鎖)


UPDATE account SET balance = balance + 100 WHERE id = 1;

解決方法:

  • 統一操作順序:所有事務都先操作 id 小的行
  • 減少鎖持有時間:盡量在事務末尾執行更新操作
  • 設置鎖超時:SET innodb_lock_wait_timeout = 5;(5 秒超時)

10. 樂觀鎖:適合讀多寫少的場景

場景:商品詳情頁頻繁查詢,偶爾更新庫存,用樂觀鎖減少鎖競爭。

-- 表中增加version字段


CREATE TABLE product_stock (


   product_id INT PRIMARY KEY,


   stock INT NOT NULL,


   version INT NOT NULL DEFAULT 0 -- 版本號


);


-- 更新時檢查版本號


UPDATE product_stock


SET stock = stock - 1, version = version + 1

WHERE product_id = 5 AND version = 0; -- 只有版本號匹配才更新


-- 判斷是否更新成功


IF ROW_COUNT() = 0 THEN

   -- 版本號不匹配,說明已被其他事務修改,重試或提示失敗


END IF;

優點:不用加鎖,通過版本號控制,適合高并發讀場景(如商品詳情)。

為什么事務與鎖必須一起學?

事務保證了數據的一致性,而鎖機制是事務并發執行的基礎。不懂鎖的事務設計,就像給房子裝了門卻不裝鎖 —— 看似有保護,實則漏洞百出。這 10 個場景覆蓋了 90% 的實際開發問題:

  • 用對隔離級別,平衡性能和一致性
  • 行鎖 + 間隙鎖解決并發更新和幻讀
  • 樂觀鎖適合高并發讀場景,悲觀鎖適合寫密集場景
  • 死鎖可以通過統一操作順序避免
責任編輯:趙寧寧 來源: 編程江湖
相關推薦

2025-07-31 06:35:00

2012-12-27 09:56:34

IaaSPaaS數據庫

2023-04-20 18:45:44

2024-03-19 14:12:49

數據庫開源SQL

2023-10-07 11:36:15

2024-11-11 10:00:00

2024-08-30 14:21:04

2025-03-27 10:03:17

PythonPandas代碼

2024-11-11 08:00:00

PyTorch深度學習

2024-02-20 14:25:39

Python數據分析

2024-01-30 00:36:41

Python機器學習

2024-10-15 10:40:09

2025-02-20 10:13:54

2025-08-14 02:00:00

2010-12-22 09:16:31

SQL Server專

2022-08-26 09:38:39

Pandas數據查詢

2022-02-11 11:51:08

CI/CD網絡攻擊持續交付

2024-05-17 12:43:49

Python編程開發

2022-12-18 20:07:55

Redis分布式

2023-06-27 15:50:23

Python圖像處理
點贊
收藏

51CTO技術棧公眾號

亚洲aⅴ日韩av电影在线观看| 亚洲一级黄色av| 免费黄色日本网站| 韩国精品视频| 国产麻豆精品在线观看| 91国产高清在线| 99久久99久久精品免费看小说.| 高清一区二区三区av| 亚洲成av人片观看| 神马影院一区二区三区| 亚洲精品久久久狠狠狠爱| 午夜在线一区二区| 欧美成人激情图片网| 久久国产精品无码一级毛片| 激情中国色综合| 图片区小说区区亚洲影院| 亚洲精品乱码视频| 日韩在线视频免费| 国产综合久久久久久久久久久久 | 超碰人人人人人人人| 视频成人永久免费视频| 91久久精品一区二区| 日韩成人手机在线| 欧美性videos| 久久久影院官网| 高清一区二区三区视频| 中文在线资源天堂| 久久国产高清| 国内精品国产三级国产在线专| 香蕉久久久久久久| 国产一区二区三区四区五区| 精品成人佐山爱一区二区| 性chinese极品按摩| 大胆人体一区| 婷婷综合五月天| 成人在线观看毛片| 欧美jizzhd69巨大| 国产精品久久久久久久午夜片| 久精品国产欧美| 高h震动喷水双性1v1| 国产麻豆精品theporn| 国产精品亚洲片夜色在线| 日批视频免费在线观看| 亚洲欧美日韩一区在线观看| 欧美激情一区二区三区在线视频观看 | 久久久久九九精品影院| 欧美性生活影院| 最近免费中文字幕中文高清百度| 99爱在线观看| 午夜影院在线观看欧美| 女人被男人躁得好爽免费视频| 黄网站app在线观看| 国产精品九色蝌蚪自拍| 亚洲精品一区二区三区av| 川上优的av在线一区二区| 久久尤物电影视频在线观看| 美日韩免费视频| 色久视频在线播放| 久久综合久久99| 欧美一区二区三区在线播放 | 久久久之久亚州精品露出| 欧美卡一卡二卡三| 激情视频一区二区三区| 国内精品久久久久影院优 | 精品视频色一区| 少妇一级淫免费放| 亚洲精品毛片| 欧美一区二区三区免费在线看| 伊人色在线视频| 日韩视频一区二区三区四区| 欧美成人福利视频| 亚洲精品在线视频免费观看| 亚洲宅男一区| 一区三区二区视频| 小早川怜子一区二区的演员表| 99久久www免费| 欧美激情a在线| 国产在线拍揄自揄拍无码视频| 国产日韩精品视频一区二区三区| 日本欧美国产在线| 中文字幕乱码一区二区| 国产精品一二三四| 精品日韩欧美| 啊v视频在线| 亚洲欧美成aⅴ人在线观看| av动漫在线播放| 最新欧美色图| 欧美电影一区二区三区| 在线观看免费视频黄| 美女久久99| 久久亚洲精品中文字幕冲田杏梨| 久久综合成人网| 久久精品一区二区国产| 国产又爽又黄的激情精品视频| 性一交一乱一伧老太| 97久久精品人人做人人爽50路| 日本一区二区精品| 国产成人短视频在线观看| av在线免费不卡| 欧美成人综合一区| 成人在线播放免费观看| 高跟丝袜欧美一区| 一二三级黄色片| 伊人久久综合影院| 久久影院模特热| www.com国产| 国产精品一区二区在线观看网站| 久久一区二区精品| 大地资源网3页在线观看| 欧美日韩国产精品一区二区不卡中文| 亚洲第一狼人区| 精品国产导航| 久久久精品免费| 欧美性猛交bbbbb精品| 国产精品综合av一区二区国产馆| 免费h精品视频在线播放| sm国产在线调教视频| 一本色道**综合亚洲精品蜜桃冫| 樱花草www在线| 精品国产91| 亚洲一二三区在线观看| 色婷婷综合久久久久中文字幕| 奇米一区二区| 日韩在线免费av| 中文字幕av影院| 国产精品一区二区在线观看不卡 | 日本乱人伦a精品| 国产91久久久| 一区二区在线观看视频| 少妇一级淫免费播放| 亚洲肉体裸体xxxx137| 欧美国产激情18| 91尤物国产福利在线观看| 久久综合国产精品| 欧美极品欧美精品欧美| 给我免费播放日韩视频| 久久福利网址导航| 91色在线播放| 国产精品久久久久一区二区三区共| aa在线免费观看| 久久porn| 91超碰caoporn97人人| 日本高清视频免费观看| 亚洲福中文字幕伊人影院| 992kp免费看片| 1024精品久久久久久久久| 国产日韩av在线播放| 91精品国产91久久久久游泳池| 色一情一乱一乱一91av| 丝袜美腿中文字幕| 性欧美videos另类喷潮| 日本欧美精品久久久| 影音成人av| 中文字幕v亚洲ⅴv天堂| 亚洲自拍偷拍另类| 国产精品国模大尺度视频| 国产探花在线看| 91超碰成人| 99精彩视频在线观看免费| 污视频网站免费在线观看| 日韩免费观看高清完整版 | 中文字字幕码一二三区| 美女精品在线观看| 欧美日韩一区二区三| 日本精品在线中文字幕| 中文欧美在线视频| 99精品视频在线播放免费| 亚洲最大成人网4388xx| 久久久久麻豆v国产精华液好用吗| 99国产精品久久久久久久| 久久婷婷人人澡人人喊人人爽| 成人短视频app| 中文国产亚洲喷潮| www.国产欧美| 欧美午夜视频在线观看| 久久久久久国产免费a片| 麻豆国产欧美日韩综合精品二区| 国产高清免费在线| 国产精品毛片久久久| 国产成人aa精品一区在线播放 | 久久夜色精品国产亚洲aⅴ| 国产激情视频在线播放| 欧美日韩精品在线| 夜夜春很很躁夜夜躁| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美另类一区二区三区| 久久久久久天堂| 国产日韩欧美激情| 久久久国产精品久久久| 亚洲制服av| 法国空姐在线观看免费| 日韩极品在线| 成人久久久久久久| 欧美伦理91| 俺去啦;欧美日韩| 天堂在线资源8| 91精品国产综合久久久久| 欧美日韩精品区| 亚洲视频网在线直播| 中文字幕影片免费在线观看| 久久爱www久久做| 日韩av综合在线观看| 五月激情综合| 蜜桃麻豆www久久国产精品| 国产成人免费av一区二区午夜 | 亚洲色图美腿丝袜| www.色播.com| 欧美日韩一二三区| 国产无人区码熟妇毛片多| 亚洲视频一区二区在线| 久久人人爽人人爽人人片 | 国产精品揄拍100视频| 国精品**一区二区三区在线蜜桃| 免费黄色日本网站| 亚洲国产二区| 天堂av在线中文| 欧美色蜜桃97| 欧美激情www| 精品资源在线| 97久久精品午夜一区二区| 99精品国自产在线| 日韩av理论片| 中文字幕色婷婷在线视频| 久精品免费视频| 麻豆影视在线观看_| 在线观看免费高清视频97| 邻居大乳一区二区三区| 亚洲国产精品专区久久| 亚洲国产精品二区| 91精品国产一区二区| 亚洲在线精品视频| 欧美视频一区二区三区| 久久夜色精品国产噜噜亚洲av| 亚洲一二三四在线| 久久国产免费观看| 一区二区三区免费看视频| 中国一级片在线观看| 国产精品不卡在线观看| 丁香六月激情综合| 国产午夜精品久久| jizz中文字幕| 国产调教视频一区| 久久丫精品忘忧草西安产品| 久久人人爽人人爽| 国产精品成人无码免费| 欧美激情资源网| 亚洲AV成人无码网站天堂久久| 欧美激情一区二区三区不卡| 国产精品久久久久久久av| 日本一区二区视频在线| 99在线视频免费| 国产精品理论在线观看| 免费一级suv好看的国产网站| 国产精品高潮久久久久无| 亚洲综合视频网站| 亚洲激情男女视频| 久久久久久久中文字幕| 亚洲成a人片在线不卡一二三区 | 在线观看亚洲专区| 超碰在线免费97| 欧美剧情片在线观看| 国产露脸国语对白在线| 欧美成人三级电影在线| 天堂在线观看视频| 亚洲欧洲国产伦综合| 91精品专区| 欧美激情在线有限公司| 625成人欧美午夜电影| 国产精品海角社区在线观看| 国产精品毛片aⅴ一区二区三区| 91免费在线观看网站| 动漫视频在线一区| 欧美日韩大片一区二区三区| 日韩一区二区中文| 成人小视频在线观看免费| 99人久久精品视频最新地址| 精品久久久噜噜噜噜久久图片| 久久av中文字幕片| www.17c.com喷水少妇| 久久综合五月天婷婷伊人| 国精产品一区一区| 午夜精品影院在线观看| 中文字幕一区2区3区| 日韩欧美中文一区二区| 内衣办公室在线| zzjj国产精品一区二区| 2020国产在线| 国产主播在线一区| 国产精品超碰| 亚洲精品成人a8198a| 黑丝一区二区| 国产熟人av一二三区| 国产精品资源在线观看| 亚洲AV无码片久久精品| 亚洲少妇最新在线视频| 国产性猛交╳xxx乱大交| 制服丝袜在线91| 欧美日本网站| 精品综合久久久久久97| 欧美日韩免费观看视频| 高清不卡一区二区三区| 欧美日韩一二| 男女猛烈激情xx00免费视频| 另类小说一区二区三区| 无码人妻精品一区二区三区温州 | 亚洲最新av在线网站| 欧美xxxx做受欧美88bbw| 国产精品久久久久久av下载红粉| 福利电影一区| 伊人久久大香线蕉午夜av| 久久久久久一区二区| 中国免费黄色片| 国产精品免费久久| 在线观看免费av片| 精品人伦一区二区色婷婷| 韩国av网站在线| 国产精品吴梦梦| 免费看日本一区二区| 青青草成人免费在线视频| 国产成人在线电影| 成人高潮免费视频| 欧美日韩精品电影| 欧美理论在线观看| 欧美亚洲第一页| 国产精品chinese在线观看| 最新中文字幕久久| 麻豆精品久久精品色综合| 成人无码av片在线观看| 岛国精品视频在线播放| 免费的黄色av| 国内精品在线一区| 国产调教精品| 大荫蒂性生交片| 成人性生交大片免费 | 欧美体内谢she精2性欧美| xxxx18国产| 欧美精品在线视频观看| 国产精品99久久免费| 亚洲在线色站| 久热成人在线视频| a级黄色免费视频| 欧美亚洲图片小说| 超碰国产在线观看| 国产日韩在线看| 久久免费大视频| 国产福利精品一区二区三区| 国产精品不卡在线观看| 国产伦精品一区二区三区四区| 久久精彩免费视频| 成人午夜888| 日日噜噜夜夜狠狠久久丁香五月| 韩国成人精品a∨在线观看| 黄色一级大片在线免费观看| 91精品欧美一区二区三区综合在| 精品国产白色丝袜高跟鞋| 亚洲自拍小视频| 亚洲黄色一区| 美国黄色a级片| 欧美无人高清视频在线观看| 自拍视频在线免费观看| 91精品免费视频| 国内精品美女在线观看| 插我舔内射18免费视频| 日韩欧美在线一区| 在线免费av电影| 成人性教育视频在线观看| 国产精品v亚洲精品v日韩精品| 白嫩情侣偷拍呻吟刺激| 一本大道久久a久久精品综合| 3p在线观看| 99电影网电视剧在线观看| 国产精品婷婷| 久久av红桃一区二区禁漫| 日韩精品一区二区三区在线播放| 九色porny视频在线观看| 欧洲亚洲一区| 国产精品亚洲人在线观看| 久久精品国产成人av| 色黄久久久久久| 久久久久97| 亚洲综合婷婷久久| 亚洲va韩国va欧美va精品| 日本在线视频1区| 国产日韩精品视频| 尤物精品在线| 国产成人免费观看网站| 日韩欧美第一区| 9i看片成人免费高清| 久久免费一级片| 久久久91精品国产一区二区三区| 国产精品乱码一区二区| 2019中文字幕免费视频| 99久久精品费精品国产风间由美| 中文字幕影片免费在线观看| 欧美日韩国产精品自在自线| h片在线观看视频免费免费| 亚洲资源在线网| 91蜜桃在线免费视频| 国产情侣激情自拍| 国产va免费精品高清在线观看|