코어 데이터로 데이터를 가져오고 저장 작업이 느린 것을 확인하십시오. iOS 시뮬레이터를 사용하여 sqlite-wal 파일이 7GB가 넘을 때까지 성장하고 성장하는 것을 봅니다.핵심 데이터 sqlite-wal 파일은 ~ 5000 행을 삽입 할 때 대량 (> 7GB)이됩니다.
약 10 개의 필드로 약 5000 개의 레코드를 가져오고 있습니다. 이것은 많은 데이터가 아닙니다.
삽입하는 각 객체는 다양한 다른 객체 (6 개의 관계 전체)와 1 대 1의 관계가 있습니다. 합쳐진 기록은 모두 20 필드 미만입니다. 이미지 나 바이너리 데이터 또는 WAL 파일의 결과 크기가 왜 그렇게 큰지 알 수있는 어떤 것도 없습니다.
나는 wal 파일을 설명하는 sqlite 문서를 읽었으며 어떻게 될지 모르겠습니다. 원본 데이터는 50MB를 넘지 않습니다.
내 응용 프로그램이 멀티 스레드입니다. 가져 오기를 수행하는 백그라운드 스레드에 관리 대상 개체 컨텍스트를 만듭니다 (핵심 데이터 개체를 만들고 저장합니다).
코드를 작성하지 않고이 문제가 발생 했습니까? 누구든지 내가 조사해야 할 것에 대해 생각해 봤어. 코드는 매우 간단하지 않으며 모든 부분이 여기에 입력하는 데 시간이 걸리므로 일반적인 아이디어로 시작하십시오.
나는 올바른 방향으로 가고있는 사람을 신용 할 것입니다.
추가 정보 :
- 나는 (나는 그것이 iOS에서 기본적으로 전무을 생각하지만 명시 적으로 전무로 설정)이 필요하지 않는 한 나는 상황을 위해 사용할 실행 취소 관리자를했습니다.
- 전체 루프가 완료되고 모든 관리 객체가 RAM에있는 경우에만 저장을 호출합니다 (RAM은 최대 100MB btw).
- 코어 데이터 객체의 루프 및 생성에는 5 초 정도 밖에 걸리지 않습니다. awl 파일을 쓰면 저장하는 데 약 3 분이 걸립니다.
코드를 입력 하시겠습니까? – Shmidt
필요한 경우 알려 드리겠습니다. 그러나 나는 정말로 아이디어를 먼저 찾고 있습니다. 래퍼 클래스와 다중 스레드를 사용하기 때문에 많은 코드가 호출됩니다. 이 동작은 sqlite 하위 시스템과 관련이있는 것으로 보입니다. 나는 그것이 내가하고있는 일이라고 확신한다. 누구에게도이 문제가 발생하지 않았다면 코드를 게시하고이 문제의 원인을 확인할 수 있습니다. –
코어 데이터 SQL 디버깅을 켜서 실제로 실행중인 SQL을 확인해 보셨습니까? –