在已提交读事务和可重复读事务中执行单个 select 查询有什么区别?

What is the difference in executing a single select query in read committed versus repeatable read transaction?

这个问题是 的一个小问题。

问题很简单:在 READ COMMITTEDREPEATABLE READ 事务中执行 SELECT 查询有什么不同吗?我们假设在交易中没有其他查询(甚至 'SELECT' 查询)。因此事务仅执行一个 SELECT 查询。

通常单个 SELECT 语句不会有差异。

例外情况是 SELECT 语句调用用户定义的函数,这些函数本身发出多个 SQL 语句。

在这种情况下,REPEATABLE READ 将使所有这些 SQL 语句共享一个数据库快照,而 READ COMMITTED 将使每个 SQL 语句看到一个数据库的不同状态。