2012-04-04 2 views
0

블랙 베리에서 SQLite로 작업하는 동안 많은 장애물을 극복했습니다. 이제는 모든 것이 잘 작동하는 것처럼 보였고 쿼리를 빠르게 할 수있는 방법을 찾고 있습니다.블랙 베리 SQLite 최적 성능

가끔 내 앱이 웹 서비스 호출에서 많은 데이터를 가져오고,이 데이터가 구문 분석되어 내 데이터베이스에 저장됩니다. 많은 DELETE, INSERT 및 UPDATE가 진행됩니다. 데이터베이스 호출에 많은 시간이 걸리는 것 같습니다.

SQLite를 다룰 때 유용한 정보를 알고 싶습니다. 블랙 베리 플랫폼에서 특별히 경험이있는 사람들이 선호합니다. DELETE 또는 INSERT 등의 속도를 높이는 모든 트릭 ....

좋은 자습서로의 링크가 좋습니다. 또는 유용한 코드를 더 잘 보여줄 수도 있습니다. 사전에

감사합니다.

편집 :

다음은 거래를 사용하는 Blackberry의 몇 가지 샘플 코드입니다.

import net.rim.device.api.ui.*; 
import net.rim.device.api.ui.component.*; 
import net.rim.device.api.ui.container.*; 
import net.rim.device.api.database.*; 
import net.rim.device.api.io.*; 
public class UsingTransactions extends UiApplication 
{ 
public static void main(String[] args) 
{ 
    UsingTransactions theApp = new UsingTransactions(); 
    theApp.enterEventDispatcher(); 
} 
public UsingTransactions() 
{ 

} 
} 

class UsingTransactionsScreen extends MainScreen 
{ 
    Database d; 
public UsingTransactionsScreen() 
{ 
    LabelField title = new LabelField("SQLite Using Transactions Sample", 
    LabelField.ELLIPSIS | 
    LabelField.USE_ALL_WIDTH); 
    setTitle(title); 
    add(new RichTextField(
      "Updating data in one transaction in MyTestDatabase.db.")); 
    try 
    { 
     URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" + 
      "MyTestDatabase.db"); 
     d = DatabaseFactory.open(myURI); 

     d.beginTransaction(); 
     Statement st = d.createStatement("UPDATE People SET Age=7 " + 
      "WHERE Name='Sophie'"); 
     st.prepare(); 
     st.execute(); 
     st.close(); 
     st = d.createStatement("UPDATE People SET Age=4 " + 
      "WHERE Name='Karen'"); 
     st.prepare(); 
     st.execute(); 
     st.close(); 
     d.commitTransaction(); 
     d.close(); 
} 
catch (Exception e) 
{ 
     System.out.println(e.getMessage()); 
     e.printStackTrace(); 
} 
    } 
} 

매번 문장을 닫는 이유가 있습니까? 마지막으로 한 번만 닫는 것이 더 좋지 않습니까? (아마 Finally 블록에서)?

답변

3

표준 기술은 준비된 삽입 문을 트랜잭션 내에서 루프 내부에서 사용하는 것입니다. 대부분의 경우 효율성이 거의 최적화됩니다. 그것은 적어도 규모의 순서에 의해 물건을 속도 것입니다.

2

나는 개인적으로 많은 블랙 베리 고유의 방법을 모르지만, 이들은 (내가 코드 조각을 찾을 수 없습니다 죄송합니다) 도움이 될 것 같다 :

"Best Practice: Optimizing SQLite Database Performance"

"Top 8 SQL Best Practices"

이 도움을 희망 !

+0

두 번째 문서는 Blackberry 문서이며, SQLite 래퍼에 원하는대로 정확하게 처리 할 수있는 것처럼 보입니다. 마지막에 "대량 작업 메소드 사용"절과 "명시 적 트랜잭션 사용"절을보십시오. 저널링을 해제 할 수도 있지만 개인적으로는별로 다르지 않습니다. –

+0

고마워. 또한 VACUUM을 사용하여 데이터베이스 파일의 조각 모음을 수행하는 방법을 살펴 보았습니다. 얼마나 자주이 작업을 수행해야하며 db 파일 자체의 크기를 줄이는 것 이외의 다른 방법으로 도움이됩니까? – PaulG

1

한 가지해야 할 것은 데이터베이스 처리 코드에 대해 다른 방법을 만들어야한다는 것입니다. 을 입력하고 주 코드에서 개를 열어개를 닫으십시오. 각 블록마다 데이터베이스를 호출하기 만하면됩니다. 중복성을 줄이고 미래를 위해 더 나을 것입니다. 이것은 또한 앱 성능에 도움이됩니다.