搜索
写经验 领红包

mysql脏读问题的含义(mysql脏读幻读不可重复读)

导语:MySQL面试题:ACID及脏读,不可重复读和幻读

MySQL数据库

1. ACID 讲⼀下

(阿⾥校招)

ACID是事物的四个特性。分别是 原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)、持久性(Durability) 。原⼦性是指事物是⼀个不可分割的⼯作单位,事物中的操作要么都发⽣,要么都不发⽣。

最经典的就是转账案例,我们把转⼊和转出当做⼀个事物的话,就需要在SQL中显式指定开启事务。

⼀致性是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的⼀致性 。我们可以从数据库层⾯和业务层⾯两⽅⾯来保证,数据库层⾯我们可以设置触发器,外键,表,⾏约束等来保证,业务层⾯就是我们Java⼯程师的⼯作啦。

隔离性指的是多个事务并发访问时,事务之间是隔离的,⼀个事务不应该影响其它事务运⾏效果。 多个事务并发访问时,事务之间是隔离的,⼀个事务不应该影响其它事务运⾏效果。 这个点⼜引申出了下⾯两道题,以及后边的加锁和阻塞持久性意味着即使出现了任何事故⽐如断电等,事务⼀旦提交,则持久化保存在数据库中,不会被回滚。

2. 说⼀下脏读,不可重复读和幻读

脏读: 意味着⼀个事务读取了另⼀个事务未提交的数据,⽽这个数据是有可能回滚的。即这个事物读取的数据是不正确的。

不可重复读: 在数据库访问中,⼀个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交⽽引起的。即这个事物在读的过程中被修改了。

幻读:当⼀个事物对整个table进⾏修改之后,第⼆个事物向表中插⼊了⼀⾏数据,此时第⼀个事物发现了新插⼊的没有修改的数据⾏,好像发⽣了幻觉⼀样。

本文内容由小璎整理编辑!