Anda di halaman 1dari 26

Tugas Individu

“ Mata Kuliah Basis Data Terdistribusi “

Optimasi Query Terdistribusi

Oleh :

Dimas Agung P. 18010177

TH 2020/2019

UNIVERSITAS DEHASEN BENGKULU


KATA PENGANTAR

Assalamualaikum wr. Wb

Puji syukur saya panjatkan kehadirat Allah SWT yang telah memberikan rahmat serta
karunia-Nya kepada saya sehingga saya berhasil menyelesaikan Makalah ini yang
alhamdulillah tepat pada waktunya.

Diharapkan Makalah ini dapat memberikan informasi kepada kita semua tentang
Optimasi Querry terdistribusi. Penulis  menyadari bahwa makalah ini masih jauh dari
sempurna, oleh karena itu kritik dan saran dari semua pihak yang bersifat membangun selalu
saya harapkan demi perbaikan dari kesalahan-kesalahan dalam penulisan makalah ini.

Akhir kata, Saya sampaikan terima kasih kepada semua pihak yang telah berperan
serta dalam penyusunan makalah ini dari awal sampai akhir. Semoga Allah SWT senantiasa
meridhai segala usaha kita. Amin.

Wasalamualaikum wr.wb.

Bengkulu, 1 November 2020

Penyusun,
DAFTAR ISI

Kata Pengantar

Daftar isi

BAB I PENDAHULUAN

A. Pengertian Basis Data Dan Data Querry

BAB II PEMBAHASAN

A. Pengenalan Optimasi Query Terdistribusi


B. Optimasi pada Perintah SQL
C. Tujuan Optimasi Query
D. Hasil DBMS MSSQL SERVER 2008

BAB III KESIMPULAN

A. Kesimpulan

DAFTAR PUSTAKA
BAB I
PENDAHULUAN
1.1 pengertian basis data

Data adalah representasi fakta dunia nyata yang mewakili suatu objek seperti manusia
(pegawai, siswa, pembeli, pelanggan), barang, hewan, peristiwa, konsep, keadaan, dan
sebagainya, yang diwujudkan dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, atau
kombinasinya.

Basis data (database) adalah kumpulan dari berbagai data yang saling berhubungan
satu dengan yang lainnya. Basis data tersimpan di perangkat keras, serta dimanipulasi
dengan menggunakan perangkat lunak. Pendefinisian basis data meliputi spesifikasi dari
tipe data, struktur dan batasan dari data atau informasi yang akan disimpan. Database
merupakan salah satu komponen yang penting dalam sistem informasi, karena merupakan
basis dalam menyediakan informasi pada para pengguna atau user. Tujuan utama DBMS
adalah untuk menyediakan tinjauan abstrak dari data bagi user. Jadi sistem
menyembunyikan informasi mengenai bagaimana data disimpan dan dirawat, tetapi data
tetap dapat diambil dengan efisien. (Hednrifadilah, 2008)

1.2         Definisi optimasi query


       Optimasi query merupakan 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
optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query
untuk membuat evaluasi tersebut menjadi lebih efektif.

       Dimana optimasi query dapat berupa :

1.      Operasi urutan eksekusi(relational)

2.      Metode akses untuk relasi yang tepat

3.      Algoritma untuk menjalankan operasi (khususnya dalam join)

4.      Urutan per gerakan data antar site

       Dari daftar diatas , ada 2 aspek esensial dari proses query dalam lingkungan terdistribusi,
yaitu :

1.      Data dan pesan ditransmisikan melalui jalur komunikasi, hal ini akan berakibat pada
lambatnya proses.

2.      Keberadaan banyak prosedur dalam jaringan, hal ini akan menimbulkan adanya oportunisi
utuk terjadinya paralle-processing dan transaksi data sehingga akan menaikkan speed-up.
BAB II
PEMBAHASAN

Optimasi Query Terdistribusi

Dengan semakin berkembangnya teknologi, penggunaan sistem basis data dapat memiliki
peranan penting dalam menunjang kegiatan suatu instansi terutama instansi yang memiliki
jumlah data yang besar. Universitas sebagai salah satu contohnya, dapat dipastikan memiliki
sistem basis data yang menyimpan data-data penting yang berhubungan dengan universitas.
Sistem basis data yang digunakan dapat berupa basis data tersentralisasi atau basis data
terdistribusi. Sistem Basis data tersentralisasi adalah sistem basis data yang secara fisik
terletak dan dipelihara pada satu tempat atau situs. Sedangkan sistem basis data terdistribusi
adalah sistem basis data yang secara fisik tersebar ke dalam beberapa situs namun secara
logis terhubung menjadi satu kesatuan basis data dan digunakan bersama-sama dimana
terhubung dalam suatu jaringan komputer .

A.Pengenalan Optimasi Query Terdistribusi

optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu
query untuk membuat evaluasi tersebut menjadi lebih efektif . optimasi query dalam basis
data terdistribusi menggunakan metode Fragment and Replicate Strategy (FRS) oleh
Alom,B.M.M. Prinsip kerja metode ini adalah melokalkan fragmen yang ada dengan metode
replikasi sehingga biaya komunikasi bisa diminimumkan ketika melakukan eksekusi query.
Namun Fragment and Replicate Strategy (FRS) dalam implementasinya membutuhkan
storage yang besar. Penelitian sebelumnya yang lain, untuk optimasi query dalam basis data
terdistribusi menggunakan metode Semi Join Based Approach (SBA). Metode SBA adalah
metode berbasiskan biaya yang menerapkan projection dan selection secara tepat. Dalam
metode ini dilakukan pemetaan berbentuk tree terhadap kemungkinan model akses yang ada.
Dari beberapa kemungkinan yang ada akan dihitung dan model yang optimal adalah model
dengan biaya terendah. Metode ini menguntungkan apabila biaya (cost) untuk menghasilkan
dan mengirimkan ke situs lain kurang dari biaya pengiriman seluruh relasi operan dan
melakukan join yang sebenarnya. Pada penelitian ini akan menggunakan metode lain yaitu
Dynamic Approach. Metode Dynamic Approach akan mengoptimalkan eksekusi query
dengan menggunakan algoritma INGRES yang berfungsi untuk memecah query menjadi
beberapa bagian agar eksekusi query lebih cepat dan mengurangi pengaruh biaya komunikasi
untuk mentransfer data dengan melakukan pemilihan situs yang akan memproses atau
mengeksekusi query yang disebut sebagai situs pemrosesan.

Berdasarkan uraian dalam latar belakang maka rumusan masalah penelitian ini adalah
bagaimana mengimplementasikan optimasi query pada sistem basis data terdistribusi dengan
menggunakan metode Dynamic Approach dan bagaimana analisa hasil metode Dynamic
Approach ketika diimplementasikan dalam basis data terdistribusi.

Optimasi Query merupakan proses untuk menganalisa query dan menentukan sumber-


sumber apa saja yang digunakan oleh query tersebut dan apakah pengguna dari sumber
tersebut dan apakah pengguna tersebut di kurangi tanpa merubah output. ada tiga aspek dasar
yang mempengaruhi optimasi query yaitu Search Space, Cost Model dan Search Strategy. 
1. Optimasi Query

Mencari urutan optimal dari operasi query. Strategi yang terpilih


diharapkan dapat meminimalisasi biaya yang harus dikeluarkan dalam
pengeksekusian query. biaya eksekusi merupakan kombinasi bobot dari I/O, CPU, dan
biaya komunikasi.
Query optimizer, sebuah modul software yang mendukung optimasi query terdiri dari tiga
komponen, yaitu :

 Search Space

Merupakan sekumpulan alternatif perencanaan eksekusi yang


m e r e p r e s e n t a s i k a n query. Seluruh alternatif adalah ekuivalen, yaitu memberikan
hasil yang sama dengan urutan pengoperasian, pengimplementasian, dan performance
yang berbeda.K e p r e s e n t a s i d a r i q u e r y t e r s e b u t d i b e n t u k d a l a m s u a t u
o p e r a t o r t r e e s yang dapat dibuat dengan aturan transformasi.

 Cost Model
Model yang memprediksi biaya yang harus dikeluarkan dari suatu query yang akan
dieksekusi. Terdiri dari cost function, statistic database, dan formula. Merupakan
sekumpulan alternatif perencanaan eksekusi yang merepresentasikan query. Seluruh
alternatif adalah ekuivalen, yaitu memberikan hasil yang sama dengan urutan
pengoperasian, pengimplementasian, dan performance yang berbeda.

 Search Strategi
Search strategy mengeksplorasi search space dan memilih strategi terbaik dari
alternatif yang ada menggunakan cost model.
Search Strategy yang dapat digunakan adalah dynamic programming yang bersifat
determenistik, di mana menghasilkan solusi terbaik, dan randomized strategies yang
berkonsentrasi pada pencarian solusi optimal dengan menghindari biaya tinggi dalam
optimasi.

2. Optimasi Query Terpusat

Structured Query Language (SQL) adalah bahasa pemrograman yang memiliki tujuan khusus
untuk mengelola data dalam sistem manajemen basis data relasional (DBMS). Operasi yang
paling umum dari SQL adalah query. Query adalah perintah-perintah dengan kriteria khusus
yang bertujuan untuk mengambil data dari suatu basis data . Query secara konvensional
adalah query yang tidak menggunakan teknik khusus untuk mengambil data dari suatu basis
data .
Agar operasi query tidak lambat diperlukan metode yang dapat mengoptimalkan operasi join
query tersebut. Suatu metode optimasi query mencoba untuk menentukan cara yang paling
optimal untuk mengeksekusi query yang diberikan dengan mempertimbangkan rencana query
yang mungkin.
Terdapat beberapa metode optimasi query untuk basis data terdistribusi diantaranya Dynamic
Approach, static approach, semi join based approach dan hybrid approach. Optimasi query
pada penelitian ini akan menggunakan metode Dynamic Approach dimana metode ini
memanfaatkan pemecahan query menggunakan algoritma INGRES.

 Algoritma INGRES

Algoritma INGRES merupakan salah satu metode untuk mengoptimasi query pada sistem
basis data tersentralisasi, namun dapat juga diaplikasikan pada sistem basis data terdistribusi.
Algoritma INGRES melakukan pemecahan query secara rekursif untuk mendapatkan ukuran
query yang lebih kecil yang nanti dieksekusi secara berurutan.
Query diurai menjadi query yang berurutan dan memiliki relasi unik. Apabila ketika
menguraikan dapat menghasilkan monorelasi query maka monorelasi query tersebut
dijadikan indeks awal untuk acuan pecahan query selanjutnya. Monorelasi query sendiri
adalah query yang bersifat operasi unary yang hasilnya didapat dari satu tabel. Apabila tidak
terdapat monorelasi query, maka pemecahan query dilakukan secara berurutan tanpa acuan.
Query hasil pemecahan yang bukan monorelasi disebut multirelasi query. Multirelasi query
adalah query yang bersifat operasi binary yang hasilnya didapat dari dua tabel yang berelasi.
Algoritma INGRES akan mengeksekusi monorelasi query (jika ada) dan mencoba untuk
meminimalkan ukuran dan mengurutkan multirelasi query berikutnya. Ringkasnya, sebuah
query n-relasi q dipecah menjadi subquery n yaitu q1→q2→…..→qn, dimana hasil query
terakhir (qn) merupakan hasil final. Algoritma INGRES dapat diperlihatkan dalam bentuk
SQL sebagai berikut :

q: SELECT R2.A2, R3.A3,…..,RnAn


FROM R1, R2, …. , Rn
WHERE P1(R1.A1’)
AND P2(R1.A1, R2.A2, …. , Rn.An)

Dimana Ai dan Ai’ adalah daftar atribut dari relasi Ri. Pi adalah atribut dari relasi R1, dan P2
adalah atribut dari R1.A1, R2.A2, …. , Rn.An . Query q tersebut akan dipecah menjadi dua
subquery q’ kemudian q’’, dengan pemecahan dari relasi R1.

q’: SELECT R1.A1 into R1’


FROM R1
WHERE P1(R1.A1’)

Dimana R1’ merupakan relasi sementara yang isinya adalah informasi yang dibutuhkan untuk
query selanjutnya. Query q’ merupakan bentuk monorelasi query.

q’’: SELECT R2.A2,....,RnAn


FROM R1, R2,…., Rn
WHERE P2(R1’.A1,…. , Rn.An)

Algoritma Ingres menggunakan algoritma optimasi dinamis yang memecah query kalkulus
ke dalam bagian yang lebih kecil secara rekursif. Mengombinasikan dua tahapan
yaitu dekomposisi dan optimasi kalkulus-aljabar.

 Metode Dynamic Approach

Dynamic Approach untuk optimasi query sistem basis data terdistribusi memiliki
tujuan untuk meminimalkan waktu komunikasi dan waktu respon. Metode Dynamic
Approach mengoptimalkan eksekusi query dengan menggunakan algoritma INGRES agar
eksekusi query lebih cepat dan mengurangi pengaruh biaya komunikasi untuk mentransfer
data dengan pemilihan situs pemrosesan.
Metode Dynamic Approach mengambil keuntungan dari fragmentasi, namun hanya
fragmentasi horizontal agar lebih ringkas. Hal ini dikarenakan metode ini membutuhkan
setiap atribut dari tiap row tabel hasil fragmentasi dimana fragmentasi horizontal tidak
membagi atribut-atribut tersebut.
Metode Dynamic Approach juga mengambil keuntungan terhadap topologi jaringan
yang digunakan pada sistem basis data terdistribusi karena unit data yang sama dapat
dipindah atau dikirimkan dari satu situs ke situs lain melalui satu transfer tunggal.

Metode Dynamic Approach memiliki beberapa langkah yaitu sebagai berikut :

[Langkah 1] Jika terdapat query monorelasi yang dapat dilepas (detachable), query tersebut

diproses terlebih dahulu secara lokal

[Langkah 2] Dilakukan teknik reduksi (algoritma INGRES) terhadap query asli sehingga
mengisolasi semua subquery yang tidak dapat direduksi (MRQ atau
multirelasi query)

[Langkah 3.] Melakukan eksekusi query dengan tahap :

[Langkah 3.1] Dilakukan pemilihan terhadap MRQ yang berdasarkan daftar MRQ dari
langkah. Hasil dinamakan MRQ'.

[Langkah 3.2] Memilih strategi terbaik untuk memproses MRQ'. Strateginya berupa
pemilihan F dan S dimana F adalah fragmen untuk memindahkan ke S atau
situs pemrosesan atau situs pemrosesan
[Langkah 3.3] Mengirimkan semua fragmen ke situs pemrosesan yang sudah ditentukan
sebelumnya
[Langkah 3.4] Setiap MRQ' tadi dieksekusi. Jika terdapat subquery, algoritma akan
mengulang ke langkah 3.1 dan kemudian melakukan iterasi selanjutnya
hingga tidak terdapat subquery lagi.

Optimasi terjadi pada langkah 3.2 yaitu pemilihan situs pemrosesan. Pemilihan situs
pemrosesan sangat penting karena besar data yang ditransfer dari situs lain dapat
mempengaruhi eksekusi query. Semakin besar data yang ditransfer maka semakin berkurang
kecepatan eksekusi query jadi situs pemrosesan sebaiknya memiliki data yang paling besar.

Proses Query pada Sistem Basis Data Terdistribusi

Dalam basis data terdistribusi, proses query berlangsung pada beberapa lapisan.
Lapisan-lapisan tersebut terdiri atas 3 lapisan di situs utama dan 1 lapisan di situs lokal.
Lapisan pertama disebut query decomposition adalah lapisan yang memecah query kalkulus
menjadi query aljabar pada relasi global. Lapisan kedua adalah data localization, dimana
input dari lapisan ini adalah query aljabar pada relasi global hasil pengubahan dari lapisan
pertama. Fungsi lapisan kedua ini adalah untuk melokalkan data hasil query menggunakan
skema fragmen. Lapisan ketiga adalah global queryoptimization dengan input dari layer ini
adalah query aljabar dalam fragmen. Lapisan ketiga bertujuan untuk menemukan strategi
eksekusi yang dapat meminimalkan cost function dari CPU cost dan communication cost.
Lapisan keempat adalah distributed query execution. Dikarenakan setiap situs lokal memiliki
lapisan ini, maka hasil dari lapisan-lapisan sebelumnya akan dieksekusi oleh setiap situs
lokal. Setiap subquery yang mengeksekusi pada satu situs, disebut local query, lalu
dioptimalkan menggunakan local schema dari situs dan dieksekusi

Gambar 1 Proses Query Pada Sistem Basis Data Terdistribusi (Valuriez, 2011)
 Ingres query processor :

 Algoritma Sistem R
Sistem R merupakan optimasi query statis yang didasarkan pada exhaustive search
dari ruang solusi yang ada. Input untuk optimizer dengan sistem R adalah pohon relasi
aljabar yang dihasilkan dari dekomposisi dari sebuah query SQL. Kemudian output
dari sistem merupakan rencana eksekusi yang mengimplementasikan pohon relasi
aljabar yang optimal. Optimizer menetapkan biaya (dalam hal waktu) dari masing-
masing pohon kandidat dan mempertahankan pohon dengan biaya yang terkecil.
Contoh :
SELECT EMP.ENAME
FROM EMP,ASG,PROJ
WHERE EMP.ENO=ASG.ENO
AND ASG.PNO=PROJ.PNO
AND PNAME=’’CAD/CAM’’
3. Join Ordering
 Join ordering merupakan aspek yang penting dalam suatu optimasi query, terlebih
pada query terdistribusi. Join ordering menjadi lebih penting ketika query merupakan
query terdistribusi karena akan mempengaruhi communication time. Join ordering
dapat dilakukan secara langsung, maupun dengan mengombinasikan dengan
semijoins di mana akan meminimalisasi communication cost.

4. Optimasi Query Terdistribusi


 Algoritma Ingres Terdistribusi
Fungsi objektif dari algoritma ini adalah untuk meminimalisasi kombinasi baik
communication time maupun response time. Algoritma ini juga mendapat keuntungan
pada fragmentasi, tetapi hanya fragmentasi horizontal. Input untuk algoritma
pemrosesan query ini dinyatakan dalam calculus relational-tupel dan skema informasi
(tipe network, lokasi dan ukuran masing-masing site).
Contoh :

Site 1 Site 2

EMP1 EMP2
ASG PROJ

Beberapa strategi yang memungkinkan :


 Eksekusi keseluruhan query (EMP ASG PROJ) dengan memindah EMP1 dan
ASG ke Site 2.
 Eksekusi (EMP ASG) PROJ dengan memindah (EMP1 ASG) dan ASG ke Site
2, dll .
Pemilihan di antara kemungkinan strategi-strategi trsebut membutuhkan estimasi
ukuran dari hasil intermediate. Misal, jika ukuran (EMP1 ASG) > ukuran (EMP1),
maka strategi 1 lebih dipilih daripada strategi 2.

5. Algoritma R*
merupakan substansial ekstensi dari teknik yang dikembangkan untuk optimizer sistem R.
Algoritma ini menggunakan pendekatan kompilasi di mana suatu exhaustive search dari
Relation Size Site seluruh alternative strategi dilakukan untuk
memilih salah satu dengan biaya terendah.
EMP 8 1 Algoritma Sistem R* tidak mendukung
PAY 4 2 pengimplementasian baik dalam fragmentasi
PROJ 1 3 maupun replikasi. Input untuk algoritma ini
ASG 10 4 adalah query yang sudah dilokalisasi yang
direpresentasikan dalam pohon relasi
aljabar(query tree), lokasi relasi, dan statistiknya.
Contoh :
Query yang terdiri dari penggabungan dari relasi PROJ, eksternal relasi, dan ASG,
internal relasi pada PNO. Kita asumsikan bahwa PROJ dan ASG disimpan dalam site
yang berbeda dan terdapat index pada atribut PNO untuk relasi ASG. Strategi eksekusi
yang memungkinkan untuk query tersebut :
1. Mengirimkan keseluruhan PROJ ke site dari ASG
2. Mengirimkan keseluruhan ASG ke site dari PROJ
3. Mengambil tupel ASG yang dibutuhkan untuk masing-masing tupel PROJ
4. Memindah ASG dan PROJ ke site ketiga
Algoritma R* memprediksi total waktu dari masing-masing strategi dan memilih yang
paling sedikit.

6. Algoritma SDD-1
Algoritma SDD-1 berasal dari metode yang disebut sebagai algoritma ‘hill-climbing’,
yang memiliki keistimewaan sebagai algoritma pemrosesan query terdistribusi yang
pertama. Dalam algoritma ini, perbaikan dari solusi layak awal dihitung secara rekursif
sampai tidak ada lagi perbaikan biaya yang dapat dilakukan. Input untuk algoritma ini
termasuk query graph, lokasi relasi, dan statistik dari relasi.
Contoh :
Asumsikan bahwa TMSG = 0 dan TTR = 1.

Solusi layak awal :

ES0 : EMP à site 4

PAY à site 4

PROJ à site 4
Total.cost(ES0) = 4+8+1=13

Alternatif Splitting :

ES1 : PAY à site 1

ES2 : (PAY EMP) à site 4

ES3 : PROJ à site 4

Total.cost(ES’) = 4+8+1 = 13

Perbedaan dari ketiga algoritma tersebut :

Algoritma Optimization Objective Optimization Network Semijoins Stats Fragments


Timing Function Factors Topology

Distributed Dynamic Response Msg. size, General No 1 Horizontal


INGRES time or proc. Cost or
total cost broadcast

R* Static Total cost #Msg, Msg General No 1,2 No


size, IO, CPU or local

SDD-1 Static Total cost Msg size General Yes 1,3,4,5 No

1 = relation cardinality

2 = number of unique values per attribute

3 = join selectivity factor

4 = size of projection on each join attribute

5 = attribute size and tuple size

B. Optimasi pada Perintah SQL

Desain aplikasi saja tidak cukup untuk meningkatkan 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.
1. Tips Optimasi Query MySQL
 Index
Index adalah objek pada MySQL yang berisi data yang terurut dari nilai-nilai pada
satu atau lebih field dalam suatu table. Sama seperti daftar isi pada sebuah buku,
index terutama digunakan untuk mempercepat pencarian terhadap suatu set data
dengan kondisi tertentu yang melibatkan kombinasi field yang sudah didefinisikan
dalam suatu index.
 Menentukan Tipe Data
Menentukan tipe data yang tepat memerlukan ketelitian dan analisa yang baik.
Sebagai contoh, kita perlu mengetahui kapan kita menggunakan tipe data char atau
varchar. Keduanya menampung karakter, bedanya char menyediakan ukuran
penyimpanan yang tetap (fixed-length), sedangkan varchar menyediakan ukuran
penyimpanan sesuai dengan isi data (variable-length).
 Jangan Izinkan Allow Null
Jika memungkinkan, kurangi penggunaan field yang memperbolehkan nilai null.
Sebagai gantinya, dapat memberikan nilai default pada field tersebut. Nilai null
kadang rancu dalam intepretasi programer dan dapat mengakibatkan kesalahan
logika  pemrograman. Selain itu, field null mengonsumsi byte tambahan sehingga
menambah  beban pada query yang mengaksesnya.
 Query yang Mudah Terbaca
Query panjang yang ditulis dalam 1 baris jelas akan menyulitkan modifi kasi dan
pemahaman, akan jauh lebih baik jika menuliskan query dalam format yang mudah
dicerna. Pemilihan huruf besar dan kecil juga dapat mempermudah pemba5aan,
misalnya dengan konsisten menuliskan keybord SQL dalam huruf kapital, dan
tambahkan komentar bilamana diperlukan.
 Hindari Select*
SELECT* digunakan untuk melakukan query semua field yang terdapat pada sebuah
table, tetapi jika hanya ingin memproses feld tertentu, maka sebaiknya Anda
menuliskan field yang ingin diakses saja, sehingga query Anda menjadi SELECT
field1, field2, field3 dan seterusnya (jangan pedulikan kode program yang menjadi
lebih panjang!). Hal ini akan mengurangi beban lalu lintas jaringan, terutama jika
table tersebut memiliki banyak field dan berukuran besar.
 Batasi Order By
Penggunaan ORDER BY yang berfungsi untuk mengurutkan data, ternyata memiliki
konsekuensi menambah beban query, karena akan menambah satu proses lagi, yaitu
proses sort. Karena itu gunakan ORDER BY hanya jika benar-benar dibutuhkan oleh
aplikasi Anda. Atau jika dimungkinkan, Anda dapat melakukan pengurutan ada sisi
5lient dan tidak -ada sisi serer. Misalnya dengan menam-ung data terlebih dahulu
pada komponen grid dan melakukan sortir pada grid tersebut sesuai kebutuhan
pengguna.
 Subquery Atau JOIN
Adakalanya sebuah instruksi dapat dituliskan dalam bentuk subquery atau perintah
JOIN, disarankan untuk memprioritaskan penggunaan JOIN karena dalam kasus
yang umum akan menghasilkan performa yang lebih cepat.
 Gunakan WHERE dalam SELECT
Menulis suatu kondisi yang pasti bernilai true, misalnya SELECT .... WHERE 1=1.
Bahkan tools open source php MyAdmin yang berfungsi untuk menangani database
MySQL selalu menyertakan default klausa WHERE 1 pada perintah SELECT, di
mana angka 1p-ada MySQL berarti nilai true.
 Kecepatan Akses Operator
WHERE 1=1 dan WHERE 0 <> 1 sama-sama merupakan kondisi yang
menghasilkan nilai true. Tetapi, dalam hal ini lebih baik Anda menggunakan
WHERE 1=1 daripada WHERE 0<>1.HIal ini dikarenakan operator = diproses lebih
cepat dibandingkan dengan operator <>.
 Membatasi Jumlah Record
Membatasi jumlah record yang berpotensi mengembalikan record dalam jumlah
besar (kecuali memang benar-benar dibutuhkan), pada SQL Server, Anda dapat
menggunakan operator TOP di dalam perintah SELECT. Contohnya SELECT TOP
100 nama... akan menampilkan 100 record teratas field nama. Jika menggunakan
MySQL, Anda dapat menggunakan LIMIT untuk keperluan yang sama.
 Batasi Penggunaan Function
Gunakan fungsi-fungsi yang disediakan SQL seperlunya saja. Sebagai contoh, jika
Anda menemukan Query sebagai berikut: SELECT nama FROM tbl_teman WHERE
ucase(nama) = ‘ABC’, nampak query tersebut ingin mencari record yang memiliki
data berisi “abc”, fungsi ucase digunakan untuk mengubah isi field nama menjadi
huruf besar dan dibandingkan dengan konstanta “ABC” untuk meyakinkan bahwa
semua data “abc” akan tampil, walaupun dituliskan dengan huruf kecil, besar,
ataupun kombinasinya.
 Baca dari Kiri ke Kanan
Query yang tulis akan diproses dari kiri ke kanan, misalkan terdapat query WHERE
kondisi$ AND kondisi2 AND kondisi3, maka kondisi1 akan terlebih dahulu
dievaluasi, lalu kemudian kondisi2, kondisi3, dan seterusnya. Tentunya dengan
asumsi tidak ada kondisi yang diprioritaskan/dikelompokkan dengan menggunakan
tanda kurung.
 Gambar dalam Database
Database memang tidak hanya diperuntukkan sebagai penyimpanan teks saja, tetapi
dapat juga berupa gambar. Akan lebih baik bagi kinerja database jika Anda hanya
menyimpan link ataulokasi gambar di dalam database, dibandingkan menyimpan
fisik gambar tersebut.
 Pengukuran Kinerja
Jika menemukan sebuah query tampak tidak optimal, berusahalah menulis ulang
query tersebut dengan teknik dan metode yang lebih baik. Semakin banyak query
yang dapat dioptimasi, akan semakin baik kinerja aplikasi Anda. Terutama saat
frekuensi pemakaian query tersebut relatif tinggi.
 Backup
Buatlah back-up otomatis secara periodik, sebaiknya tes dan simulasikan prosedur
restore database dan perhitungkan waktu yang diperlukan untuk membuat sistem
pulih kembali jika terjadi sesuatu yang tidak diharapkan pada database. Lakukan
proses backup pada waktu dimana aktivitas relatif rendah agar tidak mengganggu
kegiatan operasional.

C. Tujuan Optimasi Query

Dalam tujuannya optimasi query digunakan untuk meminimumkan waktu proses, I/O,
pengguna memory dan meminimumkan total waktu pada proses query.

Menurut Chanowich (2001) ada 2 cara pendekatan optimasi yang digunakan untuk saat ini
yaitu Heuristik atau Rule-Based dan Cost-Based.

1.Heuristik atau Rule-Based

    Optimasi untuk jenis ini mentransformasikan query yang akan meningkatkan kierja
eksekusi yaitu :

 mereduksi jumlah baris dengan melakukan operasi selection.


 mereduksi jumlah atribut dengan melakukan operasi projection.
 mengkonversi query dengan banyak join menjadi query dengan banyak subquery.
 melakukan operasi selection dan join yang paling kecil keluarnya sebelum operasi
lain.

2. Cost-Based

Optimasi untuk jenis ini dipergunakan dari beberapa alternatif untuk dipilih mejadi salah satu
cost yang terendah. selain itu teknik ini juga mengoptimalkan urutan join  terbalik pada
relasi-relasi R1 sampai Rn. Pada teknik ini juga dipergunakan untuk mendapatkan pohon left-
deep join agar menghasilkan relasi pada node sebelah kanan.

Selain Teknik tersebut juga masih ada teknik lainnya yaitu :

 Join Ordering merupakan suatu aspek penting dalam optimasi query


 Algoritma Sistem R merupakan optimasi query statis berdasarkan exhaustive search
 Algoritma Ingres merupakan algoritma optimasi dinamis yang memecah query
kalkulus kebagian yang lebih kecil secara rekursif
Pemilihan Query Laporan

Daftar reporting query yang akan dioptimasi adalah sebagai berikut:


1. Mahasiswa dengan IPK maksmial
2. Nama dan nim mahasiswa angkatan 2009 beserta keterangan jenjang, fakultas, jurusan dan
program studi
3.Nilai dari mahasiswa yang telah mengikuti mata kuliah Skripsi beserta informasi nilai
skripsi, nama, nim dan angkatan dari mahasiswa

Uji Coba Eksekusi Query Secara Konvensional

Eksekusi query dimulai dengan menggabungkan data dari semua situs untuk tabel yang
dibutuhkan query nantinya. Selanjutnya akan dilakukan eksekusi query tanpa optimasi
berdasarkan data hasil gabungan dari situs-situs yang ada. Semua perlakuan dilakukan di
situs laporan.

 Query 1 (konvensional)
Hasil= πkhs.nim,
mahasiswa.nama,
ρipk(Gsum(m_nilai.na*mata_kuliah.sks)/ sum(mata_kuliah.sks))
(σkhs.nim=mahasiswa.nim,
khs.id_mata_kuliah= mata_kuliah.id_mata_kuliah,
khs.id_nilai=m_nilai.id_nilai,
ipk = 4
(khs mahasiswa mata_kuliah m_nilai))

 Query 2 (konvensional)

Hasil = πmahasiswa.nim,
mahasiswa.nama,
ρjenjang/content(m_jenjang),
ρfakultas /content(m_fakultas),
ρjurusan/content(m_jurusan),
ρprogram_studi/content(m_prog_studi)
(σm_jenjang.id_jenjang= m_prog_studi,
m_jenjang.id_jenjang= mahasiswa.id_jenjang,
m_fakultas.id_fakultas= m_jurusan.id_fakultas,
m_fakultas.id_fakultas= m_prog_studi.id_fakultas,
m_fakultas.id_fakultas= mahasiswa.id_fakultas,
m_prog_studi.id_prog_studi= mahasiswa.id_prog_studi,
m_prog_studi.id_jenjang= mahasiswa.id_jenjang,
m_prog_studi.id_fakultas= mahasiswa.id_fakultas,
m_prog_studi.id_jurusan= mahasiswa.id_jurusan,
m_jurusan.id_jurusan= mahasiswa.id_jurusan,
mahasiswa.angkatan = ‘2009‘
(mahasiswa m_jenjang m_fakultas m_jurusan m_prog_studi))
 Query 3 (konvensional)

Hasil= πmahasiswa.nim,
mahasiswa.nama,
mahasiswa.angkatan,
ρnama_mata_kuliah/nama(mata_kuliah),
ρnilai/id_nilai(khs)
(σmata_kuliah.id_mata_kuliah = khs.id_mata_kuliah,
mata_kuliah.nim = mahasiswa.nim,
mata_kuliah.nama = ‘Skripsi’
mahasiswa.id_fakultas = mata_kuliah.id_fakultas,
mahasiswa.id_jurusan = mata_kuliah.id_jurusan,
mahasiswa.id_jenjang = mata_kuliah.id_jenjang,
mahasiswa.id_prog_studi = mata_kuliah.id_ id_prog_studi,
mahasiswa.id_fakultas = m_prog_studi.id_fakultas,
mahasiswa.id_jurusan = m_prog_studi.id_jurusan,
mahasiswa.id_jenjang = m_prog_studi.id_jenjang
mahasiswa.id_prog_studi = m_prog_studi.id_ id_prog_studi,
m_prog_studi.id_fakultas = mata_kuliah.id_fakultas,
m_prog_studi.id_jurusan = mata_kuliah.id_jurusan,
m_prog_studi.id_jenjang = mata_kuliah.id_jenjang,
m_prog_studi.id_prog_studi = mata_kuliah.id_ id_prog_studi,
(mata_kuliah khs mahasism_prog_studi))
Uji Coba Eksekusi Query Menggunakan Metode Dynamic Approach

Secara keseluruhan, implementasi Metode Dynamic Approach akan dilakukan dalam 2 tahap:

 Tahap Pertama
Tahap pertama adalah implementasi algoritma INGRES terhadap tiap reporting query yang
sudah disebutkan sebelumnya. Hasil algoritma INGRES berupa bagian-bagian dari query
yang terdiri atas monorelasi query dan multirelasi query. Untuk setiap monorelasi query yang
ada akan dieksekusi pada situs lokal. Sedangkan tiap multirelasi akan dipindah ke situs
pemrosesan yang sudah ditentukan untuk diproses dan dieksekusi. Apabila tidak terdapat
pecahan query dalam bentuk monorelasi, maka implementasi akan dilakukan secara
sequential tanpa acuan awal

 Query 1 (Optimasi)

Gambar 5 Model Akses Query 1

temp11 = πkhs.nim,
khs.id_mata_kuliah,
m_nilai.na
(σkhs.id_nilai=m_nilai.id_nilai
(khs m_nilai))
temp12 = πtemp11.nim,
ρipk(Gsum(temp11.na*mata_kuliah.sks)/s um(mata_kuliah.sks))
(σtemp11.id_mata_kuliah = mata_kuliah.id_mata_kuliah,
ipk = 4
(temp11 mata_kuliah))
Hasil = πmahasiswa.nim,
mahasiswa.nama,
temp12.ipk
(σmahasiswa.nim=temp12.nim
(mahasiswa temp12))

 Query 2 (Optimasi)

Gambar 6 Model Akses Query 2

mono2 = πmahasiswa.nim,
.mahasiswa.nama,
mahasiswa.id_jenjang,
mahasiswa.id_fakultas,
mahasiswa.id_jurusan,
mahasiswa.id_prog_studi,
(σmahasiswa.angkatan = ‘2009’
(mahasiswa))
temp21 = πmono2.nim,
mono2.nama,
mono2.id_jenjang,
mono2.id_fakultas,
mono2.id_jurusan,
ρprogram_studi/content(m_prog_studi)
(σmono2.id_jenjang = m_prog_studi.id_jenjang,
mono2.id_fakultas = m_prog_studi.id_fakultas,
mono2.id_jurusan = m_prog_studi.id_jurusan,
mono2.id_prog_studi = m_prog_studi.id_prog_studi,
(mono2 m_prog_studi))
temp22 = πtemp21.nim,
temp21.nama,
temp21.program_studi,
temp21.id_fakultas,
temp21.id_jurusan,
ρjenjang/content(m_jenjang)
(σtemp21.id_jenjang =m_jenjang.id_jenjang
(temp21 m_jenjang))
temp23 = πtemp22.nim,
temp22.nama,
temp22.program_studi,
temp22.jenjang,
temp22.id_fakultas,
ρjurusan/content(m_jurusan)
(σtemp22.id_jurusan =m_jurusan.id_jurusan
(temp22 m_jurusan))
Hasil = πtemp23.nim,
temp23.nama,

temp23.jenjang,
ρfakultas/content(m_fakultas)
temp23.jurusan,
temp23.program_studi,
(σtemp23.id_fakultas =m_fakultas.id_fakultas
(temp23 m_fakultas))

 Query 3 (Optimasi)

Gambar 7 Model Akses Query 3

mono3 = πmata_kuliah.id_mata_kuliah,
ρnama_mata_kuliah/nama(mata_kuliah),
mata_kuliah,id_fakultas,
mata_kuliah,id_jenjang,
mata_kuliah,id_jurusan,
mata_kuliah,id_prog_studi
(σmata_kuliah.id_mata_kuliah = ‘Skripsi’
(mata_kuliah))
temp31 = πmono3.nama_mata_kuliah,
mono3.id_mata_kuliah,
mono3.id_fakultas,
mono3.id_jenjang,
mono3.id_jurusan,
mono3.id_prog_studi,
khs.nim,
ρnilai/id_nilai(khs)
(σmono3.id_mata_kuliah = khs.id_mata_kuliah
(mono3 khs))
temp32 = π temp31.nama_mata_kuliah,
temp31.id_mata_kuliah,
m_prog_studi,id_fakultas,
m_prog_studi,id_jenjang,
m_prog_studi,id_jurusan,
m_prog_studi,id_prog_studi,
khs.nim,
temp31.nilai
(σtemp31.id_fakultas = m_prog_studi.id_fakultas,
temp31.id_jurusan = m_prog_studi.id_jurusan,
temp31.id_jenjang = m_prog_studi.id_jenjang,
temp31.id_prog_studi = m_prog_studi.id_ id_prog_studi,
(temp31 m_prog_studi))
Hasil = πtmahasiswa.nim,
mahasiswa.nama,
mahasiswa.angkatan,
temp32.nama_mata_kuliah,
temp32.nilai
(σtemp31.nim = mahasiswa.nim
(temp32 mahasiswa))

 Tahap Kedua

Tahap kedua adalah mengeksekusi semua multirelasi query di situs pemrosesan yang sudah
ditentukan. Untuk penelitian ini, terdapat 6 situs yang akan dicoba sebagai situs pemrosesan.
Percobaan ini dilakukan karena ukuran tiap situs berbeda (berdasarkan total jumlah data)
sehingga dapat menghasilkan hasil yang berbeda tiap situs apabila situs tersebut adalah situs
pemrosesan.

Berikut merupakan perlakuan setiap situs apabila ditentukan sebagai situs pemrosesan :

a. Situs 1
Situs 1 akan mengeksekusi semua query dengan mentransfer data dari situs 2,
situs 3, situs 4 dan situs 5.
b. Situs 2
Situs 2 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 3, situs 4 dan situs 5.
c. Situs 3
Situs 3 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 2, situs 4 dan situs 5

d. Situs 4
Situs 4 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 2, situs 3 dan situs 5.
e. Situs 5
Situs 5 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 2, situs 3 dan situs 4.
f. Situs Laporan
Situs Laporan akan mengeksekusi semua query dengan mentransfer data dari
situs1, situs 2, situs 3, situs 4 dan situs 5.

D. Hasil DBMS MSSQL SERVER 2008

Kedua metode akan diimplementasikan pada DBMS MSSQL Server 2008 dan divandingkan
hasilnya. Dari 10 kali percobaan untuk masing-masing query diambil hasil rata-ratanya. Hasil
perbandingan rata-rata total execution time tiap query ditunjukkan pada grafik 1, 2 dan 3.

Grafik 1 Perbandingan Hasil Rata-Rata Total execution time Query 1


Grafik 2 Perbandingan Hasil Rata-Rata Total execution time Query 2

Grafik 3 Perbandingan Hasil Rata-Rata Total execution time Query 3


BAB III
KESIMPULAN

Optimasi query merupakan 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 optimasi
query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk
membuat evaluasi tersebut menjadi lebih efektif.

optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query
untuk membuat evaluasi tersebut menjadi lebih efektif . optimasi query dalam basis data
terdistribusi menggunakan metode Fragment and Replicate Strategy (FRS) oleh
Alom,B.M.M. Prinsip kerja metode ini adalah melokalkan fragmen yang ada dengan metode
replikasi sehingga biaya komunikasi bisa diminimumkan ketika melakukan eksekusi query.
BAB IV
DAFTAR PUSTAKA

https://id.scribd.com/doc/223182223/Makalah-Optimasi-Query-Terdistribusi
http://azima-n.blogspot.com/2016/03/makalah-optimasi-query-terdistribusi.html

Anda mungkin juga menyukai