基于MySQL的事务管理

目录

概念:多条语句组成一个执行单位

事务的基本操作

MySQL中的事务必须满足A,C,I,D这四个基本特性

事务操作举例——(转账)

事务保存点——SAVEPOINT

事务隔离级别——多线程(并发同时访问)

总结


概念:多条语句组成一个执行单位
 

事务的执行要么成功,要么就返回到事务开始前的状态,这就保证了同一事务操作的同步性和数据的完整性。mysql默认情况下,一条sql语句就是一个事务。

举例:转账分为两个部分来完成。转入和转出,只有这两个部分都能完成才认为转账成功。

A账户给B账户转账100元

  • A账户减少100元

  • B账户增加100元
     

事务的基本操作

  1. 开启事务:START TRANSACTION ——(start transaction)
  2. 事务提交:COMMIT
  3. 回滚事务:ROLLBCAK
  4. 操作流程: 开启事务——>执行语句——>提交事务
     

MySQL中的事务必须满足A,C,I,D这四个基本特性

Atomicity:原子性—— 一个不可分割的最小单元

Consistency:一致性—— 无论是否成功,数据库的状态都是一致性的 ------------mysql是通过日志的变化来记录数据的

lsolation:隔离性—— 事务与事务之间没有影响

Durability:持久性 ——事务一旦提交,则数据库就保持完整

事务操作举例——(转账)

账户表 account(id,name,money)

 代码

#开启事务
START TRANSACTION;
#模拟转出
UPDATE account SET money=money -100 WHERE id=1;
#模拟转入
UPDATE account SET money=money +100 WHERE id=2;
#查询一下
SELECT * FROM account;  
COMMIT;

一个会话层面,事务是建立在一个会话层的

 

 

事务保存点——SAVEPOINT
 

关键字:SAVEPOINT 保存点,也称回滚点

代码

#开启事务
START TRANSACTION;
UPDATE account SET money=money -10 WHERE id=1;
#设置保存点
SAVEPOINT S1;
UPDATE account SET money=money -20 WHERE id=2;
#回滚保存
ROLLBACK TO SAVEPOINT S1;
#查询一下
SELECT * FROM account;  
#提交
COMMIT;

 

事务隔离级别——多线程(并发同时访问)

  • 查看全局隔离 ——@@global.transaction_isolation
  • 当前会话隔离 ——@@session.transaction_isolation
  • 下一事务隔离 ——@@transaction_isolation

所以的隔离级别默认为:REPEATABLE READ (可重复读)

隔离级别

  • 1READ UNCOMMITTED; 脏读

  • 2READ COMMITTED; 读取提交 不能重复读

  • 3REPEATABLE READ;读取提交 可重复读

  • 4SERIALIZABLEl; 可串行化 加锁

设置事务的隔离级别

SET [SESSION| GLOBAL] transaction_isolation LEVEL 级别

总结

  • 事务更有助于任务的执行不被打搅
  • 事务保证的任务执行的完整性、准确性
  • lock的应用,虽然很好,保证了事务不被打搅,但是浪费时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值