MySQL的事務——事物隔離級別

      網友投稿 778 2025-03-31

      目錄

      概念

      什么是事物?

      模擬事物

      事物操作

      事物操作

      事物特性

      事物隔離級別

      事務隔離操作

      每文一語

      概念

      數據庫存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據。

      不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能?,F在許多不同的數據庫管理系統都支持多種不同的數據引擎。Mysql的核心就是存儲引擎。

      用戶可以根據不同的需求為數據表選擇不同的存儲引擎

      可以使用 SHOW ENGINES 命令 可以查看Mysql的所有執行引擎我們 可以到 默認的執行引擎是innoDB 支持事務,行級鎖定和外鍵。

      什么是事物?

      在MySQL中的事務(Transaction)是由存儲引擎實現的,在MySQL中,只有InnoDB存儲引擎才支持事務。

      事務處理可以用來維護數據庫的完整性,保證成批的 SQL 語句要么全部執行,要么全部不執行。

      事務用來管理 DDL、DML、DCL 操作,比如 insert,update,delete 語句,默認是自動提交的。

      模擬事物

      在銀行轉賬時,必須保證轉賬絕對安全,這時需要事務參與:

      update account set money = money - 200 where id = 1;

      update account set money = money + 200 where id = 2;

      假如在第一次update之后,出現了意外、異常,沒有執行第二次update,這時轉賬是否會出現異常?

      事物操作

      MySQL的事務操作主要有以下三種:

      1、開啟事務:Start Transaction

      任何一條DML語句(insert、update、delete)執行,標志事務的開啟

      命令:BEGIN 或 START TRANSACTION

      2、提交事務:Commit Transaction

      成功的結束,將所有的DML語句操作歷史記錄和底層硬盤數據來一次同步

      命令:COMMIT

      3、回滾事務:Rollback Transaction

      失敗的結束,將所有的DML語句操作歷史記錄全部清空

      命令:ROLLBACK

      之前的所有SQL操作其實也有事務,只是MySQL自動幫我們完成的,每執行一條SQL時MySQL就幫我們自動提交事務,因此如果想要手動控制事務,則必須關閉MySQL的事務自動提交。

      在MySQL中直接用 SET 來改變 MySQL 的自動提交模式:

      set autocommit=0?禁止自動提交

      set autocommit=1?開啟自動提交

      事物操作

      create database if not exists mydb12_transcation;

      use mydb12_transcation;

      -- 創建賬戶表

      create table account(

      id int primary key, -- 賬戶id

      name varchar(20), -- 賬戶名

      money double -- 金額

      );

      -- 插入數據

      insert into account values(1,'zhangsan',1000);

      insert into account values(2,'lisi',1000);

      -- 設置MySQL的事務為手動提交(關閉自動提交)

      select @@autocommit;

      set autocommit = 0;

      -- 模擬賬戶轉賬

      -- 開啟事務

      begin;

      update account set money = money - 200 where name = 'zhangsan';

      update account set money = money + 200 where name = 'lisi';

      -- 提交事務

      commit;

      MySQL的事務——事物隔離級別

      -- 如果轉賬中的任何一條出現問題,則回滾事務

      rollback;

      事物特性

      事物隔離級別

      Isolate,顧名思義就是將事務與另一個事務隔離開,為什么要隔離呢?如果一個事務正在操作的數據被另一個事務修改或刪除了,最后的執行結果可能無法達到預期。如果沒有隔離性還會導致其他問題。

      讀未提交(Read uncommitted)

      一個事務可以讀取另一個未提交事務的數據,最低級別,任何情況都無法保證,會造成臟讀。

      讀已提交(Read committed)

      一個事務要等另一個事務提交后才能讀取數據,可避免臟讀的發生,會造成不可重復讀。

      可重復讀(Repeatable read)

      就是在開始讀取數據(事務開啟)時,不再允許修改操作,可避免臟讀、不可重復讀的發生,但是會造成幻讀。

      串行(Serializable)

      是最高的事務隔離級別,在該級別下,事務串行化順序執行,可以避免臟讀、不可重復讀與幻讀。但是這種事務隔離級別效率低下,比較耗數據庫性能,一般不使用。

      事務隔離操作

      -- 查看隔離級別

      show variables like '%isolation%’;

      -- 設置隔離級別

      /*

      set session transaction isolation level 級別字符串

      級別字符串:read uncommitted、read committed、repeatable read、serializable

      */

      -- 設置read uncommitted

      set session transaction isolation level read uncommitted;

      -- 設置read committed

      set session transaction isolation level read committed;

      -- 設置repeatable read

      set session transaction isolation level repeatable read;

      -- 設置serializable

      set session transaction isolation level serializable;

      每文一語

      準確的定位自己才是最好的方法

      MySQL 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格中獲取重復記錄的個數這里提供四種方法(表格里統計不重復數據的個數)
      下一篇:在一個單元格內有20個數字,怎么每隔四個數據添加一個空格(怎樣在每一個單元格都增加一個數字)
      相關文章
      亚洲欧美日韩综合俺去了| 亚洲国产高清在线| 亚洲一区二区三区乱码在线欧洲| 亚洲天堂久久精品| 亚洲综合自拍成人| 亚洲精品美女视频| 亚洲性猛交xx乱| 亚洲人成人77777网站不卡| 亚洲精品日韩专区silk| 久久亚洲AV无码精品色午夜麻豆 | 亚洲Aⅴ无码专区在线观看q| 日本亚洲成高清一区二区三区| 亚洲精品蜜桃久久久久久| 精品亚洲永久免费精品| 久热综合在线亚洲精品| 久久久亚洲欧洲日产国码二区 | 一区二区三区亚洲| 亚洲精品一卡2卡3卡三卡四卡| 亚洲欧洲日产韩国在线| 亚洲AV无码一区二区三区人| 亚洲国产成a人v在线观看 | 国产亚洲综合成人91精品| 亚洲AV无码成人网站久久精品大| 久久精品国产亚洲香蕉| 亚洲综合激情另类小说区| 亚洲国产精品成人久久久| 亚洲人成小说网站色| 亚洲AV无码一区二区三区性色| 亚洲AV成人精品日韩一区18p| 亚洲精品一级无码鲁丝片| 亚洲人精品午夜射精日韩| 亚洲av片劲爆在线观看| 亚洲大香伊人蕉在人依线| 亚洲AV日韩综合一区尤物| 日韩亚洲人成网站| 亚洲午夜精品一级在线播放放 | 久久亚洲国产成人亚| 亚洲精品中文字幕无乱码| 亚洲午夜精品久久久久久app| 精品韩国亚洲av无码不卡区| 在线观看亚洲精品福利片|