2012-09-12 3 views
1

누군가가 트랜잭션 안드로이드 플랫폼에서 SQL을 실행하는 것이 왜 훨씬 빨라 졌는지 설명 할 수 있는지 궁금합니다. 예를 들어 일부 코드와 같은 :안드로이드 SQL 트랜잭션 성능

SQLiteDatabase db = dbHelperExt.getWritableDatabase(); 
db.beginTransaction(); 
try { 
    ... // some sql inserting/updating/deleting 
    db.setTransactionSuccessful(); 
} finally { 
    db.endTransaction(); 
} 

삽입 백을 처리 할 때 나를 위해 속도의 증가는 빠른 시간의 배수하고있다 그리고 나는 이것이 이유에 주로 호기심이었다. 또한, 나는 PHP/myqsl을 다룰 때 같은 종류의 증가를 발견하지 못했다. 그 거래는 무엇인가?

+0

확실하지 않지만 각 트랜잭션 호출이 적은 코드를 사용하도록 SQL 명령을 최적화 할 것입니다. –

답변

2

SQLiteDatabase에 대한 작업을 수행 할 때마다 트랜잭션이 기본적으로 열립니다. 트랜잭션은 파일 열기, db 개체 가져 오기, 요청 수행 및 파일 액세스 해제를 처리합니다. 또한 알 수 있듯이 첫 번째 작업은 시스템에 더 무거운 것입니다. 고유 한 트랜잭션에서 동시에 실행 된 여러 작업을 병합하지 않으면 각 작업에 대해 하나씩 생성됩니다 (즉, 작업 10 개 = 각 작업마다 10 개의 트랜잭션).

하나의 트랜잭션을 모두 사용하면 더 무거운 작업의 95 % 만 수행하면됩니다. 유일한 단점은 요청 중 하나가 실패하면 나머지는 취소된다는 것입니다. 하지만 나에게 이것은 실제로 이점입니다.

편집 :Here 자세한 정보가 있습니다.

+0

링크를 제공해 주셔서 감사합니다. 나는 안드로이드의 시차를 벤치마킹하지 않았지만, 삽입/업데이트로 볼 볼 로그는 매우 빨라졌으며, 아마도 95 % 가까이 더 빨리 감당할 수있을 것입니다. 그리고 나는 "아래쪽"이 실제로 좋은 것임에 동의합니다. – Pzanno