2016-04-14 3 views
2

В моем приложении для Android я выполняю операции SQlite DB, такие как вставка, удаление, обновление записей. я хочу знать, если я делать, как показано ниже:Являются ли Sqlite Insert, Delete, Synchronous in android

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

делает t2-t1 будет равна времени, необходимого для вставки N записей в БД. Я имею в виду вызов вставить синхронный или асинхронный.

+0

они синхронны! –

ответ

1

Если вы находитесь внутри транзакции, данные будут фактически записаны и синхронизированы только при завершении транзакции.

Если вы не используете явные транзакции, все происходит внутри вызова insert(), и вы действительно будете измерять то, что хотите. Однако такие операции выполняются с неявной транзакцией, что делает их довольно медленными (поскольку для каждой команды есть служебные данные синхронизации).

Когда вы делаете несколько взаимосвязанных операций базы данных, вы должны поместить их все в одной транзакции:

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 для всех записей. Затем выполните некоторые вычисления. И, основываясь на этих показателях, я вставляю запись в БД. Итак, когда блок finally выполняет это значение, все записывается в БД, правильно? –

+0

Возможно, что у БД заканчивается память раньше, и нужно что-то написать. Однако только после завершения транзакции * гарантировано *, что все написано. –

0

это синхронная вставка, потому что вставить один за другим в других должны выполнить первую вставку для выполнения второго

вы также можете использовать AsyncTask решить Insert Speed ​​проблемы

-1

, если вы звоните эти методы CRUD из нескольких мест, то лучше, чтобы сделать эти методы Синхронизирован, чтобы избежать блокировки и получения исключения.