首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql事务隔离级别是否应该设置为"read“?

mysql事务隔离级别是否应该设置为"read“?
EN

Stack Overflow用户
提问于 2021-03-22 15:03:10
回答 1查看 250关注 0票数 0

在我的气流升级到2.0.0(然后是2.0.1)并将调度器扩展到3个节点之后,发生了一些奇怪的事情:

hostname(https://github.com/apache/airflow/issues/13692)

  • Task

  • 运行成功,但是任务实例没有被调度到所有

  • 任务中失败,空的

当只有一个调度程序节点时,这些现象从未发生过。

我发现,在调度器节点创建了新dagrun的任务实例之后,在另一个调度器节点的task_instance_scheduling_decisions函数中没有找到它们。

然后我检查了mysql配置,发现默认情况下事务隔离被设置为可重复读取。

在我将事务隔离设置为read之后,现在一切似乎都很好。但我还是想知道有什么副作用吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-22 15:26:25

是的,提交的读与可重复的读取不同。

如果使用可重复读取,则在此事务中:

代码语言:javascript
复制
START TRANSACTION;

SELECT * FROM mytable;

SELECT * FROM mytable; -- i.e. the same query

COMMIT;

您可以保证两个选择都返回相同的结果(只要它们没有锁定查询)。

但在READ中,如果其他会话在两个选择之间提交了对数据的更改,则它们可以返回不同的结果。

换句话说,可重复读取意味着SELECT查询总是返回在开始事务时提交的数据。READ意味着SELECT查询返回事务启动后提交的数据,直到每个SELECT启动为止。

这两个级别的事务隔离都有适当的用途。但他们的行为却不一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66748676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档