1500 개의 레코드가있는 표가있는 iOS 앱이 있습니다. 나는 다음과 같은 양식을 호출, FMDB를 사용하고sqlite3_prepare_v2가 너무 오래 걸리고 (느리게) 메모리를 사용하여 돌아 오지 않습니다.
:
FMDatabase *db = ...
[db executeQuery:@"select num from a where b = ?", 6];
표 "a"는 "B"에 인덱스를 가지고있다.
이것은 시뮬레이터에서 정상적으로 실행되지만 iPad1에서는 매우 오랜 시간이 걸립니다. 앱이 죽을 때까지 메모리를 소모합니다. Instruments는 "sqlite3_prepare_v2"에서 멈췄다 고합니다.
원래 쿼리에도 "order by"절이있었습니다. 테스트를 위해 제거했습니다. 심지어 where 절을 완전히 제거 할 수 있으며 여전히이 방법으로 동작합니다.
어떤 아이디어가 잘못되었을 수 있습니까?
이 문제가 발생하기 전에 다른 쿼리가 작동합니다. 이전에 다른 스레드에서 데이터베이스에 액세스했지만 다른 스레드에서 액세스 할 수 없습니다. 매달린 트랜잭션이있을 수 있다고 생각했지만 그 경우도 아닙니다.
"메모리를 사용합니까?"라는 메시지는 메모리 사용량이 꾸준히 증가하고 있음을 의미합니까? 그것은'sqlite3_prepare_v2' 또는 그로부터 호출 된 일부 함수에 갇혀 있습니까? 이 쿼리에 대해 별도의 DB 연결을 사용하면 아무 것도 변경되지 않습니까? –
예, sqlite3_prepare_v2 호출 중에 메모리 사용이 증가합니다. 앱이 메모리 부족으로 종료 될 때까지 증가합니다. 두 번째 db 연결을 만들면 문제가 해결되지 않았지만 문제점을 좁히는 데 도움이되었습니다. 감사합니다. – David