首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在read committed和repeatable read transaction中执行单个select查询有什么区别?

在read committed和repeatable read事务中执行单个select查询的区别如下:

  1. Read Committed(读提交)事务级别:
    • 概念:在该级别下,事务只能读取已经提交的数据,即读取其他事务已经提交的数据,而不能读取其他事务未提交的数据。
    • 分类:属于一致性读取(Consistent Read)的一种,保证了事务读取的数据是一致的。
    • 优势:能够避免脏读(Dirty Read)和不可重复读(Non-repeatable Read)的问题。
    • 应用场景:适用于对数据一致性要求较高的场景,如金融系统、订单处理等。
    • 推荐的腾讯云相关产品:腾讯云数据库 MySQL版、腾讯云数据库 MariaDB版。
    • 产品介绍链接地址:腾讯云数据库 MySQL版腾讯云数据库 MariaDB版
  2. Repeatable Read(可重复读)事务级别:
    • 概念:在该级别下,事务在执行期间能够多次读取同一数据,读取的数据保持一致,即不受其他事务的修改影响。
    • 分类:属于一致性读取(Consistent Read)的一种,保证了事务读取的数据是一致的。
    • 优势:能够避免脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻读(Phantom Read)的问题。
    • 应用场景:适用于对数据一致性要求更高的场景,如库存管理、订单处理等。
    • 推荐的腾讯云相关产品:腾讯云数据库 MySQL版、腾讯云数据库 MariaDB版。
    • 产品介绍链接地址:腾讯云数据库 MySQL版腾讯云数据库 MariaDB版

需要注意的是,以上答案仅针对read committed和repeatable read事务级别下的单个select查询的区别进行了解释和推荐相关产品,具体的应用和实践还需要根据具体场景和需求进行综合考虑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql的事物隔离级别详解

MySQL是一个服务器/客户端架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。我们可以同时在不同的会话里输入各种语句,这些语句可以作为事务的一部分进行处理。不同的会话可以同时发送请求,也就是说服务器可能同时在处理多个事务,这样子就会导致不同的事务可能同时访问到相同的记录。我们前边说过事务有一个特性称之为隔离性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。但是这样子的话对性能影响太大,所以设计数据库的大叔提出了各种隔离级别,来最大限度的提升系统并发处理事务的能力,但是这也是以牺牲一定的隔离性来达到的。

02

MySQL事务隔离级别和MVCC

MySQL是一个服务器/客户端架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。我们可以同时在不同的会话里输入各种语句,这些语句可以作为事务的一部分进行处理。不同的会话可以同时发送请求,也就是说服务器可能同时在处理多个事务,这样子就会导致不同的事务可能同时访问到相同的记录。我们前边说过事务有一个特性称之为隔离性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。但是这样子的话对性能影响太大,所以设计数据库的大叔提出了各种隔离级别,来最大限度的提升系统并发处理事务的能力,但是这也是以牺牲一定的隔离性来达到的。

01

MySQL中的MVCC到底能不能解决幻读

脏读:当一个事务读取到其他事务还未提交的数据,因为未提交的数据,不一定是最终有效的数据。所以我们称为读到脏数据了。也就是脏读。 不可重复读:一个事务A读取数据之后,另外一个事务B将此数据修改,此时事务A再次查询,发现数据不一样了。这就是不可重复读。也可以叫做幻读。 幻读:又叫"幻象读",是''不可重复读''的一种特殊场景:当事务1两次执行''SELECT ... WHERE''检索一定范围内数据的操作中间,事务2在这个表中创建了(如[[INSERT]])了一行新数据,这条新数据正好满足事务1的“WHERE”子句。 注:可能有点绕,一般情况下,“不可重复读”和“幻读”大致的意思相同。只不过不可重复度是在数据行上发生的,也就是发生了update操作,再去读取这条数据,出现不可重复读。而幻读是在数据表上发生的,也就是发生了insert与delete操作。再去读取这张表,出现数据条目或者行数(记录数)不一样。出现了幻觉一样。 **

01

事务隔离级别与MVCC (1)—mysql进阶(六十七)

前面我们说了undo日志写入undo页面链表时,先需要把undo page header、undo segment header、undo log header等。每个事务都会有相应的undo链表,如果只存储一点数据不是很浪费吗,于是有了可重用,满足当前链表只有一个页,并且小于总空间的3/4。还介绍了回滚段,默认128个回滚段,每个段有1024个undo slot,每个slot分配给不同的事务,对应一个单独的undo页面链表。Undo日志也会记录redo日志,但临时表的undo日志写入不会记录redo日志,他的记录过程是先修改了数据,则会在系统表空间申请一个rollback segment header页面地址,循环获取,从第0号,第33~127号。分配了回滚段后,在段里查看cache是否存在undo slot,不存在就去rollback_segment_header找到一个undo slot分配该事务,如果没找到,则需要去undo log segment申请一个first undo page

02

MySQL从删库到跑路_高级(七)——事务和锁

A、原子性(Atomicity) 表示组成一个事务的多个数据库操作是一个不可分隔的原子单元,只有所有的操作执行成功,整个事务才提交,事务中任何一个数据库操作失败,已经执行的任何操作都必须撤销,让数据库返回到初始状态。 B、一致性(Consistency) 事务操作成功后,数据库所处的状态和它的业务规则是一致的,即数据不会被破坏。 C、隔离性(Isolation) 在并发数据操作时,不同的事务拥有各自数据空间,它们的操作不会对对方产生干扰。数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性越好,但并发性越弱。 D、持久性(Durabiliy) 一旦事务提交成功后,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证能够通过某种机制恢复数据。

02
领券