事务的四大特性
1.原子性:即一个事务是一个整体,不可分割。
2.一致性:事务在开始和结束后,能保证数据库完整性约束的正确性即数据的完整性。
3.隔离性:事务之间完全隔离。不能同一时间操作同一数据表
4.持久性:一旦事务完成,无法回滚,对数据操作是永久性的
事务的并发问题
1.脏读:一个事务读取另一个事务还没有提交的数据称为脏读。也就是B事务还没有提交,A事务已经读取B修改的数据。如果B事务因为某种原因造成回滚,那么A读取的数据完全无效
2.不可重复读:同一个事务中,多次读出的同一数据不相同(修改造成)
3.幻读:事务A检查数据库,发现并没有数据。事务B此时添加了一条信息,事务A再次查询时,发现已经有数据了,好像发生了幻觉(针对添加删除操作)
事务是什么时候开始的?
并不是 begin/ start transaction 执行完就开始了, 而是执行完begin transaction后的第一条sql语句执行完成,事务才开始
事务的四种隔离级别
| 隔离级别 | 脏读 | 不可重复度 | 幻读 |
| 读未提交(read-uncommitted) | 是 | 是 | 是 |
| 读已提交(read-committed) | 否 | 是 | 是 |
| 可重复读(repeatable-read) | 否 | 否 | 是 |
| 可串行化(serializable) | 否 | 否 | 否 |
MySQL版本:8.0.15

命令
1.查看当前的事务隔离级别
SELECT @@transaction_isolation;

2.设置事务隔离级别
set session transaction isolation level read uncommitted;

事务隔离级别为读提交(read committed 不可重复读,第二级别)时,写数据只会锁住相应的行
事务隔离级别为串行化时(serializable ,第四级别),读写数据都会锁住整张表
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。
看了,我觉得你会了。来实际操作一下子
本文详细介绍了数据库事务的四大特性:原子性、一致性、隔离性和持久性,并讨论了事务并发可能引发的脏读、不可重复读和幻读问题。重点讲解了不同事务隔离级别的概念及其对数据一致性和并发性能的影响。同时,提到了事务开始的时机以及如何查看和设置事务隔离级别。在实际应用中,选择合适的隔离级别对于保证数据完整性和提升系统性能至关重要。
673

被折叠的 条评论
为什么被折叠?



