This was an aside in an unrelated post, and I felt it deserved it's own!
Did you know that using transactions both protects against partial updates, as well as bringing a HUGE performance boost? Make sure to use transactions whenever you create or modify a bunch of records. It's especially effective when seeding a database from e.g. some downloaded data. And also especially so when you are adding records to fixed-schema tables with a lot of indices.
I did some simple experiments today inserting records into a narrow (few fields) (but heavily-indexed) table. Since I only inserted 200 records, it is probably not yet enough records to show the true difference, but... it certainly is significant!
iPhone 5S
Transaction: 150 mSec, or 0.75 mSec/record
No Transaction: 3500mSec, or 17.5mSec/record
Using a transaction was 23 times faster than not using a transaction.
Note that Rhom always uses a transaction internally (you can nest them) but that internal transaction is only for whatever single call you make to Rhom.
FWIW, times on OS X (iOS simulator):
Transaction: 40mSec, or 0.2mSec/record
No transaction: 980mSec, or 4.9 mSec/record
24.5 times faster, so pretty consistent
You can find the code I used here:
1 Replies
This is off my head, but I remember Rob Galvin did a tech talk that included transactions a few months (years ?) back.