数据库笔记——day03

一、事务 transaction

1.什么是事务

数据库事务用来保证 多个SQL要么全成功,幺妹全失败,英文叫transaction。
MySQL数据库会自动管理事务,Oracle数据库需要程序员管理事务
MySQL也允许程序员手动管理事务

2.事务的四个特性ACID

事务的四个特性
原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

1. 原子性

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。

2. 一致性

一致性:保持数据守恒,将来广泛应用到分布式系统里

3. 隔离性

隔离性:MySQL数据库支持高并发,可能会有数据安全的隐患,也有复杂的隔离级别

4. 持久性

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

3. 隔离级别

事务隔离为不同级别,包括

  • 读未提交(Read uncommitted) 安全性最差,可能发生并发数据问题,性能最好
  • 读提交(read committed) Oracle默认的隔离级别
  • 可重复读(repeatable read)MySQL默认的隔离级别,安全性较好,性能一般
  • 串行化(Serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发

4.查询mysql的隔离级别

在默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务。如果需要在一个事务中包含多条SQL语句,那么需要手动开启事务和结束事务。

  • 开启事务:start transaction;
  • 结束事务:commit(提交事务)或rollback(回滚事务)。

5.测试

窗口1:

mysql> use cgb2022; #使用数据库,准备往表里插入数据
mysql> start transaction; #开启事务start transaction
mysql> insert into g values(null,'jack',20); #多条执行增删改的SQL
mysql> select * from g; #这里在窗口2是查不到的jack这条数据的,因为没有提交事务,可能会在窗口1查到,但那只是暂时性的
mysql> commit; #提交事务commit,不提交的话别人查不到,没有持久影响

窗口2:

mysql> use cgb2022;
mysql> select * from g; #窗口1不执行commit,这里永远查不到新增的数据

这是窗口1没有提交事务,在窗口2查询到的数据
在这里插入图片描述
这是窗口1提交事务之后,在窗口2查询到的数据
在这里插入图片描述

提交commit

#多条语句时,批量执行,事务提交

#有了事务,多步操作就形成了原子性操作,高并发下也不会引起数据错乱

#mysql的事务默认就是开启的 -- 多条语句一起操作时,要么一起成功要么一起失败

回滚rollback

#多条语句,批量执行,insert插入重复的主键导致失败时,事务回滚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值