Optimisasi Query


Optimisasi Query

    Seiring dengan berjalannya waktu, eksekusi query terasa lambat entah karena query yang tidak optimal atau data yang semakin besar. Maka kita harus mengoptimalkan query kita dengan tujuan supaya aplikita dapat bekerja dengan cepat, dan juga berdampak untuk kelangsungan terhadap aplikasi kita. 
     Optimisasi Query sendiri adalah suatu cara yang digunakan untuk membuat query berjalan dengan efisien dan efektif yang nantinya bertujuan untuk meminimalisir total waktu yang digunakan ketika proses query itu sendiri berjalan. Untuk mengoptimalkan jalannya query ada beberapa cara yang akan saya sampaikan antara lain:
      1. Memahami operator yang dapat menyebabkan tidak dapat digunakannya index.
      2. Menghindari operasi pada kolom.
      3. Optimasi kolom dengan tipe data date.
      4. Hindari Type Conversion.
      5. Hindari Select * ?, Tidak selalu.
      6. Pindahkan filter dari WHERE ke klausa SELECT.
      7. Hindari looping query.
      8. dan lain sebagainya.
     Diluar dari beberapa cara untuk megoptimisasi tersebut, ada kondisi tertentu dimana kita tidak isa kita optimisasikan, contohnya pada saat suatu query melibatkan fungsi agresasi pada tabel yang memiliki banyak data dan sebagainya.

SQL Tuning

     Menurut Immanuel Chan (2008, p11-1), SQL Tuning adalah sebuah proses optimasi dengan cara mengubah perintah-perintah SQL serta menentukan teknik indexing agar SQL tersebut bekerja secara optimal.
Tujuan dari tuning sistem adalah untuk mengurangi waktu respon sistem terhadap end user, atau untuk mengurangi resource yang digunakan untuk memproses pekerjaan yang sama. Kita dapat memenuhi kedua tujuan ini dalam beberapa cara:

a.     Mengurangi Beban Kerja (Reduce the Workload)
SQL Tuning secara umum melibatkan pencarian cara yang lebih efisien untuk memproses beban kerja yang sama. SQL tuning memungkinkan untuk mengubah rencana eksekusi dari suatu statement tanpa mengubah fungsionalitas untuk mengurangi pemakaian resource.Dua contoh bagaimana penggunaan resource dapat dikurangi:
Jika suatu query yang biasa dieksekusi perlu untuk mengakses suatu persentase kecil dari data dalam tabel, maka query tersebut dapat dieksekusi dengan lebih efisien dengan menggunakan indeks. Dengan membuat indeks, kita dapat mengurangi jumlah pemakaian resource.
Jika seorang user mencari dua puluh baris pertama dari 10000 baris yang diberikan oleh perintah pengurutan yang spesifik, dan jika query (dan perintah pengurutan) dapat dipenuhi oleh indeks, maka user tidak perlu untuk mengakses dan mengurutkan 10000 baris untuk melihat dua puluh baris.

b.  Menyeimbangkan Beban Kerja (Balance the Workload)
Sistem cenderung memiliki penggunaan penuh pada siang hari ketika user yang sebenarnya terhubung ke sistem dan penggunaan yang sedikit di malam hari. Jika noncritical report dan batch job dapat dijadwalkan untuk berjalan pada malam hari dan penggunaan sistem pada siang hari dikurangi, maka hal tersebut dapat membebaskan resource agar dapat digunakan pada program-program yang lebih penting pada siang hari.

c.   Memparalelkan Beban Kerja (Parallelize the Workload)
Query-query yang mengakses sejumlah besar data (typical data warehouse queries) sering dapat diparalelkan. Hal ini sangat berguna untuk mengurangi waktu respon dalam data warehouse yang rendah konkurensinya. Akan tetapi, untuk lingkungan OLTP, yang cenderung tingggi konkurensinya, hal ini dapat merugikan user-user lain dengan meningkatkan penggunaan resource secara keseluruhan pada program.

Comments

Popular Posts