数据库:事务

1.事务:一系列操作组成的不可分割的工作单位,使数据从一种状态到另一种状态。

ACID特性:

原子性(atom):不可分割

一致性(consistiency):一个合法状态到另一个合法状态

隔离:事务执行过程中不受到其他事务的干扰。—锁来实现

持久:事务提交后,修改应该被保存到库中。

2.脏读,不可重复读,幻读

脏读:A读取B未提交的数据,如果B回滚,则数据无效。

不可重复读:A读取B,但是B更新了字段,导致A读的数据不同。

幻读:A读取B,但是B插入了字段,导致A读取的时候有额外的数据。

3.事务隔离级别:

解决上述问题,并发性带来的数据一致性问题。

四种级别:读未提交,读已提交,可重复度,串行化。

MySQL默认:可重复读:一个事务内多次读取同一行数据的时候,读取的结果相同,导致事务只能读取已经提交的数据,不能读取其他事务未提交的数据。

Q:

1.数据库的事务了解吗

事务:MySQL引擎实现的,一系列不可分割的工作单位,使数据从一组状态到另一组状态

事务的ACID特性:

原子性:事务不可分割。

一致性:从一个合法状态到另一个合法状态

隔离性:执行过程中,不会受到其他事务的干扰,使用锁机制和MVCC实现

持久性:事务提交后,对数据库数据的修改是永久性的。

2.什么是幻读,什么是脏读,什么是不可重复读

脏读:A读取B未提交的数据,如果B回滚,则数据无效。

不可重复读:A读取B,但是B更新了字段,导致A读的数据不同。

幻读:A读取B,但是B插入了字段,导致A读取的时候有额外的数据。

3.什么是隔离级别,不同隔离级别存在的问题,为什么需要不同的隔离级别,隔离级别谁来设置。

多个并发事务执行的时候,会出现脏读、不可重复读、幻读的现象,为了规避这种现象,SQL提供了

四种隔离级别来规避上述问题。隔离级别越高,性能效率就越低。

读未提交,读已提交,可重复度,串行化

  1. 读未提交:事务A可 以读取到事务B未提交的数据,可能会出现脏读问题。
  2. 读已提交:事务A只能读取到事务B已经提交的数据,但是在事务A执行期间,事务B可能会更改数据,导致不可重复读问题。
  3. 可重复读:事务A在执行期间多次读取同一数据,读取的结果应该一致,但是在事务A执行期间,事务B可能会插入或删除数据,导致幻读问题。—MySQL默认隔离级别
  4. 串行化:所有事务串行执行,不会出现并发问题。

隔离级别可以通过SET TRANSACTION ISOLATION LEVEL来设置,根据平衡并发性和数据一致性来选择隔离级别。

4.如果希望另一个事务的修改都对当前事务不可见,需要将隔离级别设置什么

串行化,在这个隔离级别下,所有事务串行执行,不会出现并发问题,而且每个事务只能读取已经提交的数据,不能读取其他事务未提交的数据,从而保证了数据的一致性和隔离性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔可南-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值