Analisis Optimisasi Formula Distributed Query

advertisement
BAB II
TINJAUAN PUSTAKA
2.1.
Basis Data Terdistribusi
2.1.1. Sistem Basis Data Terdistribusi
Dalam pengelolaan basis data terdapat dua sistem basis data, yaitu Basis
Data Terpusat ( Centralized ) dan Basis Data Terdistribusi ( Distributed ).
Perbedaan utama antara sistem basis data terpusat dan terdistribusi adalah jika
pada sistem basis data terpusat, data ditempatkan di satu lokasi saja dan semua
lokasi lain dapat mengakses data di lokasi tersebut, sedangkan pada system basis
data terdistribusi, data di tempatkan di banyak ( lebih dari satu ) lokasi, tetapi
menerapkan suatu mekanisme tertentu untuk membuatnya menjadi satu kesatuan
basis data, dan hal ini berbeda dengan system basis data terpisah (Isolated) yang
mana dalam sistem basis data terpisah, basis data ditempatkan di banyak lokasi,
tetapi tidak saling berhubungan sama sekali.
Menurut
Özsu MT, Valduriez P. (1999) Basis Data Terdistribusi
didefinisikan sebagai berikut :
Suatu Basis Data Terdistribusi ( DDBS ) adalah suatu koleksi beberapa
basis data yang secara logika saling berhubungan dan terdistribusi dalam
suatu jaringan komputer, sedangkan Sistem Basis Data Manajemen
Terdistribusi ( D-DBMS ) adalah Perangkat Lunak yang mengatur Basis
Data Terdistribusi (DDB) dan menyediakan suatu mekanisme akses yang
membuat distribusi ini dapat diketahui oleh pemakai.
Jadi
Sistem Basis Data Terdistribusi ( DDBS )= DDB+ D-DBMS
Lokasi-lokasi penempatan basis data dapat terlihat dalam Gambar 1.
5
Site 2
Site 1
Site 3
Site 4
Communication
Network
Site 4
Gambar 1. Lingkungan Basis Data Terdistribusi ( Valduriez P. 1999)
2.1.2. Arsitektur Sistem Basis Data Terdistribusi
Dalam arsitektur basis data terdistribusi konsep basis data relasional lebih
banyak digunakan, karena dalam operasionalnya dapat disesuaikan dengan sistem
basis data terpusat, secara formal relasional basis data terdistribusi mencakup :
Global Level, Fragmentation Level dan Allocation Level ( Kuijk 2000 ) dan hal ini
dapat terlihat dalam Gambar 2 berikut.
6
Distributed Database Systems
Global Schema
Site
Independent
Fragmentation Schema
Allocation Schema
Site
dependent
Site 1
Site 2
Site n
Gambar 2 : Arsitektur Sistem Basis Data Terdistribusi (Kuijk 2000)
- Global Level : suatu skema basis data secara global yang menggambarkan
basis data terdistribusi yang seolah-olah tidak seluruhnya terdistribusi.
- Fragmentation level : suatu skema fragmentasi yang menggambarkan suatu
pemetaan antara relasi individu dengan fragmentasinya
- Allocation Level : suatu skema alokasi yang menggambarkan pemetaan antara
fragmen individu dimana basis data disimpan
Dalam melakukan fragmentasi terdapat kriteria-kriteria yang harus
dipenuhi, yaitu : Reconstruction Condition, Completeness Condition dan
Disjointness Condition (Kuijk 2000)
7
Jika R adalah tabel relasi, Ai adalah atribut dari R, r adalah record dari R dan Fi
kondisi dari operasi seleksi, maka hasil fragmentasi dapat direkonstruksi terlihat
dalam Tabel 1.
Tabel 1: Fragmentasi Horizontal, Vertical dan Mixed Fragmentasi (Kuijk 2000).
Type
Partitioning
Horizontal
Reconstruction
r(Ri ) = σ Fi (r (R))
Vertical
( )
n
r (Ri ) = U r Ri
i =1
n
r ( Ri ) = ⋈ πAi (r (R ))
r(Ri ) = π Ai (r (R))
i=1
Mixed
2.2
(
)
r(Ri ) = π Ai σ Fi (r (R))
n
1
r (Ri ) = U r Ri1 ⋈…⋈ …
i =1
1
( )
n
k
U r Rik
i =1
k
( )
Konsep Aljabar Relasional.
Relasi aljabar adalah bahasa prosedural, dan salah satu cara untuk
membangun relasi satu atau lebih relasi berdasarkan konsep aljabar. Dalam basis
data relasional relasi aljabar mempelajari bagaimana struktur properti dan
kendala-kendala akan menjadi dasar dalam operasi basis data, formulasi query
dipetakan pada relasi aljabar dan sejauh mana pendekatan teori set digunakan.
Bahasa query memiliki sejumlah operasi yang memanfaatkan satu atau beberapa
tabel/relasi basis data sebagai masukkan dan menghasilkan sebuah tabel/relasi
basis data yang baru sebagai keluarannya. Operasi dasar dalam Aljabar Relasional
antara lain mencakup : Select, Project, Cartesian-Product, Union, Set-Difference
(Kuijk 2000).
Konsep optimisasi query dalam Aljabar Relasional yang banyak
digunakan adalah operasi-operasi yang berhubungan dengan operasi join. Dalam
tesis ini ditampilkan sejumlah contoh dengan menggunakan skema tabel relasi
berikut :
peserta (notsp : integer, tgl_lhr : date, tmt_pst : date, gapok : integer)
pensiun(nopen : integer, nama : string, tgl_kej : date)
pmk_k1(notsp : integer, nopen : integer , tgl_kej : date)
8
Skema dari tabel-tabel relasi di atas ditunjukkan pada segmen Tabel 2, Tabel 3,
Tabel 4 dan Tabel 5.
Tabel 2. : Segmen Tabel peserta S1
notsp
tgl_lhr
tmt_pst
gapok
010013098
12/31/1955
1/1/1975
832000
010018391
12/18/1952
3/1/1973
932000
Tabel 3 : Segmen Tabel peserta S2
notsp
tgl_lhr
tmt_pst
gapok
010018391
12/18/1952
3/1/1983
932000
010018826
3/30/1966
3/1/1971
732000
010022921
8/29/1955
10/1/1975
632000
Tabel 4 : Segmen Tabel pmk_ke1 R1
notsp
Nopen
tgl_kej
010013098
0000007700
12/31/1999
010022921
0000008880
12/23/1989
010018391
0000009990
13/21/1990
Tabel 5 : Segmen Tabel pensiun B1
nopen
Nama
tgl_kej
0000007700
Nangkuh
12/31/1999
0000008880
Abdul Hadi
12/23/1989
0000009990
Siddik
13/21/1990
2.2.1. Selection
Operasi Selection digunakan untuk memilih subset record-record dari
tabel sebuah relasi yang memenuhi pilihan. Kondisi harus berupa formula yang
proporsional. Tata cara penulisan yang digunakan pada operasi ini adalah :
σp (R)
atau
σ<selection condition> (R)
9
p adalah <selection condition> berupa predikat pada atribut-atribut di R,
dan R adalah tabel/relasi yang akan diakses oleh operasi selection. Jika merujuk
Tabel 2 pada tabel peserta, perintah mengambil baris data (record) peserta yang
tanggal lahirnya ’9/9/1969’, maka operasi ini dapat dituliskan
σ tgl_lhr = ‘9/9/1969’ (peserta)
2.2.2. Projection
Operasi
Projection
dilakukan
untuk
memilih
atribut-atribut
dari
tabel/relasi. dan dapat mengambil atribut satu atau lebih. Tata cara penulisan pada
operasi ini adalah :
Π<attribute list>(R)
Atribut list adalah daftar atribut yang akan ditampilkan yang ada di R.
Misalkan pada Tabel 2 yaitu dalam tabel peserta akan ditampilkan notsp dan
tgl_lhr, untuk semua baris data yang ada pada tabel tersebut, maka perintahnya
adalah :
Πnotsp,tgl_lhr(peserta)
Dapat pula menampilkan berupa hasil operasi/query. Misalkan akan
ditampilkan notsp dan tgl_lhr dngan tmt_pst pada tanggal ’1/1/1975’ saja, maka
operasi seleksi dan projeksi harus digunakan secara bersamaan, seperti berikut :
Πnotsp,tgl_lhr (σ tmt_pst= ’1/1/1975’ (peserta))
2.2.3. Join.
Operasi Join adalah untuk menggabungkan lebih dari satu tabel/relasi.
Operasi Join dilambangkan dengan “⋈”
dan digunakan untuk
mengkombinasikan hubungan record-record dari dua relasi
kedalam record
tunggal. Pada umumnya operasi PROJECT pada dua relasi R(A1,A2,…An) dan
S(B1,B2,…Bm) ditunjukkan oleh :
R⋈
<kondisi join>
(S)
10
Hasil dari Join adalah sebuah relasi Q dengan n + m atribut Q(A1,A2,…An,
B1,B2,…Bm). Q mempunyai satu record untuk masing-masing kombinasi dari
record, satu dari R dan satu dari S. Dalam join, hanya kombinasi-kombinasi dari
record-record yang memenuhi kondisi join yang akan tampak pada hasil. Kondisi
Join ditentukan oleh atribut-atribut dari relasi R dan S dan evaluasi untuk tiap
kombinasi dari record-record
Bentuk dari kondisi Join secara umum adalah :
<condition> AND <condition> AND … AND <condition>
dimana tiap kondisi adalah bentuk dari Ai θ Bj. Ai adalah sebuah atribut dari R dan
Bj adalah sebuah atribut dari S. Ai dan Bj mempunyai domain yang sama, dan θ
(theta) adalah salah satu dari operator-operator pembanding {<, ≤, ≠, ≥, >,}.
Operasi Join dengan sebuah kondisi join yang umum disebut dengan theta join.
Contoh :
(R ⋈c S) = σc (R x S)
Jadi, ⋈ ditentukan untuk menjadi sebuah cross product diikuti dengan satu
selection, Jika diperhatikan c condition dapat merujuk ke atribut baik R maupun S.
Referensi ke sebuah atribut dari sebuah relasi, misalnya R , dapat berdasarkan
posisi (dari bentuk Ri) atau berdasarkan nama dan bentuk Rname, merujuk pada
Tabel 2 dan Tabel 4, maka hasil dari
S1 ⋈S1.notsp<R1.notsp R1 ditunjukkan pada Tabel 6, notsp muncul baik dalam
S1 maupun R1, maka atribut hasil dari cross product S1 x R1 tidak diberi nama.
Tabel 6 : Hasil Join S1 dan R1
notsp
tgl_lhr
tmt_pst
gapok
notsp
nopen
tgl_kej
010018391 12/31/1955 1/1/1975 832000 010022921 0000008880 12/23/1989
010018826 12/18/1952 3/1/1973 932000 010022921 0000008880 12/23/1989
11
2.2.3.1. Cross Join
Operasi Cross Join yang juga biasa disebut dengan Cross Product atau
Cartesian Product dilambangkan dengan “ X “ yang juga merupakan sebuah
kumpulan operasi biner. Contoh (R1 X S1) operasinya memungkinkan untuk
menggabungkan data dari dua buah tabel atau hasil query yang berakibat semua
record di R1 dipasangkan dengan semua record di S1 dan hasil operasi akan
memuat semua atribut yang ada di R1 dan di S1 dan operasi ini bersifat komutatif.
Operasi Cross Join umumnya tidak berdiri sendiri, tetapi digunakan bersama
operasi lainnya, seperti operasi seleksi dan proyeksi dengan berbagai bentuk
sesuai kebutuhan, sebagaimana dapat dilihat dalam contoh berikut :
Akan diambil data dari penggabungan tabel S1 dan R1 untuk
tmt_pst=‘1/11975’
dan tgl_kej = ‘12/23/1989’
operasinya dapat dituliskan
sebagai berikut :
σ tmt_pst= ’1/1/1975’ ∧ tg_kej = ’ 2/23/1989’ ∧ S1.notsp =R1.notsp ( S1 X R1)
2.2.3.2. Natural Join
Sebuah query yang melibatkan operasi Cartesian Product umumnya
menggunakan operasi seleksi untuk memberikan hasil query yang diinginkan.
Contoh : cari dari semua peserta yang telah pensiun dan tampilkan nama dan
tanggal kejadian, notsp diambil dari gabungan Tabel 4 (pmk_ke1) dan Tabel 5
(pensiun). Mula-mula akan menggunakan operasi Cartesian Product tabel
pensiun yang menyimpan data nama dan nopen kemudian dari tabel pmk_ke1
yang menyimpan data notsp, kemudian menyeleksi yang sesuai dengan kriteria
yang diminta yaitu no_tsp dari Tabel 4 yaitu tabel pmk_ke1 dan Tabel 5 yaitu
tabel pensiun
Πnama,notsp,tgl_kej (σ PMK.nopen=Pensiun.nopen (pmk_ke1 X pensiun))
Bentuk di atas dapat disederhanakan dengan operasi natural join yang
menggabungkan operasi cartesian product dan operasi seleksi dengan
menggunakan simbol ⋈ , operasi natural join membentuk sebuah cartesian
product dari kedua argumennya, lalu menetapkan sebuah seleksi untuk baris-baris
data yang memiliki kesamaan nilai untuk atribut-atribut yang muncul di kedua
12
argumennya dan akhirnya mengabaikan data-data duplikat dan perintahnya
sebagai beikut :
Πnama,notsp,tgl_kej (pmk_ke1 ⋈ pensiun))
Secara formal, jika S1 memiliki himpunan atribut s dan R1 memiliki
himpunan atribut r, maka dapat didefinisikan :
S1 ⋈ R1 =Πs
Dimana
r(
σs1.a1=r1.a2 ∧ s1.a1=r1.a2∧...∧ s1.an=r1.an(S1 X R1)
s = domain atribut dari S1
r = domain atribut dari R1
s
r = { a1, a2, a3, …, an }
Jika tidak ada atribut yang sama di kedua ekspresi S1 dan R1 atau s
r =0, maka :
S1 ⋈ R1 = S1 X R1
2.2.4 Operasi Himpunan
Operasi Himpunan yang digunakan adalah Union, Intersection dan
Difference.
2.2.4.1. Union (R S)
Operasi ini untuk menggabungkan data dari dua kelompok baris data (row)
yang sejenis (memiliki hasil proyeksi yang sama)
Simbol dari operasi ini adalah : R
S
Atribut notsp terdapat pada Tabel 5 (pensiun) dan Tabel 4 (pmk_ke1), sehingga
notsp pada kedua tabel tersebut dapat diproyeksikan dengan operasi Union :
Πtglkej (pensiun)
Πtglkej (pmk_ke1)
Pada operasi Union R S terdapat dua syarat yang dipenuhi yaitu :
1) S dan R harus memiliki jumlah atribut yang sama.
2) Domain dari atribut ke i dari S dan atribut ke i dari R haruslah sama, dan harus
berlaku untuk semua atribut di S dan R
13
2.2.4.2. Intersection (R
S)
Operasi Intersection digunakan untuk menyatakan atau mendapatkan
irisan (kesamaan anggota) dari dua buah kelompok data dari suatu tabel atau hasil
query.
Tata penulisannya adalah (R
S) yang ekivalen dengan penggunaan operasi dasar
Set-Difference S – ( S – R ). Contoh untuk mendapatkan notsp mana saja yang
sama-sama dipunyai, baik dari Tabel 2 (peserta) maupun Tabel 4 (pmk_ke1),
query tersebut dapat dipenuhi dengan operasi
Πnotsp (Peserta) Πnotsp (pmk_ke1)
2.2.4.3. Difference (R - S)
Operasi difference merupakan pengurangan data di tabel/hasil proyeksi
pertama R oleh data/hasil proyeksi yang kedua S
Simbolnya adalah : R – S
Ketentuannya sama dengan operasi Union yaitu harus mempunyai jumlah atribut
yang sama baik di S maupun di R, contoh :
Πtglkej (pensiun) – Πtglkej (pmk_ke1)
2.3. Proses Query
Dalam Database Manajemen System (DBMS) akses data dapat dilakukan
dengan berbagai macam cara. Ada banyak plan (rencana) yang dapat diikuti oleh
DBMS dalam memproses dan menghasilkan jawaban sebuah query. Semua
rencana pada akhirnya akan menghasilkan jawaban (output) yang sama tetapi
pasti mempunyai biaya yang berbeda-beda.
Kebanyakan aplikasi secara nyata adalah permintaan-permintaan secara
langsung dari user yang memerlukan informasi tentang bentuk maupun isi dari
basis data. Apabila permintaan user terbatas pada sekumpulan query-query
standar, maka query-query tersebut dapat dioptimisasi secara manual oleh
pemrograman. Tetapi bagaimanapun juga, sebuah sistem optimisasi query
otomatis menjadi penting apabila query-query khusus dinyatakan dengan
14
menggunakan bahasa query yang digunakan secara umum seperti Structure Query
Language (SQL).
Optimisasi query memberikan suatu pemecahan untuk menangani masalah
dengan cara menggabungkan sejumlah besar teknik-teknik dan strategi, yang
meliputi transformasi-transformasi logika dari query-query pada sistem file
penyimpanan data. Setelah ditransformasikan, sebuah query dipetakan ke dalam
sebuah langkah-langkah operasi untuk menghasilkan data-data yang diminta.
Query Language (SQL)
SCANNER
( Mengecek sintaks SQL keyword )
PARSER
( Mengecek sintaks SQL keyword )
Menghasilkan parse tree
QUERY OPTIMIZER
( Mengecek sintaks SQL keyword )
Menghasilkan Query plan
CODE GENERATOR /
INTERPRETER
Menghasilkan kode Query
QUERY PROCESSOR
(Eksekusi Query)
Hasil Query
Gambar 3. Tahapan proses sebuah Query (Swamy 2001)
15
Sebuah query yang diekspresikan dalam sebuah bahasa query tingkat
tinggi seperti SQL mula-mula harus dibaca, diuraikan dan disahkan (scanning,
parsing, validating). Query tersebut kemudian dibentuk menjadi sebuah struktur
data yang biasa disebut dengan query tree.
Kemudian
DBMS merencanakan
sebuah
strategi eksekusi
untuk
mendapatkan kembali hasil dari query dari file-file basis data. Tahapan-tahapan
proses dari sebuah query didalam sebuah sistem basis data ditunjukkan pada
Gambar 3 dan berikut penjelasan dari masing-masing tahapan :
ƒ
Scanner melakukan identifikasi (pengenalan) perintah-perintah seperti
SQL keywords, atribut, dan relation name. Proses ini disebut dengan
scanning.
ƒ
Query
Parser
mengecek
validitas
query
dan
kemudian
menterjemahkannya dalam 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 paling murah. Dengan kata lain,
tugas dari query optimizer adalah menghasilkan sebuah rencana eksekusi
dan proses ini disebut 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 yang diarsir pada Gambar 3 adalah optimizer yang sudah
disediakan oleh DBMS. Tahapan proses query pada Gambar 3 tersebut adalah
untuk memberikan gambaran yang jelas tentang bagaimana pada umumnya
sebuah query diproses di dalam sebuah Data Base Manajemen Sistem .
16
2.4. Optimisasi Query
Optimisasi Query adalah suatu proses untuk menganalisis query untuk
menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan
apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah keluaran.
Atau dengan kata lain bahwa optimisasi query adalah sebuah prosedur untuk
meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut
menjadi lebih efektif (Richard 2000).
2.5. Prinsip Optimisasi Query
Prinsip Optimisasi Query terdapat dalam pemilihan strategi query, dan
terletak pada penentuan strategi operasi Join. Bahasa query salah satu yang biasa
digunakan, misalnya SQL, tetapi untuk beberapa kasus khusus, suatu query dapat
mempunyai hubungan dengan pemetaan aljabar. Bentuk yang lebih sederhana
sangat diperlukan dari pada bentuk-bentuk aljabar tersebut, dan diasumsikan
bahwa operasi gabungan adalah salah satu operasi relasi aljabar ( Ken 2000).
Menurut Richard Vlach (2000),
optimisasi query dalam basis data
terdistribusi, ada dua aspek yang sangat penting, yaitu :
1.
Tranmisi data dan kontrol data ke tempat tujuan sangat dipengaruhi
oleh bentuk komunikasi, dan dapat memperlambat keseluruhan
proses.
2.
Pengolahan data secara paralel transmisi data dapat mempercepat
respone
Optimisasi Query adalah proses untuk menunjukkan bahwa baik total
biaya maupun total waktu suatu query diminimalkan. Total biaya diukur oleh
penggunaan sumber daya sistem seperti CPU atau bentuk komunikasi data.
Respone time optimizers yaitu untuk meminimalkan respone time dalam sebuah
query bersama-sama secara paralel.
17
Menurut Özsu MT, Valduriez P. (1999 ) formulasi untuk meminimalkan
biaya (cost function) adalah :
Total Cost = I/O cost + CPU cost + communication cost ........................... (2.1)
Dimana
I/O cost = unit disk I/O cost + no. of disk I/Os
CPU cost = unit instruction cost + no. of instruction
Communicatin cost = message initiation + transmition
Formula (2.1) masing-masing bagiannya dapat mempunyai bobot yang berbeda
tergantung dari terdistribusinya data, antara lain :
- Apabila proses query menggunakan Wide Area Networks (WAN), maka biaya
komunikasi sangat dipengaruhi low bandwidth, low speed dan high protocol
overhead.
Sedangkan
algoritma-algoritma
yang
ada
pada
umumnya
mengabaikan komponen biaya.
- Apabila menggunakan Local Area Networks (LAN), biaya komunikasi dan
pengiriman data tidak mempengaruhi, tetapi total biaya dari fungsi-fungsi yang
digunakan harus dipertimbangkan.
2.6. Metoda Optimisasi Query
Biaya query sangat dipengaruhi oleh dua hal, yaitu proses secara lokal dan
transmisi data antar lokasi, karena berkaitan dengan fungsi biaya. Proses
perhitungan diperlukan untuk
menghasilkan biaya query yang akurat secara
parsial. Karakteristik relasi secara lokal harus diketahui dalam optimisasi waktu.
Beberapa diantaranya adalah kardinalitas dari relasi secara lokal, banyaknya byte
dalam nilai atribut, dan nilai selectivity factor
yang terdapat dalam relasi
diperlukan.
Optimisasi
proses
pengolahan
data
secara
global
dengan
cara
menggunakan metoda secara lokal, dalam pelaksanaannya adalah mengoperasikan
atas kedua proses, yaitu memproses data lokal dan memproses data secara lokal
yang datang dari lokasi lain.
Besar biaya untuk optimisasi lokal pada umumnya didasarkan pada
banyaknya akses dari memori sekunder, ukuran buffers dan ukuran operand. Data
yang akan dioperasikan secara lokal dan tambahan struktur data lokal seperti
indek, hash tabel akan dapat mempercepat proses secara lokal.
18
Operasi join adalah operasi yang sangat mahal. Dan diketahui bahwa
metoda operasi join secara lokal adalah : nested-loops, sort-merge dan hash join.
Walaupun ada metoda optimisasi query global yang mempertimbangkan proses
lokal, ongkos proses secara lokal pada umumnya dapat diabaikan jika
dibandingkan dengan ongkos transmisi data. Selama transmisi data dioptimisasi,
jelas asumsinya bahwa nilai waktu selama transmisi bergantung pada jumlah data
yang dialirkan.
Perhitungkan
respone
time
yang
minimal,
optimisasi
global
memanfaatkannya secara paralel dan mencoba untuk memperkecil transmisi pada
alur yang ”paling buruk”. Operasi secara lokal yang membatasi relasi lokal harus
dieksekusi secepat mungkin. Kemudian, utamakan pada optimisasi pada berbagai
operasi join. Metoda optimisasi secara dinamis dapat memilah perencanaan
ekseskusi query pada tahapan eksekusi. Pada awalnya rencana eksekusi
didasarkan pada penilaian hasil secara parsial. Perubahan selama tahap eksekusi
didasarkan pada ukuran secara parsial dan perubahan mengarahkan pada sisa
query yang akan diproses. (Richard 2000)
2.6.1. Optimisasi Query Basis Formula
Optimisasi basis formula (Rule Based) biasa juga disebut heuristic
optimization adalah optimisasi query dengan menggunakan aturan-aturan heuristic
dan dijalankan pada rencana query secara logika yang terdiri dari urutan operasioperasi relasional yang biasanya digambarkan sebagai query tree
2.6.2. Optimisasi Query Basis Biaya
Dalam optimisasi basis biaya dapat digunakan solution space dan cost
function yaitu dengan total time atau total cost. Hal ini dapat mereduksi setiap
biaya ( dalam setiap termin waktu ) semua komponen satu persatu kemudian
melakukan proses optimisasi untuk setiap utilitas dari setiap sumber-sumber daya
sehingga meningkatkan kinerja sistem.
Faktor-faktor yang terdapat dalam total cost yang ditunjukkan oleh
persamaan (2.1) menghasilkan total cost factor dan tergantung dari arsitektur
jaringan yang digunakan. Untuk penggunaan Wide Area Network dipengaruhi
19
oleh inisiasi pesan dan transmisi cost sangat tinggi, dan biaya pemrosesan secara
lokal lambat (kecuali untuk mainframe dan mini komputer). Demikian juga rasio
dari komunikasi ke I/O costs adalah = 20 : 1, tetapi untuk penggunaan Local Area
Network komunikasi dan proses secara lokal biayanya lebih sedikit dengan rasio
dari komunikasi ke I/O costs = 1 : 1,6 ( Valduriez P. 1999).
Dalam menghitung Respone time dapat mengerjakan hal-hal yang
mungkin secara paralel sehingga dapat meningkatkan total time karena
meningkatnya total aktifitas, dan berdasarkan rumus (2.1)
Respone time = CPU time + I/O time + communication time ...................... (2.2)
Dimana CPU time = unit instruction time * no. of sequential instruction
I/O time = Unit I/O time * no.of sequential I/Os
Communication time = unit msg initiation time + no.of sequential msg
+ unit transmition time * no.of sequential bytes
2.6.3. Fungsi Biaya dari Statistik Basis data
Untuk melihat cost factor yang utama dalam statistik basis data menurut
(Valduriez P. 1999), ukuran relasi dari basis data memiliki nilai selectivity factor
untuk setiap relasi dalam setiap operasi, yaitu :
1. Operasi joins
card(R⋈ S)
SF (R,S) = -------------------------
.............................................
(2.3)
size(R) = card(R)*length
............................................
(2.4)
card(σ F (R)) = SF σ (F) *card(R)
............................................
(2.5)
...............................
(2.6)
card(R)*card(S)
2. Operasi Selection
dimana
1
S F σ (A = value) = --------------------card(∏A (R))
20
max(A) – value
S F σ (A > value) = --------------------------
...............................
(2.7)
...............................
(2.8)
max(A) – min(A)
value – max(A)
S F σ (A < value) = --------------------------max(A) – min(A)
SF σ (p(A i ) ∧ p(A j )) = SF σ (p(A i )) *SF σ (p(A j )
.......
(2.9)
SF σ (p(A i ) ∨ (p(A j )) = SF σ (p(A i )) + SF σ (p(A j )) – (SF σ (p(A i ))
*SF σ (p(A j )))
...............................
SF σ (A ∈ value) = SF σ (A= value) * card(value)
(2.10)
...................
(2.11)
.......................................................
(2.12)
3. Projection
card(Π A (R))=card(R)
4. Cartesian Product
card(R × S) = card(R) .card(S)
............................................
(2.13)
Batas atas: card(R ∗S) = card(R) + card(S) ................................
(2.14)
Batas Bawah: card(R ∗S) = max{card(R), card(S)} ....................
(2.15)
5. Union
6. Set Difference
Batas atas: card(R–S) = card(R)
............................................
(2.16)
Batas bawah: 0
............................................
(2.17)
7. Join
Dalam kasus khusus: A adalah primary key dari R dan B adalah foreign
key dari S;
card(R⋈ A=B S) = card(S)
.........................................................
(2.18)
Lebih umum:
card(R⋈ S) = SF⋈ .card(R) *card(S)
.................................
(2.19)
21
2.6.4. Optimizer DBMS MySQL
MySQL melakukan optimisasi melalui fasilitas query optimizer. Query
optimizer secara rutin memeriksa dan melakukan transformasi semua ekspresiekspresi aljabar yang sama dan memilih salah satu dari ekspresi yang terbaik dan
memiliki perkiraan paling murah dengan menggunakan fungsi optimize() dari
optimizer MySQL dan secara rutin diaplikasikan pada semua tipe query
([email protected]. 1998-2007 MySQL AB ).
MySQL Optimizer melakukan proses optimisasi menggunakan 5 langkah,
yaitu :
1.
Menentukan tipe join.
Sistem menetapkan tabel yang akan dibaca dalam join, kemudian
menetapkan primary index secara berurutan dalam equality relation dengan
nilai indek tidak null, menetapkan jangkauan dari indek dan membaca
seluruh tabel menurut indek secara berurutan.
2.
Menentukan metode akses dan join
Metode akses dan join dilakukan dengan Query Execution Plan (QEP) dan
mencari rencana yang terbaik dengan menggunakan prosedur find_best()
dari MySQL Optimizer.
3.
Menentukan rentang indek dari tipe join
Tipe join dalam tabel diberi rentang indek agar optimizer dengan mudah
mengambil data dari tabel yang berada dalan rentang indek.
4.
Menentukan indek dari tipe join
Tipe join dalam tabel diberi indek, agar optimizer dengan mudah mengambil
data berdasarkan indek.
5.
Menentukan indek dari tipe merge join
Indek merge join digunakan bilamana kondisi atribut join dalam tabel dapat
dibentuk kedalam beberapa kondisi indek yang terdiri dari cond_1 OR
cond_2 ... OR cond_N. Jika cond_1 OR cond_j , dan dapat digabung
menjadi satu rentang yang sama, maka diberikan satu rentang indek, hal ini
dilakukan untuk menghindari dan mengeliminasi duplikasi data.
Download