RSS

Optimisasi database SQLite dalam mobile programming

05 Jan

Mampu gak sih aplikasi mobile (ntah iOS, Android, BB) menangani database SQLite berukuran besar (misal, seperti kasus yang baru saya tangani untuk al-qur’an terjemahan beserta kajian tematiknya, yang lebih dari 10000 records)

Pengaruh kah dengan performance?

Jawabannya, iya, mampu, tapi jika tidak dioptimisasi, akan sangat lambat sekali melakukan query, bahkan dapat menyebabkan aplikasi crash.

Ada beberapa trik meningkatkan performa yang dapat dilakukan :

  1. Gunakan BEGIN TRANSACTION dan END TRANSACTION.
    Contoh :

    String query = “SELECT _id, terjemah, tema, ortu, urutan FROM tema_utama_hadits WHERE ortu=\””+ id + “\” ORDER BY urutan ASC”;
    db.beginTransaction();
    try {
    menuslidetematik = db.rawQuery(query, null);
    db.setTransactionSuccessful();
    } finally {
    db.endTransaction();
    }

    Keuntungan : speedup dan meningkatkan performa query dari database
    Kerugian : Tidak bisa rollback database.

  2. Indexing semua field dari tabel yang dibutuhkan
    Contoh :

    CREATE INDEX idx_temautamahadits ON tema_utama_hadits (_id, terjemah, tema, ortu, urutan);


    Keuntungan
    :  Waktu yang dibutuhkan untuk query pencarian (SELECT) untuk setiap record menjadi lebih singkat.
    Kerugian : Butuh extra space untuk temp table.

  3. Biarkan database selalu terbuka (open() ) dan jangan sering open() dan close() database SQLite.
    Selama masih ada query yang berjalan ketika membuka halaman tersebut dari aplikasi, biarkan saja db.open(), jangan sering menggunakan open() dan close() setiap melakukan query.
    Contoh :

    SQLiteDatabase db = dbHelper.getReadableDatabase(); //tanpa db.close() di bagian akhir query.

    Keuntungan : lebih efisien
    Kerugian : dalam beberapa hal membiarkan terbuka database, dapat menyebabkan koneksi menjadi berjalan ganda sekaligus. (bloating cursor)

Semoga bermanfaat🙂

 
Leave a comment

Posted by on January 5, 2014 in Android, Programming

 

Tags: , , , , , , , , , , , , , , , , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: