2009-07-25 2 views
0

나는 mysql (5.0.51a-3ubuntu5.4-log)에 연결하는 우분투에서 실행되는 c 프로그램을 가지고 있습니다.삭제 된 행이 다시 나타납니다

프로그램의 주요 작업은 작은 (< 5000 행) myisam 테이블의 레코드를 처리하는 것입니다. 행이 성공적으로 처리되면 h 제됩니다. 그렇지 않은 경우 후일에 재 시도됩니다. 시도가 여러 번 실패하면 삭제됩니다. 삭제는 테이블의 기본 키를 사용하며 보통이므로 low_priority, quick 또는 ignore를 지정하지 않습니다. 프로그램에서 읽기 및 쓰기를 위해 별도의 연결을 사용합니다.

때때로 처리해야하는 행에 대해 다음 폴링에서 삭제 된 레코드가 반환됩니다. 이는 재시도 한계에 도달하여 삭제 된 행에서만 발생합니다. 좀 더 놀랍게도 다음 폴링은 아무 것도 반환하지 않으며 폴링은 삭제 된 행을 반환합니다.

읽기 및 쓰기에 다른 연결을 사용하는 것과 관련이 있습니까? 나는 myisam이 삭제를 위해 테이블 ​​잠금을 사용한다고 생각했기 때문에 삭제가 모든 연결에 의해 즉시 존중되어야한다고 예상했다.

답변

1

"거래"와 같은 문제는 의심 스럽습니다. 삭제 직후 명시 적으로 커밋을하면 어떤 일이 벌어 졌습니까?

관련 문제