2016-04-14 10 views
2

私のアンドロイドアプリケーションでは、挿入、削除、更新レコードなどのSQlite DB操作を行っています。私は以下のように行う場合 私は、知りたい:Sqliteの挿入、削除、アンドロイドの同期

long t1 = System.currentTimeMillis(); 
for(i =0; i<N; i++) 
{ 
    insertRecord(); 
} 
long t2 = System.currentTimeMillis(); 

はT2-T1はDBにN個のレコードを挿入するのにかかる時間に等しくなりますし。 私は、同期または非同期を挿入する呼び出しを意味します。

+0

これらは同期しています! –

答えて

1

を解決するためのAsyncTaskを使用することができます。一方で次々に挿入するので、これは同期インサートでありますトランザクションが終了すると、データは実際に書き込まれ、同期されます。

明示的なトランザクションを使用していない場合は、insert()コールですべてが発生します。実際には、あなたが望むものが測定されます。 しかし、このような操作は暗黙のトランザクションで実行されるため、(各コマンドに同期オーバーヘッドがあるため)遅くなります。

あなたはいくつかの関連するデータベース操作をやっているときは、1つのトランザクションにそれらのすべてを置く必要があります。

long t1 = System.currentTimeMillis(); 

db.beginTransaction(); 
try { 
    for(i =0; i<N; i++) { 
     insertRecord(); 
    } 
    db.setTransactionSuccessful(); 
} finally { 
    db.endTransaction(); 
} 

long t2 = System.currentTimeMillis(); 
+0

InsertRecord()の中で、私はDBにすべてのレコードを照会します。次に、いくつかの計算を行います。そしてその計算に基づいて、レコードをDBに挿入します。 最終的にこのブロックをブロックすると、すべてがDBに書き込まれます。 –

+0

DBのメモリが不足している可能性があり、何かを書き込む必要があります。しかし、トランザクションの終了後に限り、すべてが書かれている*保証されています。 –

0

秒1

を実行するための最初のインサートを実行する必要があり、それはあなたが内部にある場合は、また、挿入速度の問題

-1

あなたが複数の場所からこれらのCRUDメソッドを呼び出している場合、これらのメソッドを作る方が良いですロックと例外の発生を避けるために同期されています。

関連する問題