2009-07-25 65 views
0

我有一个运行在ubuntu上的连接到mysql(5.0.51a-3ubuntu5.4-log)的c程序。删除行重新出现

该程序的主要任务是处理来自一个小(< 5000行)myisam表的记录。如果该行成功处理,则会被删除。如果不是,则在后一日重试。一些失败的尝试后,它被删除。删除使用表主键,并且很简单,即它不指定low_priority,快速或忽略。 该程序使用单独的连接进行读取和写入。

对于需要处理的行,下一次轮询有时会返回已删除的记录。这似乎只发生在由于达到重试限制而被删除的行上。更令人惊讶的是,有时候下一次轮询不会返回任何数据,并且之后的轮询返回删除的行

这与使用不同连接进行读取和写入有关吗?我希望所有连接能够立即执行删除操作,因为我认为myisam使用了表锁来删除。

回答

1

听起来像是一个“交易”问题。你是否尝试过在删除后明确提交的情况下会发生什么?