gpt4 book ai didi

python - 我怎样才能确保innodb线程安全

转载 作者:可可西里 更新时间:2023-11-01 08:19:53 24 4
gpt4 key购买 nike

我有一个 InnoDB 表,其中列出了一堆需要处理的文件。

负责处理的 python 脚本基本上是这样做的:

  1. 获取状态为“未处理”的下一个文件
  2. 将状态设置为“处理中”
  3. 调用一些 C++ 脚本来处理该文件
  4. 将其标记为“已处理”
  5. 结束

这个 python 脚本将被调用多次,所以我有点担心在第 1 步和第 2 步可能会出现一些问题,其中进程 B 会在进程 A 有时间之前从数据库中获取与进程 A 相同的行在步骤 2 中更新状态。

我猜 Python GIL 在这里对我没有帮助,因为解释器会在执行 SQL 时释放 GIL(对吗?)。从我正在阅读的内容来看,在 InnoDB 上进行表锁定是行不通的。行级锁定会解决这里的问题吗?如果没有,我的其他选择是什么?

我可以简单地做“from threading import Lock”并添加

with lock:
update_file_status(file_id, "processing")

?

最佳答案

使用 SELECT FOR UPDATE 语句 - 这将获取该行的独占锁,并且不允许同一行上的其他 SELECT FOR UPDATE

关于python - 我怎样才能确保innodb线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com