You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于READ COMMITTED隔离级别下SUM查询与UPDATE交互的疑问

关于READ UNCOMMITTED与READ COMMITTED隔离级别的测试疑问

我用250万条记录测试了READ UNCOMMITTED和READ COMMITTED隔离级别,操作步骤如下:

  1. 在会话A中执行:
BEGIN;
SELECT SUM(salary) FROM salaries;
  1. 在SUM执行完成前,立即在会话B中执行:
BEGIN; UPDATE salaries SET salary = 10000 WHERE emp_no = 250000; COMMIT;

测试结果

  • 会话A使用READ UNCOMMITTED隔离级别时,结果包含UPDATE后的数值(符合预期)。
  • 会话A使用READ COMMITTED隔离级别时,结果为UPDATE前的数值(存在困惑)。

疑问与待确认点

我原本认为READ UNCOMMITTED和READ COMMITTED的区别仅在于是否读取其他连接已COMMIT的变更,但此场景中UPDATE已提交,结果却不同。想确认:

  • 只要隔离级别为READ COMMITTED或更严格级别,大SELECT执行期间的UPDATE等操作是否不会影响其结果?如果是,原因是什么?(毕竟当SELECT扫描到更新行时UPDATE已提交)
  • 补充说明:若SELECT在UPDATE之后启动,即使是SERIALIZABLE隔离级别,会话A也能读取到更新后的数据。

测试数据来源:使用datacharmer的test_db测试数据集

内容的提问来源于stack exchange,提问作者akai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:02:05