안드로이드 개발 질문/답변
(글 수 45,052)
sqlite을 이용하는 앱을 개발중인데,
select 쿼리의 경우 데이터의 양이 얼마 되지 않아서인지 빠르게 불러 오는데,
insert나 update, delete 구문 시 처리하는데 몇 초가 걸리네요. (1,2초 심하면 가끔 3,4초, 어쩌다 시스템 다운.)
애뮬레이터 상으론 데스크탑 성능 때문인지 육안으로는 느리다고 느끼지 못하구요.
갤럭시S로 옮겨서 돌려보니
UI 속도는 빠른데 sqlite 문제인지 폰 문제인지, 위 sql구문 처리에는 시간이 꽤 걸립니다.
답답하게 느낄정도입니다.
구글링을 해보니, sqlite는 인서트시 내부적으로 무조건 트랜잭션을 돌린다는(??) 그래서 퍼포먼스의 한계를 갖고 있고,
db를 이용한 프로그래밍에는 제약이 따른다는 힌트를 얻긴 했는데,,
sqlite 퍼포먼스를 향상시킬 수 있는 방법이 있을거라 생각하고요.
고수님들 자문 좀 구합니다.
select 쿼리의 경우 데이터의 양이 얼마 되지 않아서인지 빠르게 불러 오는데,
insert나 update, delete 구문 시 처리하는데 몇 초가 걸리네요. (1,2초 심하면 가끔 3,4초, 어쩌다 시스템 다운.)
애뮬레이터 상으론 데스크탑 성능 때문인지 육안으로는 느리다고 느끼지 못하구요.
갤럭시S로 옮겨서 돌려보니
UI 속도는 빠른데 sqlite 문제인지 폰 문제인지, 위 sql구문 처리에는 시간이 꽤 걸립니다.
답답하게 느낄정도입니다.
구글링을 해보니, sqlite는 인서트시 내부적으로 무조건 트랜잭션을 돌린다는(??) 그래서 퍼포먼스의 한계를 갖고 있고,
db를 이용한 프로그래밍에는 제약이 따른다는 힌트를 얻긴 했는데,,
sqlite 퍼포먼스를 향상시킬 수 있는 방법이 있을거라 생각하고요.
고수님들 자문 좀 구합니다.
2010.07.20 21:10:45

확실히 select에 비해 insert, update가 느리긴 합니다.
UI를 잡고 멈춰있지 않도록 백그라운드에서 돌리던가
느린 쿼리는 최대한 자제(또는 쿼리 한 번에 처리한다거나)하는 수 밖에 없을껍니다.
그 외에 table에 필요없는 index 같은걸 정리해주는 등, DB 자체를 최적화하는 것도 방법이 되겠죠.
UI를 잡고 멈춰있지 않도록 백그라운드에서 돌리던가
느린 쿼리는 최대한 자제(또는 쿼리 한 번에 처리한다거나)하는 수 밖에 없을껍니다.
그 외에 table에 필요없는 index 같은걸 정리해주는 등, DB 자체를 최적화하는 것도 방법이 되겠죠.
2010.07.20 22:32:18
transaction 처리 하시면 빨라 집니다. 동일 table일경우 확실히 느낄 수 잇어요
db.beginTransaction(); try{ db.insert(..): db.delete(); db.update(); db.setTransactionsSuccessful(); }finally{ db.endTransaction(); }
현재 구현하는 프로그램이 사용자 입력을 받아서 단순히 sqlite db에 데이터를 기록하는 겁니다.