首页 > 试题广场 >

事务隔离级别有哪些?

[问答题]
事务隔离级别有哪些?
为了解决隔离性产生的脏读、幻读、不可重复读,主流的关系型数据库都会提供四种事务的隔离级别。 事务隔离级别从低到高分别是:读未提交、读已提交、可重复读、串行化。 事务隔离级别等级越高,越能保证数据的一致性和完整性,但是执行效率也越低。所以在设置数据库的 事务隔离级别时需要做一下权衡,MySQL默认是可重复读的级别。 读未提交,是最低的隔离级别,所有的事务都可以看到其他未提交的事务的执行结果。只能防止第一类更新丢失,不能解决脏读,可重复读,幻读,所以很少应用于实际项目。 读已提交, 在该隔离级别下,一个事务的更新操作结果只有在该事务提交之后,另一个事务才可能读取到同一笔数据更新后的结果。可以防止脏读和第一类更新丢失,但是不能解决可重复读和幻读的问题。 可重复读 ,MySQL默认的隔离级别。可重复读是快照读, 在该隔离级别下,一个事务多次读同一个数据, 实际上读的是数据快照, 其他事务修改数据在当前事务是不可见的, 这样就可以保证在同一个事务内两次读到的数据是一样的。可以防止脏读、不可重复读、第一类更新丢失、第二类更新丢失的问题,不过还是会出现幻读。 串行化,这是最高的隔离级别。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行(会阻塞)。在这个级别,可以解决上面提到的所有并发问题,但可能导致大量的超时现象和锁竞争,通常不会用这个隔离级别。 注意: 事务的隔离级别越高, 数据安全性就越高, 但是执行效率越低. 事务的隔离级别越 低, 执行效率就越高, 但是数据安全性就越低.
发表于 2025-07-07 23:47:39 回复(0)