MYSQL------事物

本文详细介绍了数据库事务的基本概念,包括开启、回滚和提交事务,并通过实例解释了事务的原子性、一致性和持久性。此外,还探讨了事务的隔离级别,如读未提交、读已提交、可重复读和串行化,以及它们在防止脏读、不可重复读和幻读方面的效果。最后,提到了如何查询和设置数据库的事务隔离级别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事物

事物的基本介绍

  • 概念: 如果一个包含多个步骤的业务操作,被事物管理,那么这些操作要么同时成功,要么同时失败.
    三个比较重要的操作 :
    1.开启事物 : start transaction;
    2.回滚 :rollback;
    3.提交事物 :commit;
    回滚事物
update account set money = 10000;  -- 恢复数据
start transaction ; -- 开启事物
update account set money = money-1000 where name='小张'; -- 扣除小张账户的钱
update account set money = money+1000 where name='小风'; -- 给小风的账户添加钱
rollback; -- 回滚事物

提交事物

start transaction ; -- 开启事物
update account set money = money-1000 where name='小张'; -- 扣除小张账户的钱
update account set money = money+1000 where name='小风'; -- 给小风的账户添加钱
commit; -- 提交事物
  1. MySQL数据库中事务默认自动提交,事务提交的两种方式:

    1. 自动提交:
    • mysql就是自动提交的
    • 一条DML(增删改)语句会自动提交一次事务。
    1. 手动提交:
    • Oracle 数据库默认是手动提交事务,MYSQL是自动提交事物`

    • 需要先开启事务,再提交

    • 修改事务的默认提交方式:

      • 查看事务的默认提交方式:

      • SELECT @@autocommit;

      • – 1 代表自动提交 0 代表手动提交

      • 修改默认提交方式: set @@autocommit = 0;

事物的四大特征(面试题常问)

  1. 原子性:是不可分割的最小单位 ,组成事务的各个逻辑单元不可分割.,要么同时成功,要么同时失败.

  2. 一致性:事务执行的前后,数据完整性保持一致

  3. 隔离性:事务执行不应该受到其他事务的干扰,多个事物之间互相独立.

  4. 持久性:事务一旦提交或者回滚,数据就持久化到数据库中

事物的隔离级别

  • 概念: 多个事物之间隔离,相互独立的.但是如果多个事物操作同一批数据,则会引发一些问题,设置不同隔离级别就可以解决这些问题.
  • 存在问题
  1. 脏读:一个事务,读取到另一个事务中没有提交的数据,导致多次读取到的数据不一样。

  2. 不可重复读(虚读):一个事物读到了另一个事物已经提交的update的数据,导致多次读取到的数据不一样。

  3. 幻读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询结果不一致。

如何解决这些安全性问题(事物的隔离级别)?
可以通过设置事物的隔离级别解决这些安全性问题

  1. read uncommitted(读未提交) : 脏读,不可重复读,虚读都有可能发生

  2. read committed(读已提交) :避免脏读。但是不可重复读和虚读是有可能发生

  3. repeatable read(可重复读) :避免脏读和不可重复读,但是虚读有可能发生

  4. serializable(串行化) :避免脏读,不可重复读,虚读。不会产生任何问题.
    注意:1到4安全性越来越高,但是效率越来越低.

  • 数据库查询隔离级别:
  • *select @@tx_isolation;
  • 数据库设置隔离级别:
  • *set global transaction isolation level 级别字符串;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值