ormlite 일괄 처리 작업
4621 단어 orm
http://stackoverflow.com/quegoogstions/11761472/ormlites-createorupdate-seems-slow-what-is-normal-speed
This may be the "expected" speed unfortunately. Make sure you are using ORMLite version 4.39 or higher.
createOrUpdate(...)
was using a more expensive method to test for existing of the object in the database beforehand. But I suspect this is going to be a minimal speed improvement. If I create 100 new rows then the speed is even slower.
By default Sqlite is in auto-commit mode. One thing to try is to wrap your inserts (or your
createOrUpdate
s) using the the ORMLite Dao.callBatchTasks(...)
method. In by BulkInsertsTest android unit test , the following
doInserts(...)
method inserts 1000 items. When I just call it: doInserts(dao);
It takes 7.3 seconds in my emulator. If I call using the
callBatchTasks(...)
method which wraps a transactions around the call in Android Sqlite: dao.callBatchTasks(new Callable<Void>() { public Void call() throws Exception { doInserts(dao); return null; } });
It takes 1.6 seconds. The same performance can be had by using the
dao.setSavePoint(...)
method. This starts a transaction but is not as good as the callBachTasks(...)
method because you have to make sure you close your own transaction: DatabaseConnection conn = dao.startThreadConnection(); Savepoint savePoint = null; try { savePoint = conn.setSavePoint(null); doInserts(dao); } finally { // commit at the end conn.commit(savePoint); dao.endThreadConnection(conn); }
This also takes ~1.7 seconds.
dao.setsavePoint 에서 업 무 를 시작 하지만
callBachTasks(...)
방법 보다 못 합 니 다.자신의 업 무 를 닫 아야 하기 때 문 입 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
장고 효율성 - select_relatedUno de los grandes desafíos de una aplicación cuando esta está siendo utilizada en producción, es que tenga un tiempo de...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.