Tempat curhatnya anak-anak BASDAT


Optimisasi Query
Desember 7, 2007, 4:26 pm
Diarsipkan di bawah: Eksplorasi, Eksplorasi DBMS, Sistem Basis Data

 Query optimisasi meurpakan sebuah proses memilih query plan yang plaing efisien dari banyak startegi pengaksesan query, khususnya untuk query yang kompleks. Dalam mendapatkan query plan 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 apak$ah query yang dioptimasi hhasilnya 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 daoat didistributsikan dinatara operasi union intersection dan set difference
7. Sekumpulan union dan intersection asosiatif
8. Operasi Join didistributsikan dinatara operasi union

By:Ogie
 

Powered by ScribeFire.



[Deddy 13505031] Query processing & optimation
Desember 7, 2007, 4:16 pm
Diarsipkan di bawah: Sistem Basis Data, Uncategorized

Waa, udah mau deadline :( (
harus cepat2..

BTW mau ngebahas external sort merge
jadi external sort merge tuh digunakan pada relasi jika relasi tsb tidak dpt masuk ke memori (kalo bisa masuk memori, cukup pake quicksort aj)
berikut langkah2 external sort merge
1.buat sorted runs
berikut langkah membuat sorted run: (i=0)
1.baca m blok relasi ke memori
2.urutkan blok yang terdapat dalam memori
3.tuliskan data yang telah disort ke Ri, increment i
2.gabungkan runs yang telah dibuat
berikut langkah menggabungkan runs:
1. gunakan N blok memori untuk membuffer runs yang dibuat, baca blok pertama dari  tiap run ke buffernya masing2.
2. ulangi sampai semua input buffer kosong:
1.pilih record pertama dari semua buffer
2.tulis revord tsb ke output buffer, jika penuh, tulis ke disk
3.hapus record tsb dari buffer input
4.jika buffer input telah kosong, baca blok berikutnya
yap, kira2 itulah langkah yang harus dilakukan untuk melakukan eksternal merge sort, tiap langkahnya ga dibahas detil, soalnya yg nulis ga tau ^^, peace



[ABIE - 13504026] Query Processing dan Optimization
Desember 7, 2007, 3:49 pm
Diarsipkan di bawah: Uncategorized

Query processing adalah mengeksekusi transaksi sesuai dengan query dan mengeprint hasil.

Contoh :
select customer name
from customer, invoice
where region =’kansas city’ dan amount > 1000

gambar_contoh.jpg

Query optimization adalah memilih cara yang paling efisien (murah) untuk mengakses data.

Proses yang paling efisien adalah proses akses I/O yang minimal dan penggunaan sumber daya CPU yang minimal.

Pemilihan metode yang paling baik :
Pada bahasa pemrograman non prosedural, sistem melakukan optimasi waktu eksekusi.
Sedangkan pada bahasa pemrograman prosedural, programmer memiliki fleksibilitas dalam pemilihan metode yang terbaik.
Untuk mengoptimasi eksekusi query, programmer harus mengetahui :
- organisasi file
- mekanisme akses record dan primary atau secondary key
- lokasi data pada disk
- pembatasan akses data



[Rudi 13504099] Mengapa dibutuhkan proses optimalisasi query??
Desember 7, 2007, 3:44 pm
Diarsipkan di bawah: Sistem Basis Data

Baru pertama kali posting nih setelah sekian lama vakum dan kena beberapa denda..

Lagi sibuk euy, jadi sori banget buat temen2 asisten yang laen ^.^ ..

Berhubung asisten lain sudah menjelaskan dengan baik menggunakan studi literatur,  sya jadi bingung mo posting apa -_-a.. Saya akan mencoba berinovasi dengan menjelaskan mengenai proses optimalisasi query berdasarkan kata-kata saya sendiri.. Apabila ada kesalahan, mohon kritik dan sarannya..

Mari kita mulai segalanya dengan IMHO,

Segala sesuatu pasti ada yang mendasari, oleh karena itu, mari kita mulai berpikir, mengapa query perlu di optimalisasi? Dasar pemikiran dari hal ini tentu saja karena suatu query dapat dikerjakan menggunakan berbagai query processing yang sudah dijelaskan oleh rekan saya sebelumnya dan suatu query memiliki tingkat kecocokan yang berbeda. Contohnya : kita bisa menggunakan INDEX untuk mencari besar tabungan yang lebih dari satu juta rupiah atau kita juga bisa menelusuri seluruh data yang ada untuk mengambil seluruh besar tabungan yang ada kemudian mencari yang nilainya lebih dari satu juta. Dalam kasus ini penggunaan INDEX jelas lebih optimal.

Terkesan kejar setoran yak….. Teuing ah, semoga minggu depan postingnya lebih baik lagi…… Amin..



Linier Search + Nested Loop Join
Desember 7, 2007, 3:06 pm
Diarsipkan di bawah: Sistem Basis Data

1 A1 ( linier search) : maksudnya scan setiap record, lalu cek mana yang cocok dengan kondisi seleksi.

dimana Br= jumlah blok yang mengandung record dari relasi R. Cost= br/2, jika konsidi seleksi merupakan key.

2. A2  (binary search)

NESTED LOOP JOIN

Join ini dilakukan antara record per record, record di inner blok dijoin dengn 1 record di outer blok. Join dilakukan record per record. Jadi 1 record di relasi kiri, di join dengan semua record di relasi kanan. dengan demikian sangat biris, karena pergantian blok akan terjadi (sebanyak record di relasi kiri x blok di relasi kanan)  + jumlah blok relasi kiri. Cara ini paling boros. Cost di atas dapat dituliskan : (nr* bs) + br



[Hendro-13505103] Langkah2 Pemrosesan Query
Desember 7, 2007, 2:34 pm
Diarsipkan di bawah: Sistem Basis Data

Langkah dasar pemrosesan query :
1. Parsing dan translasi
 a. Translasi query menjadi bentuk internal kemudian translasikan ke aljabar relasional
 b. Parser memeriksa sintaks dan verifikasi relasi-relasi
2. Optimasi : memilih evaluasi plan yang paling rendah costnya
3. Evaluasi : query-execution engine memakai query-evaluation plan, mengeksekusi plan tersebut, dan mengembalikan hasilnya

Cost umumnya diukur sebagai total waktu diperlukan untuk menyelesaikan query
1. Banyak faktor yang menentukan cost : Kecepatan akses disk, CPU, atau sampai komunikasi jaringan
2. Kecepatan akses disk adalah faktor utama penentu cost dan relatif mudah diperkirakan. Kecepatan ini diukur dengan :
 a. Number of seeks * average-seek-cost
 b. Number of blocks read * average-block-read-cost
 c. Number of blocks written * average-block-write-cost
    Cost untuk menulis sebuah blok lebih besar dari cost untuk membaca blok karena setelah menulis, data akan dibaca lagi untuk memastikan data yang ditulis berhasil.

Operasi-operasi dalam pemrosesan query :
1. Selection dengan menggunakan algoritma searching seperti A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
2. Sorting
   Untuk relasi yang muat di memori, teknik ini seperti quicksort, sedangkan untuk relasi yang tidak cocok pada memori, external sort-merge cukup bagus.
3. Join diimplementasikan dengan beberapa algoritma seperti nested-loop join, block nested-loop join, indexed nested-loop join, merge-join, hash-join
4. Duplicate elimination dapat diimplementasikan dengan hashing atau sorting
5. Agregation dapat diimplementasikan dengan cara yang sama pada duplicate elimination
6. Projection diimplementasikan dengan melakukan proyeksi pada setiap tupel yang diikuti dengan duplicate elimination
7. Set operations (^,V,-) dapat digunakan sebagai varian dari merge-join setelah sorting atau varian dari hash-join
8. Outer join adalah modifikasi dari join dengan diikuti tambahan NULL sesuai dengan ruas yang diinginkan



[Ratih - 13504012] Query Processing
Desember 7, 2007, 9:55 am
Diarsipkan di bawah: Sistem Basis Data

Query Processing adalah proses yang terjadi pada DBMS ketika menerima query hingga menghasilkan tupple2 sesuai query yang dminta.

Query Processing ini terdiri dari 3 tahapan utama yaitu :

1. 1. Parsing dan Translation

Parsing adalah analisis sintaksis yaitu memeriksa apakah input yang masuk sesuai dengan tata bahasa yang ada atau tidak, salah satunya dengan memilah-milah input-input (variable, dsb). Translation adalah mengubah kode dari sintaks deklaratif ke dalam bentuk internal yang procedural (misal aljabar relasional). Jadi hasil dari tahap 1 adalah relasi aljabar relasional

2. 2. Optimization

Setiap ekspresi aljabar relasional akan didetailkan yaitu detail plan setiap eksekusi. Untuk tiap operator terdapat beberapa opsi algoritma, dan algoritma yang dipilih adalah algoritma yang meminimalkan cost. Itulah yang terjadi pada execution plan.

3. 3. Execution

Mengeksekusi execution plan hasil optimalisasi dan mengembalikan outputnya sesuai dengan query.

QueryProcessing

Tahapan detail mengenai pemrosesan query yaitu dimulai dari penerimaan query dari userkemudin query tersebut di parse (pemeriksaan semantik) dan di translate menjadi aljabar relasional, setelah itu dioptimasi sesuai dengan data yang telah ada di DBMS sehingga menjadi execution plan dengan cost yang minimal. Execution plan tersebut kemudian dieksekusi terhadap data yang ada pada DBMS dan menghasilkan output sesuai query yang diminta.

Cost merupakan hal yang terkait dengan total waktu yang diperlukan untuk mengeksekusi query dan bergantung pada jumlah pencarian, jumlah pembacaan block serta jumlah penulisan block.

Block adalah satuan pemrosesan I/O yang dapat dibaca/ditulis dalam suatu waktu dan terdiri atas beberapa record.

Operasi yang diterapkan pada aljabar relasional adalah seleksi, adapun algoritma dasar yang diterapkan pada operasi seleksi ada berbagai macam diantaranya sebagai berikut :

1. A1 (Linear Search)

Mengambil dan membaca block secara sekuensial. Satu block terdiri atas beberapa tuple. Jumlah tuple yang dapat ditampung dalam satu block disebut blocking factor (bf). Cost seleksi pada atribut2 yang bukan key yaitu n/bf = br = jumlah blok yang diperiksa, dengan n adalah jumlah tuple. Sedangkan cost untuk seleksi pada key adalah br/2 (rata2 untuk kasus terbaik dan terburuk)

2. A2 (Binary Search)

Prekondisi : seleksi pada atribut yang telah terurut. Cost yaitu [log2 (br)] + k, dengan k adalah jumlah blok yang mengandung tuple yang memenuhi kriteria (karena tidak harus unik). [log2 (br)] adalah cost untuk menempatkan tuple pertama pada binary search pada suatu block.