MySQL之基礎事務

目錄

引言:

什么是事務?

事務和鎖

mysql數據庫控制臺事務的幾個重要操作指令(transaction.sql)

1、事物操作示意圖:

2.事務的隔離級別?

四種隔離級別:

總結一下隔離指令

1. 查看當前隔離級別??

2.設置隔離級別??

??(1) 設置當前會話(臨時生效)

??(2) 設置全局(需管理員權限)??

3.修改默認級別

3.ACID 特性

1.原子性 (Atomicity)??

??2. 一致性 (Consistency)??

??3. 隔離性 (Isolation)??

??4. 持久性 (Durability)??


??類別????SQL 語句示例????作用??
??DML??INSERT,?UPDATE,?DELETE??操作數據??(增刪改查)
??DDL??CREATE,?ALTER,?DROP??定義數據庫結構??(如表、索引、視圖等)
??DCL??GRANT,?REVOKE??控制訪問權限??
??TCL??COMMIT,?ROLLBACK??管理事務?

引言:

  • 什么是事務?

事務就是用于保證數據的一致性,她由一組相關的dml語句組成,該組的dml語句要么全部成功,要么全部失敗。如:轉賬就必須保證事務的一致性。

比如我這里有兩個指令:

-- 轉賬人
update balance set balance=balance-100 where id = 1--收款人
update balance set balance=balance+100 where id = 2

?如何保證兩條語句同時執行成功?

  • 事務和鎖

當執行操作(dml語句) ,mysql會在表上加鎖,防止其他用戶修改表的數據,這對用戶來說是非常重要的

  • mysql數據庫控制臺事務的幾個重要操作指令(transaction.sql)

1.start transaction --開啟一個事務

2.savepoint 自定義保存點的名稱 --設置保存點

3.rollback ro 自定義保存點名稱 --回退事務

4.rollback --回退全部事務,回到事務開始的時候

5.commit --提交事務,結束事務,刪除該事務的所有保存點,刪除鎖,不能回退,數據生效,其他會話[其他連接]可以查看生效的新數據

1、事物操作示意圖:

類似于git的回滾操作

用戶a在進行事務操作的時候,用戶b在數據庫是查看不到一部分數據的變化的,必須要等到用戶a提交才行,這叫事務隔離,至于是看得見哪一部分的數據得取決于用的隔離級別

還有一種開啟事務的方式:set?autocommit = off

-- 關閉當前會話的自動提交(影響后續所有操作)
SET autocommit = 0;
INSERT INTO orders (product_id) VALUES (101);
-- 必須顯式提交
COMMIT;
-- 恢復自動提交(否則后續操作仍需要手動提交)
SET autocommit = 1;

2.事務的隔離級別?

1.多個連接開啟各自事務操作數據庫中的數據時,數據庫系統要負責隔離操作,以保證連接在獲取數據的準確性

2.如果不考慮隔離性,會導致:臟讀、不可重復讀、幻讀

臟讀:當應一個事務讀取另外一個事務尚未提交的修改時,產生臟讀。就是也可能別人回滾了或者放棄提交了,但是你讀到了。

不可重復讀:同一個查詢在同一個事務中多次進行,由于其他用戶提交的事務所做的修改或者刪除,每次返回不同的結果集,此時發生不可重復讀

幻讀:同一個查詢在同一個事務中多次進行,由于其他用戶提交事務所作的插入操作,每次返回不同的結果集

四種隔離級別:

1.讀未提交 read uncommitted

2.讀已提交 read committed

3.可重復讀 repeatable read

4.可串行化 serializable

測試一下功能:

打開兩個操作臺a和b

?指令1:查詢當前mysql的隔離級別

select @@tx_isolation;
或者
SELECT @@transaction_isolation;

會得到一個可重復讀的隔離級別

指令2:修改一下這個用戶a的隔離級別為讀未提交

set session transaction isolation level read uncommitted;

設置成功?

我們來對比一下:

此時用戶a執行一個語句,還沒有commot,但是用戶b也能看見,這就是臟讀

其他情況也是類似,可以自行下去動手查看

那這些臟讀、不可重復讀、幻讀我們都理解了,那鎖呢?

當用戶a開啟事務之后插入更新了一些數據

那么用戶b持有可串行化的隔離級別,是什么情況:

答案是按回車之后被卡住,這個用戶b會一直等待連接到這個數據庫

這時候就有兩種情況:

1.超時:

2.用戶a提交了,用戶b才出現結果?

總結一下隔離指令

1. 查看當前隔離級別??
-- 查看當前會話的隔離級別
SELECT @@SESSION.transaction_isolation;-- 查看全局隔離級別
SELECT @@GLOBAL.transaction_isolation;
2.設置隔離級別??
??(1) 設置當前會話(臨時生效)
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;  -- 讀未提交
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;    -- 讀已提交
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;    -- 可重復讀(默認)
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;      -- 串行化
??(2) 設置全局(需管理員權限)??
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;  -- 修改全局配置
FLUSH PRIVILEGES;  -- 刷新權限(可選)

3.修改默認級別

3.ACID 特性

原子性 (Atomicity) → 確保操作完整性
一致性 (Consistency) → 確保數據有效性
隔離性 (Isolation) → 確保并發可控性
持久性 (Durability) → 確保結果永久性

1.原子性 (Atomicity)??
  • ??定義??:事務是最小的工作單元,不可再分割。
  • ??核心原則??:事務中的操作??要么全部成功,要么全部失敗回滾??。
  • ??示例??:銀行轉賬中,扣款和收款必須同時成功或同時失敗。

??2. 一致性 (Consistency)??
  • ??定義??:事務執行前后,數據庫必須從一個一致性狀態變換到另一個一致性狀態。
  • ??核心原則??:數據完整性約束(如主鍵、外鍵、唯一約束)不會被破壞。
  • ??示例??:轉賬前后,雙方賬戶總額應保持不變。

??3. 隔離性 (Isolation)??
  • ??定義??:多個并發事務之間相互隔離,一個事務的操作不應影響其他事務。
  • ??核心原則??:通過隔離級別(如?READ COMMITTED)控制事務間的可見性。
  • ??問題規避??:避免臟讀、不可重復讀、幻讀等問題。

??4. 持久性 (Durability)??
  • ??定義??:事務一旦提交,對數據的修改就是永久性的。
  • ??核心原則??:即使系統崩潰,數據也能通過日志恢復。
  • ??實現機制??:依賴事務日志(如 InnoDB 的 redo log)。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83020.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83020.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83020.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VS Code 重磅更新:全新 MCP 服務器發現中心上線

目前各種 MCP 客戶端層出不窮,但是安裝 MCP 服務卻格外繁瑣,尤其 VS Code 中無界面化的 MCP 服務配置方式,效率較低。 Copilot MCP 是一個 VS Code 插件,在今天發布的新版本中,插件支持了自動發現與安裝開源 MCP 服務…

智能家居“心臟“升級戰:GD25Q127CSIG國產芯片如何重構家庭物聯生態

在智能家居設備出貨量突破10億臺的2023年,家庭網關正經歷著前所未有的技術革新。作為連接云端與終端設備的中樞神經,智能網關的存儲芯片選擇直接決定著整個智能生態系統的運行效率。在這場技術升級浪潮中,兆易創新GD25Q127CSIG串行閃存芯片主…

R語言機器學習算法實戰系列(二十五)隨機森林算法多標簽分組分類器及模型可解釋性

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹教程內容加載必要的R包(帶詳細注釋)1. 加載數據2. 數據分割(按Species分層抽樣)3. 數據預處理配方4. 創建隨機森林模型(多分類)5. 創建工作流6. 設置交叉驗證和參數調優7. 參…

速查 Linux 常用指令 II

目錄 一、網絡管理命令1. 查看和配置網絡設備:ifconfig1)重啟網絡命令2)重啟網卡命令 2. 查看與設置路由:route3. 追蹤網絡路由:traceroute4. 查看端口信息和使用情況1)netstat 命令2)lsof 命令…

關于github使用總結

文章目錄 一、本地使用git(一)創建一個新的本地Git庫首先在本地創建一個新的git倉庫然后進行一次初始提交提交過后就可以查看提交記錄 (二)在本地倉庫進行版本恢復先執行 git log 查看項目提交歷史使用 git checkout 恢復版本 二、…

【Python】Python 單例模式 8 大核心應用場景深度解析(2025 新版)

單例模式(Singleton Pattern)作為一種經典的設計模式,始終保持著重要的工程價值。 本文著重于單例模式的主要核心應用場景。 至于實現方法, 晚些時候發出。 一、配置管理器 全局配置信息管理是單例模式最典型的應用場景。通過單…

計算機網絡網絡層(下)

一、互聯的路由選擇協議(網絡層控制層面內容) (一)有關路由選擇協議的幾個概念 1.理想的路由算法 (1)理想路由算法應具備的特點:算法必須正確和完整的,算法在計算上應簡單&#x…

云存儲桶的“公開陷阱”|滲透測試中如何利用與防御配置錯誤的存儲服務

引言 云存儲服務(如AWS S3、阿里云OSS、Google Cloud Storage)因便捷性被企業廣泛使用,但權限配置錯誤卻成為近年來數據泄露的重災區。 攻擊者無需復雜漏洞,僅需一個公開鏈接即可下載敏感數據。本文將深入解析這類漏洞的滲透…

BitMart合約交易體驗 BitMart滑點全賠的底層邏輯

美國新澤西州澤西市,2025年5月13日 – BitMart,全球領先的數字資產交易平臺,推出了其開創性的滑點保護計劃,旨在解決加密市場中最具挑戰性且常常被忽視的風險之一:滑點。該計劃為交易者提供了在 USDT 保證金永續合約交…

高海拔和遠距離的人員識別:面部、體型和步態的融合

大家讀完就覺得有幫助記得關注和點贊!!! 摘要 我們解決了在無約束環境中進行全身人體識別的問題。這個問題出現在諸如IARPA高空和遠距離生物識別與身份識別(BRIAR)計劃等監視場景中,其中生物識別數據是在長…

Docker 常見問題及其解決方案

一、安裝與啟動問題 1.1 安裝失敗 在不同操作系統上安裝 Docker 時,可能會出現安裝失敗的情況。例如,在 Ubuntu 系統中,執行安裝命令后提示依賴缺失。這通常是因為軟件源配置不正確或系統缺少必要的依賴包。 解決方案: 確保系統…

影響力最小化

這里寫目錄標題 影響力最大化**創新點**參數設置 影響力最小化傳播模型該文獻和Budak的有什么不同呢a Linear Threshold model with One Direction state Transition (LT1DT)具體模型 影響力最大化 以INFORMS Journal on Computing為例《The Impact of Passive Social Media Vi…

【IDEA】注釋配置

1. IDEA注釋調整,去掉默認在第一列顯示 修改為如下: 2. IDEA中修改代碼中的注釋顏色

一文了解 HTTP Content-Type:從基礎到實戰

一文了解 HTTP Content-Type:從基礎到實戰 在 Web 開發中,HTTP 請求頭中的 Content-Type 是一個看似簡單卻至關重要的概念。它決定了瀏覽器和服務器如何解析和處理傳輸的數據。本文將帶你全面掌握 Content-Type 的核心知識,涵蓋常見類型、應…

兔子隊列?RabbitMQ詳解(1)

引入 首先先介紹一下什么是 RabbitMQ 的意思:Rabbit 是一個公司的名稱,MQ 是 message queue (消息隊列)的縮寫,而 RabbitMQ 是 Rabbit 企業下的一個消息隊列產品,是一個采用Erlang語言實現AMQP(Advanced Message Queuing Protocol,高級消息隊列協議)的消息中間件,它最初…

某智能家電龍頭,社招 校招全面應用 AI 面試的創新實踐

某智能家電龍頭在競爭中憑借創新能力和高品質服務穩居市場前列,為更好地賦能業務,集團招聘總監著力構建數字化招聘流程,率先引入 AI 面試實現招聘智能化升級,減輕 HR 負擔、提升效率,優化候選人體驗,達成雙…

STM32 實時時鐘(RTC)詳解

一、RTC 簡介 RTC(Real Time Clock)即實時時鐘,本質上是一個 32 位的秒級計數器: 最大計數值為 4294967295 秒,約合 136 年: 復制編輯 4294967295 / 60 / 60 / 24 / 365 ≈ 136 年 RTC 初始化時&#x…

《AI驅動的智能推薦系統:原理、應用與未來》

一、引言 在當今信息爆炸的時代,用戶面臨著海量的信息選擇,從購物平臺上的商品推薦到流媒體服務中的影視推薦,智能推薦系統已經成為我們日常生活中不可或缺的一部分。AI驅動的智能推薦系統通過分析用戶的行為和偏好,為用戶提供個性…

Django + Celery 打造企業級大模型異步任務管理平臺 —— 從需求到完整實踐(含全模板源碼)

如需完整工程文件(含所有模板),可回復獲取詳細模板代碼。 面向人群:自動化測試工程師、企業中后臺開發人員、希望提升效率的 AI 業務從業者 核心收獲:掌握 Django 三表關系設計、Celery 異步任務實踐、基礎 Web 交互與前后端分離思路,源碼可直接落地,方便二次擴展 一、系…

創建對象

雖然Object構造函數或對象字面量可以方便地創建對象,但這些方式也有明顯不足: 創建具有同樣接口的多個對象需要重復編寫很多代碼 1.工廠模式 工廠模式是一種眾所周知的設計模式,廣泛應用于軟件工程領域,用于抽象創建特定對象的過程 function createPerson(name,age){let…