shbinyan
shbinyan
2021-02-16 20:23
采纳率: 50%
浏览 36

请问下各位mysql和postgresql的事务开启机制啊

请问下啊,我在网上看到描述mysql事务的这样一段话:

If the transaction isolation level is REPEATABLE READ (the default

level), all consistent reads within the same transaction read the

snapshot established by the first such read in that transaction.

With READ COMMITTED isolation level, each consistent read within a transaction sets and reads its own fresh snapshot.

解释是在RR隔离级别下,执行start transaction命令后,并未开启事务,而是等到第一条语句执行时开启事务并建立一致性读的snapshot。原文地址:

https://blog.csdn.net/weixin_29596789/article/details/113146484

1. 我有点晕,这个所谓的第一条语句必须是select语句吗?

2. 而且是对限定条件的数据建立快照吗?原文里提到了such read,那是不是说第一条select语句如果查的是id=5的记录,那就只对这条语句执行前(而不是start transcation语句前)的1条记录建立快照吗?第2条select语句如果查的是id>5的记录,那就只对第2条语句执行前的id>5的记录建立快照吗?

3. postgresql也是这样吗?或者说是在执行start transaction命令后就建立快照?谢啦

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • huanhuilong
    幻灰龙 2021-02-17 00:13
    已采纳

    参考:

    这2篇解释的很清晰:

    https://www.cnblogs.com/sunjingwu/p/12386660.html

    https://www.cnblogs.com/digdeep/p/4947694.html

     

    MySQL/PG 都按这种方式自己动手验证应该是最好的路径。

     

    点赞 1 评论
  • shbinyan
    shbinyan 2021-02-17 16:26

    谢谢啊很清晰

    点赞 评论

相关推荐