首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除上的事务已提交,但在短时间内仍然可以读取这些条目吗?

删除上的事务已提交,但在短时间内仍然可以读取这些条目吗?
EN

Database Administration用户
提问于 2016-05-27 19:32:00
回答 1查看 51关注 0票数 0

我有一个Java应用程序,它使用Spring和HikariCP来池MySQL连接。存在高度并发性,线程在单个表中为给定任务创建唯一条目,然后在完成时删除该条目。每次为线程分配任务时,它首先检查表,以查看该任务是否已在运行。它看起来很好用,而且我没有得到任何死锁,但是在应用程序完全退出之后,我注意到我仍然可以看到表中的条目(使用MySQL工作台)。最终,它们都被成功地删除了。隔离级别是READ_COMMITTED,所以我不知道为什么会看到脏读取。

EN

回答 1

Database Administration用户

发布于 2016-06-04 21:28:09

(我不能回答你的问题,但也许以下几点可以消除你所看到的问题。)

对于长期运行的任务(超过几秒钟),请考虑以下技术:

代码语言:javascript
运行
复制
SET autocommit=1;
UPDATE Tasks SET owner='me' WHERE task='use_car' AND owner IS NULL;
if ROWS_AFFECTED == 0  THEN
     Do something else, or wait, or whatever

START TRANSACTION;
...
COMMIT;

UPDATE Tasks SET owner=NULL WHERE task='use_car';

备注:

  • “任务”的内容被保留在事务之外。
  • 每个UPDATE都是原子的,所以一个简单的自动提交就足够了。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/139774

复制
相关文章

相似问题

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