MySQL基礎:事務

来源:https://www.cnblogs.com/qiulimei/archive/2023/03/23/17248654.html
-Advertisement-
Play Games

MySQL基礎:事務 事務簡介 事務是一組操作的集合,它是一個不可分割的工作單位,事務會把所有的操作作為一個整體一起向系統提交或撤銷操作請求,即這些操作要麼同時成功,要麼同時失敗。 預設MySQL的事務是自動提交的,也就是說,當執行一條DML(數據操作語言:對資料庫進行增刪改操作)語句,MySQL會 ...


MySQL基礎:事務

事務簡介

  • 事務是一組操作的集合,它是一個不可分割的工作單位,事務會把所有的操作作為一個整體一起向系統提交或撤銷操作請求,即這些操作要麼同時成功,要麼同時失敗。

  • 預設MySQL的事務是自動提交的,也就是說,當執行一條DML(數據操作語言:對資料庫進行增刪改操作)語句,MySQL會立即隱式地提交事務。

  • 案例:銀行轉賬

--建表、存數據
create table account(
    id int auto_increment primary key comment '主鍵ID',
    name varchar(10) comment '姓名',
    money int comment '餘額'
)comment '賬戶表';
insert into account (id, name, money)
values (null,'張三',2000),(null,'李四',3000);


事務操作

  • 查看/設置事務提交方式
-- 結果為1為自動提交事務,為0則不是自動提交
SELECT @@autocommit; 
-- 設置事務提交方式為手動提交,方式一
SET @@autocommit=0;

-- 設置事務提交方式為手動提交,方式二
START TRANSACTION;

  • 提交事務
COMMIT;
  • 回滾事務
ROLLBACK;
  • 案例:銀行轉賬
-- 張三給李四轉賬1000
start transaction ;

-- 1.查詢張三餘額
select * from account where name='張三';

-- 2.將張三賬戶餘額-1000
update account set money = money - 1000 where name = '張三';


-- 3.將李四賬戶餘額+1000
update account set money = money + 1000 where name = '李四';

-- 提交事務
commit;

-- 回滾事務
rollback;


事務四大特性(ACID)

  • 原子性(Atomicity): 事務是不可分割的最小操作單元,要麼全部成功,要麼全部失敗。
  • 一致性(Consistency): 事務完成時,必須使所有的數據都保持一致狀態。
  • 隔離性(Isolation): 資料庫系統提供的隔離機制,保證事務在不受外部併發操作影響的獨立環境下運行。
  • 持久性(Durability): 事務一旦提交或回滾,它對資料庫中的數據的改變就是永久的。

併發事務問題

問題 描述
臟讀 一個事務讀到另外一個事務還沒有提交的數據。
不可重覆讀 一個事務先後讀取同一條記錄,但兩次讀取的數據不同,稱之為不可重覆讀。
幻讀 一個事務按照條件查詢數據時,沒有對應的數據行,但是在插入數據時,又發現這行數據已經存在,好像出現了“幻影”。

事務隔離級別

隔離級別 臟讀 不可重覆讀 幻讀
Read uncommitted
Read committed ×
Repeatable Read(MySQL預設) × ×
Serializable × × ×
-- 查看事務隔離級別
SELECT @@TRANSACTION_ISOLATION;

--設置事務隔離級別
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE};

註意:事務隔離級別越高,數據越安全,但是性能越低。

級別:Serializable > Repeatable Read(MySQL預設) > Read committed > Read uncommitted


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本人是一家小公司的技術總監,工作包括寫市場分析、工作彙報、產品推廣文案及代碼開發等。在ChatGPT推出之後本人一直在工作中使用,在頭腦風暴、大綱生成、語句優化、代碼生成方面很有效果。但ChatGPT在一些常識性生成方面並不理想,比如某個省有哪些旅游景點、三角數學公式推算等,大家使用中一定要註意並仔 ...
  • .NET Core WebApi介面ip限流實踐 前言 之前一直想實現介面限流,但一直沒去實現,然後剛好看到一篇文章是基於AspNetCoreRateLimit 組件的限流策略。這個組件不做多的介紹,想瞭解詳情可以去訪問官方網址或者原文地址,地址在文章底部,本文只講實現。 實現介面限流步驟 導包 第 ...
  • 當前的Winform分頁控制項中,當前導出的數據一般使用Excel來處理,Excel的文檔可以用於後期的數據展示或者批量導入做準備,因此是比較好的輸入輸出格式。但是有框架的使用客戶希望分頁控制項能夠直接導出PDF,雖然Excel也可以直接轉換為PDF,不過直接導出PDF的處理肯定更加方便直觀。因此整理了... ...
  • 1. 核心關註點 1.1. 開發軟體的原因 2. 切麵關註點 2.1. 所有的代碼領域都需要處理相關的問題 3. 結構化模式 3.1. 裝飾器模式 3.1.1. 可以在現有對象上添加新的功能,而不改變其結構 3.2. 代理模式 3.2.1. 所提供的對象可以替代客戶端使用的實際服務對象 4. 使用P ...
  • 使用lvs+keepalived架構架構實現後端web伺服器(該web伺服器要求搭建wordpress博客站)的負載均衡 最終客戶端訪問功能變數名稱 我的名字.wordpress.cn 能夠訪問搭建的博客站 ,達到負載均衡的目的 IP 主機名 角色 192.168.26.101 rs1 後端真實伺服器/ng ...
  • 操作系統: RHEL7.x 或CentOS 7.x 最小化安裝 配置好固定的IP,能訪問互聯網 配置好yum源(yum repolist 可以查看yum源) 本地光碟 掛載光碟,開機自動掛載 vim + /etc/fstable /dev/sr0 /mnt iso9660 defaults 0 0 ...
  • 一:存儲架構 根據存儲設備所在的位置分類 1、DAS DAS:(Direct-Attached Storage)直連式存儲。伺服器使用專用線纜(例如SCSI)和存儲設備(例如磁碟陣列)進行直連。 特點: 優點是儲設備只能連接到一臺主機使用,無法共用,成本較高,且安全性可靠性較低 缺點是容量有限,不適 ...
  • 一、線程簡介 線程是參與系統調度的最小單位。它被包含在進程之中,是進程中的實際運行單位。 一個進程中可以創建多個線程,多個線程實現併發運行,每個線程執行不同的任務。 每個線程都有其對應的標識,稱為線程 ID,線程 ID 使用 pthread_t 數據類型來表示。 二、線程的創建 線程是輕量級的併發執 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...