Perkembangan aplikasi sistem informasi saat ini lebih cenderung ke client server, web base dan bahkan ke arah mobile aplication. Aplikasi-aplikasi ini akan mengakses basis data secara bersama-sama sehingga diperlukan kecepatan akses yang cukup tinggi. Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau volumenya. Kalau tidak didukung dengan kecepatan akses yang memadai maka akan semakin menurun unjuk kerjanya. Ukuran unjuk kerja dalam hal ini kecepatan akses data dipengaruhi oleh banyak faktor. Dalam system basis data relasional sering terjadi dibutuhkan pengaksesan data terhadap beberapa tabel sekaligus. Ada beberapa cara dalam melakukan akses ini, namun perlu diperhatikan cara mana yang paling optimal sehingga diperoleh kecepatan akses tertinggi.
Query optimisasi meurpakan sebuah proses memilih query yang plaing efisien dari banyak startegi pengaksesan query, khususnya untuk query yang kompleks. Dalam mendapatkan query yang efisien pemeriksaan dilakukan mulai dari epemeriksaaan akses path yang mungin (primary index akases, secondary indeks aksess, dan full file scan), dan juga variasi teknik join tabel relasional. Tujuan dari optimasisi adalah untuk mengurangi sebanyak mungkin tuple atau baris yang tidak dibutuhkan. Jika kita sudah memiliki query, maka kita bisa mengoptimasi query dengan cara mentransform queyr tersebut. Untuk memeriksa apakah query yang dioptimasi hasilnya sama dengan query yang biasa, ada beberapa rules equivalence. Rule equivalence ini juga bisa sebagai langkah awal untuk mentransform query sehingga lebih efisien. Berikut adalah beberap rule equivalence yang bisa digunakan:
1. Operasi seleksi konjungtif dapat didekonstruski menjadi sekumpulan seleksi individual
2. Operasi seleksi adalah komutatif
3. Hanya operasi final dari operasi sequence proyeksi yang dibutuhkan, yang lainnya dapat diabaikan
4. Seleksi dapat dikombinasikan dengan cartesian product dan theta join
5. Operasi Theta join komutatif
6. Operasi Seleski dapat didistributsikan dinatara operasi union intersection dan set difference
7. Sekumpulan union dan intersection asosiatif
8. Operasi Join didistributsikan dinatara operasi union
PEMBAHASAN
Jika kita diberikan SQL query maka dimungkinkan ada lebih dari satu query aljabar. Beberapa dari query aljabar dibandingkan dengan query alajbar yang lain. Kualitas dari query aljabar ditentukan oleh performansi yang terbaik. Query tersebut kemudian ditransformasikan menggunakan aturan-aturan transformasi aljabar, menjadi query aljabar yang terbaik nantinya. Aljabar query yang terbaik ini dinilai berdasarkan cost function dengan menghitung cost yang terjadi pada saat eksekusi query tersebut. Proses inilah yang disebut query optimisasi.
Tujuan dari query optimisasi adalah :
Untuk menemukan strategi eksekusi untuk query yang paling optimal. Optimisasi query menemukan sebuah plan terbaik dari beberapa kandidat plan yang telah ditemukan. Query optimizer memiliki tiga komponen yaitu:
1. Sebuah ruangan/space untuk search(search space)
Kumpulan dari alternative execution plans yang merepresentasikan inputan query. Plan -plan tersebut ekuivalen dan memiliki hasil yang sama tetapi memiliki perbedaan urutan eksekusi dari operasi - opersasi dan perbedaan bagaimana operasi tersebut di implementasikan.
2. Sebuah cost model
Cost model memprediksi cost dari execution plans yang terbentuk. Cost model harus memiliki pengetahuan yang akurat tentang eksekusi secara parallel.
3. Sebuah search strategy
Search strategy menggali search space yang telah dibuat dan memilih plan terbaik.
OPTIMASI PADA PERINTAH SQL
Desain aplikasi saja tidak cukup untuk meningkatkan unjuk kerja harus didukung dengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Dalam mendesain database, seringkali lokasi fisik data tidak menjadi perhatian penting. Karena hanya desain logik saja yang diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik. Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data. Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut :
================================
CREATE INDEX idx_kota_prop_kodepos
ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;
Kemudian user melakukan query sebagai berikut :
________________________________________________
SELECT * FROM karyawan WHERE propinsi=’Jawa Barat’;
________________________________________________
Pada saat melakukan query ini, 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 propinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak pada block yang berbeda.
Misal pada perintah SQL berikut ini :
_________________________________
SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;
_________________________________
Query ini 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 :
=============================
CREATE TABLE karyawan_urut
AS SELECT * FROM karyawan
ORDER BY id;
Pada SQL diatas, tabel karyawan_urut berisi data yang sama dengan tabel karyawan
hanya datanya terurut berdasarkan kolom id.
”Contoh Kasus
Implementasi pada Wide Area Network (WAN) dimana bandwidth yang terbatas
membuat communication menjadi lebih mahal disbanding biaya pemrosesan local.
Untuk memilih operasioperasi yang terurut sangat penting dengan memperhitungkan
eksekusi cost dari urut-urutan dari kandidatnya. Dengan memperhitungkan cost
eksekusi sebelum query dilakukan seperti static optimization didasarkan pada statistic-statistik fragmen dan berbagai formula untuk memperhitungkan kardinalitas hasil operasioperasi relasional. Oleh karenanya pemilihanoptimisasi sangat bergantung pada ketersediaan statistic-statistik di fragmen.
Aspek yang sangat penting dari query optimisasi adalah join ordering, karena permutasi dari join dapat meningkatkan magnitude dari beberapa permintaan- permintaan. Salah satu dari teknik optimisasi yang mendasar adalah sequence distributed join operation menggunakan semi join operator. Keuntungan utama dari semijoin padasistem terdistribusi adalah untuk mengurangi cost komunikasi pada operan-operan join.
FAKTOR LAIN YANG BERPENGARUH TERHADAP
KECEPATAN AKSES DATA
Faktor lain yang berpengaruh terhadap kecepatan akses data, tidak hanya terletak pada optimasi perintah SQL, tapi terhadap hal-hal lain yang berpengaruh. Diantaranya adalah optimasi aplikasi dan penggunaan cluster dan index. Hal yang akan dibahas dalam optimasi query berikut tidak melibatkan penggunaan komponen yang ada dalam Arsitektur database engine, misal pada database Oracle kecepatan akses data dipengaruhi oleh penyesuaian pada shared pool, buffer cache, redo log buffer dan system operasi yang digunakan.
OPTIMASI APLIKASI
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah 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 sampai 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-toone 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 dana saja yang sering di-query secara bersamaan menggunaan perintah SQL join. Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang 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.
KESIMPULAN
+ Kemajuan dari teknologi Database Management System (DBMS) telah mencapai pada penggunaan teknologi multiprocessing. Oleh karena itu penggunaan DBMS yang mampu menggunakan teknologi multiprocessing sekaligus multiuser sangat diperlukan. Sistem ini telah menjadi tools manajemen data yang dominan pada lingkungan data yang sangat besar.
+ Data yang tersimpan dalam jumlah yang sangat besar, Terdapat aturan system informasi dalam organisasi, system basis data dilihat sebagai bagian system informasi dalam aplikasi berskala besar.
+ Penggunaan Index pada database secara tepat, dapat digunakan untuk meningkatkan kecepatan akses data.
+ Selain optimasi perintah SQL, faktor lain yang berpengaruh terhadap kecepatan akses data adalah optimasi aplikasi dan penggunaan cluster dan index.
+ Optimasi aplikasi tergantung pada efisiensi penggunaan obyek yang mendukung kecepatan akses seperti index atau cluster, dan normalisasi data pada desain database.
1 komentar:
ko' ga update broow?
Posting Komentar