2012-08-15 2 views
0

내 응용 프로그램에는 끊임없이 트랜잭션 내에서 SQLite 데이터베이스에 데이터를 보내고 쓰는 스레드가 있으며 트랜잭션이 완료되면 트랜잭션을 커밋합니다.SQLIte 읽기/쓰기 경합

동시에 응용 프로그램이 장기 실행 쿼리를 실행하면 쓰기 스레드가 차단되고 데이터가 기록되지 않습니다. 각 메소드는 동일한 연결 객체를 사용합니다.

SQL (nolock) 쿼리 또는 다른 방법으로 내 테이블을 잠그지 않는 방법이 있습니까?

감사합니다.

답변

0

개념 오류가 있습니다. SQLite는이 방법에서 작동 :

기존의 파일/열기 작업을()와 는이 콘텐츠에 대한 단독 액세스를 얻을 수 BEGIN TRANSACTION을 실행하는 sqlite3_open을 수행합니다. 파일/저장 COMMIT 다음에 다른 BEGIN TRANSACTION이옵니다. 트랜잭션 중 을 사용하면 응용 프로그램 파일의 업데이트가 원자, 내구성, 독립성 및 일관성이 보장됩니다.

이렇게 작업 할 필요가 없으므로이 방법으로 작업 할 수 없습니다. 나는 당신이 알고리즘을 SQLite로 작업 할 것을 재고해야한다고 생각한다. 그 이유는 연결이 차단 된 이유입니다.

더 많은 정보 :

When use it.

FAQ

Using threads on SQLite: avoid them!

관련 문제