美文网首页
事务的隔离级别

事务的隔离级别

作者: flyjar | 来源:发表于2024-11-19 08:08 被阅读0次

事务隔离级别与并发操作
未提交读(Read Uncommitted):在这个隔离级别下,一个事务可以读取另一个未提交事务的数据。如果事务 A 正在修改数据但尚未提交,事务 B 却可以读取这些未提交的数据,当事务 A 回滚修改时,事务 B 读取的数据就可能是无效的。这种情况下,如果多个事务同时对同一行或同一表的数据进行读写操作,很容易导致脏读、不可重复读等问题,进而可能引起锁表。例如,事务 A 开始修改表中的某一行数据,事务 B 也尝试修改同一行数据,数据库可能会对这一行加锁,以保证数据的一致性,从而导致锁表。

读已提交(Read Committed):一个事务只能读取另一个已提交事务的数据。在高并发场景下,当多个事务频繁地对同一行或同一表的数据进行读取和修改操作时,也可能会出现锁等待和锁冲突的情况。例如,事务 A 读取了一行数据并打算修改它,此时事务 B 也请求读取并修改同一行数据,事务 A 提交修改后,事务 B 才能继续进行修改操作,这个过程中可能会产生锁等待,导致锁表。

可重复读(Repeatable Read):在这个隔离级别下,一个事务在执行期间多次读取同一行数据时,数据的值保持不变。这意味着事务在开始时会对涉及的数据行加锁,以确保数据的一致性。当多个事务同时对同一行数据进行操作时,可能会出现锁竞争,导致锁表。例如,事务 A 在执行一个复杂的查询操作,需要多次读取同一行数据,为了保证数据在事务 A 执行期间不被其他事务修改,数据库会对这些数据行加锁。如果此时事务 B 也尝试修改这些数据行,就会导致锁等待,进而可能引发锁表。

可重复读 简单来讲:可重复读,是指在当前事务操作对数据进行读取时,会对被读取的事务进行添加一把锁。保证被读取的事务只能被其他事读取,不能被修改。从而保证了每次读取的数据都是一样的了,保证了可以重复读

串行化(Serializable):这是最高的事务隔离级别,事务会被串行执行,即一个事务完成后,另一个事务才能开始。在这种情况下,如果有多个事务对同一表进行操作,就会按照顺序依次执行,可能会因为事务等待时间过长而导致锁表。例如,事务 A 对整个表进行全表扫描操作,事务 B 想要对表中的某一行进行修改,由于事务 A 的操作是串行化的,事务 B 就需要等待事务 A 完成后才能执行,这个等待过程可能会导致锁表。

相关文章

  • Spring 中的事务隔离级别

    什么是事务隔离级别? 事务隔离级别是对事务 4 大特性中隔离性的具体体现,使用事务隔离级别可以控制并发事务在同时执...

  • MySQL_tx_isolation

    事务隔离级别 一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、...

  • MySQL事务隔离级别和实现原理,看这一篇就够了!!!

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么...

  • 面试题

    基础知识 1、事务隔离级别 补充: 1、事务隔离级别为读提交时,写数据只会锁住相应的行 2、事务隔离级别为可重复读...

  • 事务

    事务隔离级别 隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了...

  • mysql事务-2020-11-21

    use test查询事务隔离级别:select @@tx_isolation; 设置事务隔离级别://全局的set...

  • MYSQL事务

    常用语句 MYSQL事务,锁表 事务控制语句 事务的隔离级别 隔离级别描述产生风险READUNCOMMITTED ...

  • 数据库事务相关

    事务隔离级别(tx_isolation)mysql 有四级事务隔离级别 每个级别都有字符或数字编号 级别symbo...

  • 关于Spring的事务Transactional,锁同步,并发线

    Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。...

  • Mysql事务

    事务隔离级别 事务隔离级别有四种:read-uncomitted,read-commited,repeatable...

网友评论

      本文标题:事务的隔离级别

      本文链接:https://www.haomeiwen.com/subject/cssvjjtx.html