mysql事务

事务

事务就是一次数据库操作中若干单元的管理,事务管理的目标是完整性,一次中的若干操作要么都成功,要么都失败

事务设置

默认情况下,mysql使用自动提交模式(变量autocommit为ON),这意味着,只要操作dml语句mysql会隐形自动提交

由于变量autocommit分为会话系统变量和全局系统变量,所以查询的时候,注意分辨是全局系统变量还是会话系统变量

会话系统变量和全局系统变量的区别在于全局变量的修改会影响整个服务器,而会话变量修改只会影响当前会话(数据库连接)

MYSQL 事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT 来实现
BEGIN; / START TRANSACTION; 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
SET GLOBAL autocommit=0; 禁止自动提交
SET GLOBAL autocommit=1;开启自动提交
查看 autocommit 模式
SHOW GLOBAL VARIABLES LIKE 'autocommit';

事务管理的特征(ACID)

1.原子性(atomic)

2.一致性(consistency)

3.隔离性(isolation)

4.持久性(durability)

问:事物的真正顺序?

答:原子性——隔离性——持久性——一致性

原子性

就是要保持一次操作中的所有语句要么都成功要么都失败

隔离性

控制多个事务在并发读写时,保证互不影响,隔离级别共有四种(读 未提交,读 已提交,可重复读,串行化)

问:为什么要划分隔离级别?

答:

读 未提交:一个事物可以读到另一个食物还未提交的数据 

问题:可能会出现脏读,读到一条信息后,另一个事务还未commit,可能会回滚,这样读到的数据就叫脏读

读 已提交:一个事物只能读到另一个食物已提交的数据,虽然解决了脏读的问题,但是新问题是不可重复读

问题:事务开始的时候读到一个数据例如10,在此期间另一个事务将数据修改为20,也提交了,此时事务再次查询结果发生了变化,没有读到上次的数据,这种情况叫不可重复读

可重复读:一个事务开始时读到了一个数据,在事务中继续执行,再次读时,读到的与第一次保持一致,解决了不可重复读的问题

持久性

就是将数据持久化到硬盘上,不可回滚

一致性

就是保证数据操作的完整性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值