PENGENALAN SINGKAT PROSES DAN OPTIMISASI QUERY

 

Database Manajemen Sistem (DBMS) adalah kumpulan dari program- program yang membolehkan user untuk menciptakan dan memelihara sebuah database. DBMS sudah menjadi peralatan standar untuk melindungi pengguna komputer  dari  bagian-bagian  kecil  dalam  pengelolaan  secondary  storage  (hard disk). DBMS didesain untuk meningkatkan produktivitas dari aplikasi para programmer dan  untuk memberikan kemudahan pengaksesan data oleh komputer.

Pengaksesan data di dalam DBMS dapat dilakukan dengan berbagai macam cara. Dan tentunya dalam melakukan pengaksesan data ada hal-hal yang perlu diperhatikan seperti ketepatgunaan implementasi dari data itu sendiri serta waktu prosesnya. Ada banyak plan (rencana) yang dapat diikuti oleh database manajemen sistem dalam memproses dan menghasilkan jawaban sebuah query. Semua plan pada akhirnya akan menghasilkan jawaban (output) yang sama tetapi pasti mempunyai harga yang berbeda-beda, seperti misalnya total waktu yang diperlukan untuk menjalankan sebuah query.

Optimisasi query mencoba memberikan suatu pemecahan untuk menangani masalah tersebut dengan cara menggabungkan sejumlah besar teknik-teknik dan strategi, yang meliputi transformasi-transformasi logika dari query-query untuk mengoptimisasi jalan akses dan penyimpanan data pada sistem file. Setelah ditransformasikan, sebuah query harus dipetakan ke dalam sebuah urut-urutan operasi untuk menghasilkan data-data yang diminta.

Sebuah query yang diekspresikan dalam sebuah bahasa query tingkat tinggi seperti SQL mula-mula harus dibaca, diuraikan dan disahkan (scanning, parsing, validating)1. Query tersebut kemudian dibentuk menjadi sebuah struktur data yang biasa disebut dengan query tree. Dan kemudian DBMS (Database Manajemen Sistem) harus merencanakan sebuah strategi eksekusi untuk mendapatkan kembali hasil dari query dari file-file database. Tahapan-tahapan proses dari sebuah query di

dalam sebuah sistem, dan berikut penjelasan dari masing-masing tahapan :

·       Scanner  melakukan  identifikasi  (pengenalan)  token-token  seperti  SQL

 

keywords, attribute, dan relation name. Proses ini disebut dengan scanning.

 

·       Query Parser mengecek kevalidan query dan kemudian menterjemahkannya ke dalam sebuah bentuk internal yaitu ekspresi relasi aljabar atau parse tree. Proses ini disebut dengan parsing.

·       Query  Optimizer  memeriksa  semua  ekspresi-ekspresi  aljabar  yang  sama untuk query yang diberikan dan memilih salah satu dari ekspresi tersebut yang terbaik yang memiliki perkiraan termurah. Dengan kata lain, tugas dari query optimizer adalah menghasilkan sebuah rencana eksekusi. Proses ini disebut dengan optimisasi query.

·       Code Generator atau Interpreter mentransformasikan rencana akses yang dihasilkan oleh optimizer ke dalam kode-kode. Setelah itu, kode-kode tersebut dikirimkan ke dalam  query processor untuk dijalankan.

·       Query Processor melakukan eksekusi query untuk mendapatkan hasil query yang diinginkan.

 

Bagian Query Optimizer adalah merupakan komponen utama yang berperan penting dalam proses optimisasi query yang menjadi topik utama dari seluruh pembahasan ini.

Alasan dibahasnya tahapan proses diatas adalah semata- mata untuk memberikan gambaran yang jelas tentang bagaimana pada umumnya sebuah query diproses di dalam sebuah Database Manajemen Sistem (DBMS).

 

 

Hubungan Database Dengan Pemrosesan Query

 

Database adalah kumpulan dari data-data yang berhubungan satu sama lainnya yang digunakan untuk pencarian suatu data tertentu pada saat SQL query dijalankan.  Sebuah  database  dirancang,  dibuat  dan  ditempati  oleh  data  dengan tujuan tertentu. Di dalam sistem database relasional, tabel-tabel dari database saling berhubungan satu sama lainnya. Dan sebuah tabel database akan selalu memiliki attribute names  (nama-nama attribute),  relation  names  (nama-nama relasi), dan tuples (record-record).

Attribute digunakan untuk mengidentifikasikan sebuah nama yang diikutsertakan  dalam  relasi  dan  menspesifikasikan  domain  (tipe  data  sederhana yang menentukan sebuah pemisahan data). Sedangkan tuples adalah kumpulan dari record-record di dalam sebuah database. Relation name mendefinisikan attribute- attribute yang diperlukan dalam predikat dan mendefinisikan arti dari predikat tersebut.

 

Sistem Katalog Dalam Database Manajemen Sistem (DBMS)

Sistem katalog adalah sebuah sistem yang digunakan untuk menyimpan informasi-informasi  mengenai  suatu  database.  Informasi  yang  disimpan  dalam sebuah katalog dari sebuah relasional database manajemen sistem  meliputi relation names, attribute names, dan attributes domains (tipe-tipe data)gambara dari batasan-batasan  (primary key, secondary key, foreign key, NULL/NOT NULL dan tipe-tipe dari batasan-batasan lainnya), dan bentuk-bentuk penyimpanan dan index- index. Query optimizer melakukan akses pada katalog untuk jalan akses, implementasi (pelaksanaan) informasi, dan data statistik untuk menentukan jalan terbaik untuk menjalankan sebuah query.

 

Sebagai contoh, optimizer mengakses katalog untuk mengecek field-field mana dari sebuah relasi yang memiliki akses hash atau akses index-index, sebelum memutuskan bagaimana untuk menjalankan sebuah kondisi pilihan ataupun kondisi join pada relasi.

 

 

Optimisasi Query

 

Optimisasi Query adalah suatu proses untuk menganalisa query untuk menentukan  sumber-sumber  apa  saja  yang  digunakan  oleh  query  tersebut  dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimisasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi   lebih   efektif.   Optimisasi   query   mencakup   beberapa   tekni seperti transformasi query ke dalam bentuk logika yang sama, memilih jalan akses yang optimal dan mengoptimumkan penyimpanan data.

Optimisasi query merupakan bagian dasar dari sebuah sistem database dan juga merupakan suatu proses untuk menghasilkan rencana akses yang efisien dari sebuah query di dalam sebuah database. Secara tidak langsung, sebuah rencana akses  merupakan  sebuah  strategi  yannantinya  akan  dijalankan  untuk  sebuah query, untuk mendapatkan kembali operasi-operasi yang apabila dijalankan akan menghasilkan database record query. Ada tiga aspek dasar yang ditetapkan dan mempengaruhi optimisasi query, yaitu : search space, cost model dan search strategy.

Search space adalah sekumpulan rencana-rencana akses yang sama secara logika yang dapat digunakan untuk mengevaluasi sebuah query. Semua rencana- rencana  dalam  search  space  query  mengembalikan  hasil  yang  sama  biarpun beberapa rencana lebih efisien dibandingkan dengan rencana yang lainnya.

Cost  model  menandakan  sebuah  harga  untuk  tiap  rencana  dalam  search space. Harga dari rencana tersebut adalah sebuah perkiraan dari sumber-sumber yang digunakan pada saat rencana dijalankan, dimana harga yang lebih rendah, merupakan yang terbaik dari rencana-rencana yang ada.

Search strategy adalah sebuah perincian dari rencana-rencana mana dalam search space yang akan diperiksa. Apabila search space-nya kecil, maka strategi yang dapat diteruskan adalah menghitung dan mengevaluasi setiap rencana. Meskipun kebanyakan search space bahkan untuk query-query yang sederhana adalah sangat besar, akan tetapi query optimizer selalu memerlukan aturan heuristik untuk mengontrol nomer dari rencana-rencana yang akan diperiksa.

 

Sejarah Singkat Optimisasi Query

Optimisasi query lahir sejak sebelum tahun 1970. Pada saat itu yang dikenal dengan  jaman  kegelapan  (dark  age),  optimisasi  query  masih  dilakukan  secara manual  oleh  manusia.  Selain  itu,  pada  jaman  tersebut  databasrelasional  juga belum dikenal sehingga diperlukan seseorang yang benar-benar ahli dalam database untuk melakukan optimisasi query. Jadi pada jaman kegelapan hingga tahun 1970- an, optimisasi query masih dilakukan oleh manusia dan masih menggunakan cara yang benar-benar kuno.

Seiring dengan perkembangan jaman di mana teknologi menjadi semakin maju, maka sekitar pertengahan  tahun 1970-an  sampai  pada pertengahan  tahun

1980-an optimisasi query tidak lagi dilakukan secara manual, tetapi dilakukan oleh suatu sistem yang dikenal dengan sistem R yang kemudian menjadi berkembang pada optimisasi perintah JOIN, sekumpulan tahapan untuk optimisasi query selanjutnya. Hingga saat ini, optimisasi query terus berkembang bersamaan dengan bermunculannya teknik-teknik baru yang digunakan dalam proses optimisasi query meskipun pada dasarnya hanya ada dua macam teknik utama yang biasanya digunakan dalam mengoptimisasi sebuah query. Bisa dikatakan bahwa optimisasi query merupakan tulang punggung dari sebuah sistem karen ketepatgunaan  suatu sistem  sangat tergantung dari  optimizernya.

Hampir semua DBMS menggunakan sistem optimisasi query untuk mengurangi waktu eksekusi query sehingga kerja sistem dapat dioptimalkan dan penggunaan sumber-sumber dapat diminimumkan. Selain itu, akes dari disk yang sangat lambat dibandingkan dengan akses memory membuat optimisasi query menjadi semakin penting.


Tujuan Optimisasi Query

 

Prinsip  ekonomi  yang  diperlukan  untuk  sebuah  queradalah mengoptimisasi prosedur-prosedur, mencoba untuk memaksimumkan output dari sejumlah  sumber-sumber  yang  diberikan  ataupun  untuk  meminimumkan penggunaan sumber untuk memberikan output.

Tujuan dari optimisasi query adalah berbeda-beda untuk setiap sistem. Ada yan menggunaka optimisasi   query   untuk   meminimumka waktu   proses sedangkan pada situasi  lain bisa juga optimisasi query diperlukan untuk waktu respon, meminimumkan I/O dan meminimumkan penggunaan memory. Tetapi pada dasarnya,  tujuan  dari  optimisasi  queradalah  menemukan  jalan  akses  yang termurah untuk meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai  tujuan  tersebut,  maka  diperlukan  optimizer  untuk  melakukan  analisa query dan untuk melakukan pencarian jalan akses.

 

Operasi-operasi Dasar Aljabar Relasional

Untuk menetapkan bentuk dan batasan-batasan database, sebuah model data harus  memasukkan  sekumpulan  operasi-operasi  untuk  mengontrol  data. Sekumpulan model operasi-operasi relasional standar merupakan aljabar relasional. Operasi-operasi ini membolehkan user untuk menentukan dasar pencarian permintaan. Hasil dari sebuah pencarian adalah relasi yang baru, di mana mungkin saja dibentuk dari satu atau lebih relasi. Oleh sebab itu, operasi-operasi aljabar menghasilkan relasi-relasi baru yang dapat menjadi lebih berguna dengan menggunakan  operasi-operasi  aljabar  yang  sama.  Urutan  dari  operasi-operasi aljabar  relasional  membentuk  sebuah  ekspresi  relasi  aljabar  yang hasilnya  juga berupa sebuah relasi.

Operasi-operasi  relasi  aljabar umumnya  dibagi  ke dalam  dua kelompok. Kelompok pertama, termasuk sekumpulan operasi-operasi   dari sekumpulan teori matematika yang dapat dipakai karena tiap-tiap relasi ditetapkan menjadi sekumpulan tuple-tupleSekumpulan operasi-operasi tersebut termasuk  UNION, INTERSECTION, SET DIFFERENCE dan CARTESIAN PRODUCT.

Kelompok yang kedua  terdiri dari operasi-operasi yang khusus dibuat untuk database-database relasional. Yang termasuk dalam kelompok yang kedua adalah SELECT, PROJECT dan JOIN.

 

Sekumpulan Operasi

Beberapa kumpulan operasi digunakan untuk menggabungkan elemen- elemen dari dua kelompok dalam cara yang bervariasi, termasuk UNION, INTERSECTION dan SET DIFFERENCE. Operasi-operasi ini adalah operasi- operasi binary yang masing-masing digunakan untuk dua kumpulan relasi.

Operasi CARTESIAN PRODUCT yang juga biasa disebut dengan CROSS PRODUCT atau CROSS JOIN dilambangkan dengan X yang juga merupakan sebuah kumpulan operasi binary. Operasi ini digunakan untuk mengkombinasikan tuple-tuple dari dua relasi dalam sebuah model gabungan. Umumnya, hasil dari R(A1, A2,…, An) X S( B1, B2, …, Bm) adalah relasi Q dengan n+m dari attribute- attribute R(A1, A2,…, An, B1, B2, …, Bm) dalam urutannya. Hasil dari relasi Q mempunyai satu tuple untuk masing-masing kondisi dari tuple-tuple. Satu dari R dan satu dari S.

 

Algoritma untuk Mengimplementasikan Operasi SELECT

 

Ada bermacam-macam metode yang digunakan  untuk mengimplementasikan salah satu syntax SQL, misal operasi SELECT. Dan pengimplementasian operasi select tergantung pada keberadaannya dan tipe pengindeks-annya serta kombinasi conjunctive dan disjunctive dari pencarian kriteria.

Pengimplementasian dari operasi SELECT dibagi lagi menjadi dua, yaitu implementasi untuk simple selection (pilihan sederhana) dan implementasi untuk complex selection (pilihan kompleks). Berikut ini akan dibahas mengenai algoritma untuk implentasi kedua pilihan tersebut.

 

Metode untuk Simple Selection

Sejumlah algoritma search memungkinkan untuk  menyeleksi record-record dari  sebuah file.  Algoritma-algoritma search juga dikenal sebagai file scan karena algoritma tersebut melakukan pembacaan record dari sebuah file untuk mencari dan mendapatkan  kembali  record-record    yang  memenuhi  sebuah  kondisi  seleksi. Apabila algoritma search melibatkan penggunaan index, maka pencarian index disebut dengan index scan.

 

Metode untuk Complex Selection

Apabila sebuah kondisi dari operasi SELECT adalah sebuah kondisi konjungtif, yaitu terdiri dari beberapa kondisi-kondisi sederhana yang berhubungan dengan logika AND.

Sebaliknya, pendekatan metode brute force linear search dapat digunakan. Optimisasi query untuk sebuah operasi SELECT kebanyakan diperlukan untuk kondisi-kondisi pilihan konjungtif apabila lebih dari satu attribute terlibat dalam kondisi-kondisi yang mempunyai sebuah jalan akses. Optimizer harus memilih jalan akses  yang  mendapatkan  record-record  paling  sedikit  dengan  cara  yang  paling efisien dengan memperkirakan harga-hargyang berbeda dan memilih metode dengan perkiraan harga yang paling sedikit.

Pada saat optimizer memilih antara kondisi-kondisi multiple yang sederhana dalam sebuah kondisi pilihan konjungtif, maka optimizer secara khusus mempertimbangkan    selectivity dari masing-masing kondisi. Selectivity (s) didefinisikan sebagai perbandingan dari nomer record-record (tuple-tuple) yang memenuhi kondisi untuk jumlah nomer dari record-record pada file (relasi). Yaitu sebuah nomer antara 0 (nol) dan 1 (satu), yang berarti selectivity 0 (nol) berarti tidak  ada  record  yang  memenuhi  kondisi  dan  1  (satu)  berarti  semua  record memenuhi kondisi. Meskipun selectivity-selectivity yang tepat dari semua kondisi- kondisi   mungkin tidak tersedia, perkiraan dari selectivity-selectivity tersebut seringkali disimpan dalam katalog DBMS dan digunakan oleh optimizer.

Perbandingan untuk sebuah kondisi pilihan konjungtif adalah sebuah kondisi disjunctive (dimana kondisi-kondisi sederhana dihubungkan oleh logika OR lebih daripada AND) yang lebih sulit untuk diproses dan dioptimisasi.

Sebuah DBMS menyediakan beberapa metode yang sudah didiskusikan sebelumnya dan khususnya beberapa metode-metode tambahan. Query optimizer harus memilih salah satu metode yang tepat untuk mengeksekusi tiap-tiap operasi SELECT dalam sebuah query. Optimisasi ini menggunakan rumus-rumus untuk memperkirakan harga-harga untuk tiap-tiap metode akses yang tersedia Pada akhirnya, optimizer akan memilih metode akses dengan perkiraan harga terendah.

 Copyright stekom.ac.id 2018 All Right Reserved