Rabu, 18 September 2013

OPTIMASI QUERY - Faktor-Faktor yang Berpengaruh Terhadap Kecepatan Akses Data

Faktor lain yang berpengaruh terhadap kecepatan akses data, tidak hanya terletak pada optimasi perintah SQL, melainkan diantaranya adalah optimasi aplikasi dan penggunaan cluster dan index.

·         OPTIMASI APLIKASI

Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga  bagaimana cara database didesain. Apakah desain database sudah melakukan normalisasi data secara tepat.

Kadangkala normalisasi samapai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one to one dan sering diakses bersama, lebih baik disatukan dalam satu tabel.

·         CLUSTER DAN INDEX

Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunakan perintah SQL join.


Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap. 

OPTIMASI QUERY - Informasi Jalur Akses Query

Pada Database Oracle, informasi untuk melihat jalur akses yang akan digunakan untuk eksekusi database saat melakukan query dapat dilihat dengan menggunakan perintah explain plain. Informasi ini disimpan dalam tabel PLAN_TABLE yang terdapat di schema user yang mengeksekusi perintah tersebut.
Sebelum melakukan perintah explain plan, terlebih dahulu buat table PLAN_TABLE dengan menggunakan script utlxplan.sql yang diambil dari \%ORACLE_HOME%\RDBMS\ADMIN.

Setelah itu table PLAN_TABLE dapatdigunakan seperti contoh berikut :
SQL>explain plan
Set statement_id=’test1’
Into plan_table for
Select * from karyawan where gaji=2000000;
Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama test1 yang terdefinisikan pada kolom statement_id.

Untuk melihat rencana eksekusi dari test1, digunakan perintah SELECT berikut :











Contoh hasil dari eksekusi query tersebut :















Output tersebut dibaca mulai dari  yang  menjorok paling dalam yaitu : TABLE ACCESS FULL KARYAWAN. Dikarenakan klausa WHERE melibatkan kolom gaji namun kolom gaji tidak ada index-nya, maka Oracle melakukan full table scan. Setelah seluruh table karyawan selesai dibaca, selanjutnya adalah SELECT STATEMENT yang berfungsi untuk menampilkan hasil query.

OPTIMASI QUERY - Optimasi Perintah SQL

Cara mengoptimalkan perintah SQL tidak cukup dengan mendesain aplikasinya saja. Dalam mendesain database, seringkali lokasi fisik di nomor duakan. Terlebih hanya fokus terhadap desain logik saja. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Penggunaan index yang tidak tepat untuk kerja, tidak akan meningkatkan kecepatan akses data. Hal tersebut dikarenakan index pada database digunakan untuk meningkatkan kecepatan akses data. Cara kerjanya, pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk.


Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota, provinsi, dan kode pos dari tabel karyawan, sebagai berikut :









Kemudian user melakukan query sebagai berikut :

Pada saat melakukan query tersebut, index tidak akan digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut provinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari dibeberapa data file yang terletak pada block yang berbeda.

Misal pada perintah SQL berikut ini :








Query di atas akan melakukan “scan” terhadap sedikit data block jika tabel karyawan diatas diurutkan berdasarkan kolom id. Untuk mengurutkan berdasarkan kolom yang berbeda-beda maka tabel disimpan dalam flat file, kemudian tabel diekspor dan diurutkan sesuai kebutuhan.

Alternatif yang lain, bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut :










Pada SQl diatas, tabel karyawan_urut berisi data yang sama dengan tabel karyawan hanya datanya terurut berdasarkan kolom id.


Mengenai Saya

Foto saya
Saya mahasiswa di Universitas Dian Nuswantoro Semarang. Semoga artikel yang saya postingkan dapat menambah informasi pengetahuan dan menambah pembelajaran hidup anda. Terima Kasih kepada anda yang telah mengunjungi blog ini. --brain--