Anda di halaman 1dari 5

Seminar Nasional Teknologi Informasi dan Multimedia 2018 ISSN : 2302-3805

UNIVERSITAS AMIKOM Yogyakarta, 10 Februari 2018

ANALISIS PERBANDINGAN OPTIMASI QUERY NESTED JOIN DAN


HASH JOIN PADA TABEL PARTISI DAN TABEL TIDAK PARTISI
Doni B Wahyudi 1), Khafidz NH2), Adhika Thaariq Y3)
1)
Fakultas Ilmu Komputer, Universitas AMIKOM Yogyakarta
2)
Fakultas Ilmu Komputer, Universitas AMIKOM Yogyakarta
3)
Fakultas Ilmu Komputer, Universitas AMIKOM Yogyakarta
Jl. Ring Road Utar, Condong Catur, Depok, Sleman, Yogyakarta 55281
Email : bryant85@gmail.com 1), afidzlive@gmail.com2), andhika.thaariq@gmail.com3)

Abstrak memperlambat informasi yang ingin di tampilkan,


karena terjadi script time out yang dilakukan oleh
Optimasi query dapat menjadi salah satu cara yang aplikasi yang akan mengakibatkan proses penampilan
digunakan untuk melakukan proses pengolahan data informasi berhenti.
dalam mencari jalur tercepat pada database
menagement system (DBMS). Membandingkan beberapa Penelitian pertama yang dilakukan oleh (Melany
teknik optimasi untuk mengetahui mana yang tercepat Mustika Dewi dkk, 2017) bahwa proses pengujian yang
dalam melakukan proses eksekusi data pada kondisi dilakukan adalah mengolah data dengan menerapkan
tertentu. Dalam penelitian ini proses pengujian yang teknik optimasi dengan Nested Join Query dan Hash Join
dilakukan adalah mengolah data dengan menerapkan Query yang merupakan dua query yang banyak
teknik optimasi dengan Nested Join Query dan Hash digunakan dalam basis data dengan hasil teknik optimasi
Join Query yang merupakan dua query yang banyak query yang terbaik yaitu Nasted Join Scalar. [2]
digunakan dalam basis data. Masalah yang dibahas Penelitian kedua yang dilakukan oleh (Moh Sulhan dkk,
dalam penelitian ini adalah bagaimana membandingkan 2016) bahwa penggunaan subset query menggunakan
kecepatan pengolahan data dengan query yang telah tipe data yang sama dalam tabel atau indeks
dilakukan join relasi dengan tabel tidak partisi dan tabel menghasilkan model penggunaan sub query, namun
partisi dan menggunakan dua teknik optimasi. Sehingga perlu diingat yang adalah cara yang lebih optimal
dapat diambil kesimpulan teknik apa yang paling cocok sehingga pada akhirnya mendapat query dengan waktu
digunakan dalam proses sesuai dengan kondisi tertentu. akses yang paling minimum dengan menggunakan
Proses ini dilakukan menggunakan MySQL sebagai partisi, untuk mengetahui perbedaan hasil query yang
DBMS dan data yang akan diolah adalah database yang menghasilkan tabel partisi menggunakan atau tidak
berisi data nilai siswa. Hasil akhir dari penelitian ini menggunakan partisi. [3]
berbentuk grafik dengan hasil teknik optimasi query
yang terbaik yaitu Nasted Join dengan tabel terpartisi. Nasted join query adalah join yang digunakan ketika
subset berjumlah sedikit. Cara kerja nasted join
Kata Kunci—Optimasi Query, Nasted Join, Hash Join, menentukan sebuah tabel yang dijadikan outer dan tabel
Tabel Partisi dan Tabel Tidak Partisi lainnya sebagai inner. Setiap baris yang ada pada outer
akan dilakukan join pada baris yang ada pada inner tabel.
1. Pendahuluan
Secara definisi tabel terpartisi atau partisi tabel adalah
Kemajuan zaman dan teknologi saat ini telah merubah memecah tabel menjadi beberapa bagian/segmen, tujuan
pola dalam perusahaan ataupun organisasi-organisasi. dari menggunakan partisi adalah memungkinkan untuk
Data yang besar dan telah terkumpul dalam waktu yang mempercepat proses query.
lama dapat diolah menjadi sumber informasi yang dapat
membantu menganalisis eksistensi dari sebuah Berdasarkan uraian di atas maka perlu dilakukan
perusahaan atau organisasi.[1] Database atau sering juga penelitian untuk mendapatkan hasil optimal untuk
disebut basis data adalah sekumpulan informasi yang mengakses data di database dengan membandingkan
disimpan dalam komputer secara sistematik dan Query Nested Join dan Hash Join pada tabel partisi dan
merupakan sumber informasi yang dapat diperiksa tabel tidak partisi.
menggunakan suatua program komputer database
berfungsi untuk menyimpan informasi atau data. 2. Tinjauan Pustaka
Permasalahan dalam mengelolah database saat ini tidak
cepat dan efisen penggunaan query pada suatu aplikasi MySQL adalah salah satu aplikasi Database
meskipun menggunakan RDBMS yang berbeda-beda. Management System (DBMS) yang menggunakan fungsi
Penggunaan query yang tidak teroptimasi juga relasional dalam pengaksesan basis data. MySQL
berjalan sebagai sebuah server sehingga akses basis data

1
Seminar Nasional Teknologi Informasi dan Multimedia 2018 ISSN : 2302-3805
UNIVERSITAS AMIKOM Yogyakarta, 10 Februari 2018

dapat dilakukan oleh beberapa pengguna sekaligus. berdasarkan sebuah kondisi, misalkan berdasarkan
MySQL dapat berjalan dengan baik dengan semua tanggal, maka ketika melakukan query hanya men-scan
sistem operasi dan dapat diimplementasikan dengan segmen dimana data itu berada, tidak 10 juta record itu
berbagai API (Application Programming Interface) yang di scan, sehingga kemungkinan proses query menjadi
berjalan dalam bahasa C, C++. C#, Java PHP Delphi, lebih cepat. Hasil query yang di dapat tentunya adalah
dan lainnya. dari hasil query dengan partisi tabel dengan berbagai
Kemajuan teknologi DBMS saat ini telah mencapai kemungkinan untuk mengetahui hasil perbandingan [6]
penggunaan multiuser, multi processing dan aplikasi
sistem lebih cenderung ke client-server, web base dan Berikut adalah membuat partisi berdasarkan sebuah
bahkan ke arah mobile application. Aplikasi-aplikasi ini range, misalkan berdasarkan tanggal, sebuah nilai,
akan mengakses basis data secara bersama-sama. Dalam contoh nya seperti di bawah ini
sistem basis data relasional sering juga dibutuhkan
pengaksesan data terhadap beberapa tabel sekaligus Tabel siswa yang memiliki kolom nis, nama, kd_jurusan
(multiple relasi). Ada beberapa cara dalam melakukan CREATE TABLE tabel_siswa
akses ini, namun perlu diperhatikan cara mana yang ( nis varchar(5),
lebih optimal sehingga pada akhirnya didapatkan query nama text,
dengan waktu akses yang paling minimum. Sehingga kd_jurusan varchar(5),
perlu dirumuskan bagaimana model query yang lebih );
optimal dalam melakukan pencarian data.
Membuat partisi tabel dengan cara list partitioning
2.1 Nested Join sebagai berikut
Nested query atau query bersarang adalah query yang CREATE TABLE tabel_siswa
memiliki query lain di dalamnya. Sub Query merupakan ( nis varchar(5),
pernyataan Select yang merupakan bagian dari nama text,
pernyataan Insert, Select. Nested query digunakan untuk kd_jurusan varchar(5),
menangani masalah dalam query yang kompleks bahkan );
kita tidak tahu nilai berapa yang akan di Select atau di PARTITION BY LIST COLUMNS(kd_jurusan)
Insert. [4] (
Dalam membuat nested join query yang perlu diingat PARTITION tekind VALUES IN (‘dpib’,’tkr’),
adalah: PARTITION bisnis VALUES IN (‘bb’,’tkj’,’mm’)
1. Inner query akan dieksekusi lebih dahulu oleh );
DBMS, lalu hasil dari inner query akan menjadi
3. Metode Penelitian
input bagi outer query
3.1 Optimasi Query
2. Inner query bisa diletakkan pada klausa SELECT,
Optimasi Query adalah suatu proses yang digunakan
pada klausa FROM atau pada klausa WHERE,
untuk menganalisa query dalam menentukan
tergantung kebutuhan.
sumber-sumber apa saja yang digunakan oleh query
3. Inner query pada klausa SELECT dan klausa
tersebut dan apakah penggunaan dari sumber tersebut
WHERE harus menghasilkan hanya satu nilai, tidak
dapat dikurangi tanpa merubah output atau bisa juga
boleh menghasilkan lebih dari 1 baris atau lebih dari
dikatakan bahwa optimasi query adalah sebuah prosedur
1 kolom data.
untuk meningkatkan strategi evaluasi dari suatu query
2.2 Hash Join untuk membuat evaluasi tersebut menjadi lebih efektif.
Hash join query digunakan untuk mengolah data yang Optimasi query mencakup beberapa teknik seperti
berskala besar. Cara kerja hash join adalah membuat transformasi query ke dalam bentuk logika yang sama,
sebuah hash tabel berdasarkan predikat join. Setiap tabel memilih jalan akses yang tercepat dan mengoptimumkan
yang memiliki inner atau outer dijadikan kode dangan penyimpanan data. [7]
hash fuction. Dari kode hash dari inner dan outer akan
dibandingkan apabila kode kedua sama, maka dilakukan 3.2 Perancangan Database
proses pengecekan nilai dalam kolom. Jika nilainya
sama, maka akan dimasukkan kedalam hasil. [5]
2.3 Tabel Partisi
Secara definisi tabel terpartisi atau partisi tabel adalah
memecah tabel menjadi beberapa bagian/segmen, tujuan
dari menggunakan partisi adalah memungkinkan untuk
mempercepat proses query. Misalkan kita memiliki data
sebanyak 10 juta record, bila pada tabel konvensional
maka data sebanyak itu akan di simpan dalam satu
segmen, tetapi bila menggunakan partisi maka data
sebanyak itu akan di pecah-pecah ke banyak partisi

2
Seminar Nasional Teknologi Informasi dan Multimedia 2018 ISSN : 2302-3805
UNIVERSITAS AMIKOM Yogyakarta, 10 Februari 2018

Berikut ini 4 buah query yang akan dieksekusi baik


untuk tabel partisi dan tidak partisi:
a. Query yang join dengan 1 relasi
- Nested Join Query Scalar
select * from tabel_siswa
where tabel_siswa.nis
in (select nis from tabel_ambil) limit x , x;
- Hash Join Query
Select tabel_siswa.* from tabel_siswa nis
where tabel_siswa.nis=tabel_ambil.nis limit x, x;
b. query yang join dengan 2 relasi
- Nested Join Query Scalar
Gambar 1. Rancangan Database Pengolahan Nilai Siswa select * from tabel_siswa
where tabel_siswa.nis in(select
3.3 Proses Pengujian dan analisis uji kd_mapel from tabel_ambil where
Proses eksekusi query dilakukan dengan menggunakan tabel_siswa.nis in(select nis from
laptop yang memiliki spesifikasi sebagai berikut : tabel_nilai)) limit x,x;
Laptop : Lenovo G40 - Hash Join Query
Sistem Operasi : Windows 8.1 select .* from tabel_siswa,
Processor : Intel(R) Corei 3 CPU tabel_ambil, tabel_nilai
RAM : 8.00 GB where tabel_siswa.nis in=tabel_ambil.nis
System Type : 32-bit OS and tabel_siswa.nis=tabel_nilai.nis limit x,x;
Data siswa sejumlah 1810
c. query yang join dengan 3 relasi
Pada setiap data yang tersimpan di database ada - Nested Join Query Scalar
bebarapa faktor yang mempengaruhi untuk kecepatan select * from tabel_siswa where
akses data yang akan di tampilkan, tabel_siswa.nis in (select
a. jumlah data (tanpa partisi tabel) kd_mapel from tabel_ambil where
b. jumlah data (partisi tabel) tabel_siswa.nis in(select nilai from
c. jumlah kolom (partisi tabel) tabel_nilai) and tabel_siswa.nis in
d. jumlah kolom (tanpa partisi tabel) (select kd_jurusan from tabel_jurusan) limit x,x;
e. relasi antar tabel (tanpa partisi tabel) - Hash Join Query
f. relasi antar tabel (partisi tabel) dan Menggunakan select .* from tabel_siswa,
Index tabel_ambil, tabel_nilai, tabel_jurusan
where tabel_siswa.nis=tabel_ambil.nis
Aplikasi yang digunakan adalah HeidiSQL sebagai and tabel_siswa.nis=tabel_nilai.nis and
Mysql user interface dan XAMPP. Dalam menjalakan tabel_siswa.kd_jurusan=tabel_jurusan.jurusan
prosesnya, maka ada beberapa tahap proses dalam limit x,x;
menjalankan HeidiSQL. Yang pertama menjalankan d. query yang join dengan 4 relasi
XAMPP dengan menjalankan tombol start pada MySql. - Nested Join Query Scalar
Setelah XAMPP sudah di jalankan, maka query yang select * from tabel_siswa where
sudah di masukkan jumlah recordnya dapat di eksekusi tabel_siswa.nis in(select
dan didapatkan informasi berkaitan dengan waktu yang kd_mapel from tabel_ambil where
diperlukan dalam setiap proses eksekusi. tabel_siswa.nis in(select nilai_mapel from
tabel_nilai) and tabel_siswa.kd_jurusan in
3.4 Query Algoritma (select kd_jurusan from tabel_jurusan) and
Penelitian ini di mulai dengan menginputkan data tabel_siswa.nis in(select predikat from
sebanyak 1.810 pada 7 tabel di database Pengolahan tabel_predikat) limit x,x;
Nilai Siswa. Selanjutnya menyiapkan empat query - Hash Join Query
dengan relasi yang berbeda beda, dengan teknik join select .* from tabel_siswa,
Nasted Join Query Scalar dan Hash join scalar pada tabel tabel_ambil, tabel_nilai,
partisi dan tabe tidak partisi dengan cara bergantian. tabel_jurusan, tabel_predikat
Dalam satu query dilakukan 24 kali pengujian dengan where tabel_siswa.nis=tabel_ambil.nis
limit data 2n dan per limit data dieksekusi sebanyak 3 and tabel_siswa.nis=tabel_nilai.nis and
kali. Hasil waktu eksekusi dari tiga kali percobaan tabel_siswa.kd_jurusan=tabel_jurusan.jurusan
tersebut dibuat rata rata dengan cara dibagi tiga dan and tabel_siswa.nis=tabel_predikat.predikat
menghasilkan kecepatan rata rata dari eksekusi query limit x,x;
tersebut.

3
Seminar Nasional Teknologi Informasi dan Multimedia 2018 ISSN : 2302-3805
UNIVERSITAS AMIKOM Yogyakarta, 10 Februari 2018

3. Pembahasan
Dari setiap teknik optimasi dilakukan 3 kali pengujian.
Dari waktu yang dihasilkan akan dicari kecepatan
rata-rata eksekusi query. Angka pada limit query
dibawah ditentukan sesuai dengan jumlah data yang
akan di esksekusi seperti pada tabel.
Tabel 1. adalah waktu ekseskusi untuk query 1 sampai
dengan query empat tabel tidak partisi, tabel 2. hasil
ekseskusi query 1 sampai denganquery 4 dengan tabel
partisi, masing masing jumlah data uji mulai dari data
terkecil yaitu 1 ,meningkat 100, meningkat 500 dengan
meningkat paling tinggi adalah 1810 sesuai dengan
jumlah siswa Gambar 3. Grafik eksekusi Tabel Terpatisi

Tabel 1. Tabel hasil eksekusi tabel tidak partisi


Waktu (s)
Nested Join Hash Join
Uji
Rata Rata
1 2 3 1 2 3
-rata -rata
Query 1 0,142 0,146 0,140 0,142 0,156 0,158 0,156 0,156
Query 2 0,156 0,159 0,152 0,155 0,247 0,199 0,196 0,214
Query 3 0,147 0,143 0,149 0,146 0,148 0,157 0,145 0,150
Query 4 0,202 0,201 0,199 0,200 0,199 0,200 0,205 0,201

Tabel 1. Tabel hasil eksekusi tabel partisi


Waktu (s)
Nested Join Hash Join
Uji
Rata Rata
Gambar 4. Hasil Akhir Uji Eksekusi Optimasi Query
1 2 3 1 2 3
-rata -rata
Query 1 0,102 0,106 0,100 0,102 0,146 0,148 0,146 0,146 Hasil yang diperoleh saat Query dengan data sangat
Query 2 0,116 0,119 0,122 0,119 0,207 0,189 0,186 0,186 besar untuk akses data sebagian dan penuh waktu yang
Query 3 0,127 0,123 0,139 0,129 0,138 0,137 0,135 0,135
Query 4 0,142 0,150 0,149 0,147 0,159 0,160 0,165 0,161
paling cepat adalah query dengan optimasi nasted join
dengan jenis query 1 dengan 1 relasi tabel Dan data
sangat besar untuk akses data sebagian dan penuh waktu
Dari hasil pengujian query dengan total data terbanyak yang paling lama adalah query dengan optimasi hasted
adalah 1810 siswa bahwa query yang memiliki join dengan jenis query 4 dengan 4 relasi tabel.
kecepatan ekseskusi paling cepat adalah nasted join.
Adanya tabel partisi meningkatkan optimasi query
dibandingkan dengan yang masih belum partisi.

Hasil analisa semua kriteria dari tabel pengujian

Gambar 2. Grafik eksekusi Tabel Tidak Terpartisi

4
Seminar Nasional Teknologi Informasi dan Multimedia 2018 ISSN : 2302-3805
UNIVERSITAS AMIKOM Yogyakarta, 10 Februari 2018

4. Kesimpulan STIMIK TASIKMALAYA Tasikmalaya, lulus tahun


2011. Saat ini menjadi Mahasiswa Pascasarjana
Berdasarkan hasil uji query dan analisa partisi tabel pada
Universtas Amikom Yogyakarta.
teknik hasted join dan nasted join dengan beberapa
contoh query yaitu query 1 untuk satu relasi sampai
dengan query 4 dengan 4 relasi untuk pengolahan dta Adhika Thaariq Y, memperoleh gelar Sarjana Komputer
nilai siswa dengan total jumlah siswa 1810 siswa dapat (S.Kom), Jurusan Teknik Informatika STMIK AMIKOM
disimpulkan bahwa pengujian yang dilakukan untuk Yogyakarta, lulus tahun 2014. Saat ini menjadi
hasil perbedaan query yang di akses di tabel belum Mahasiswa Pascasarjana Universtas Amikom
partisi dan tabel yang telah di partisi waktu yang paling Yogyakarta.
cepat adalah dari tabel yang dipartisi terbukti Untuk
tabel yang di partisi waktu yang di perlukan 0.102
sedangkan waktu yang diperlukan untuk akses data pada
tabel nonpartisi 0.199 dengan penggunan nasted join
untuk teknik optimasi dari query.
Hasil yang diperoleh saat Query dengan data sangat
besar untuk akses data sebagian dan penuh waktu yang
paling cepat adalah query dengan optimasi nasted join
dengan jenis query 1 dengan 1 relasi tabel Dan data
sangat besar untuk akses data sebagian dan penuh waktu
yang paling lama adalah query dengan optimasi hasted
join dengan jenis query 4 dengan 4 relasi tabel.

Daftar Pustaka
[1] Aris A.b, Optimisasi Query Pada Sistem Database Paralel, (2008
September 20). Tersedia: http://xuyas.wordpress.com
[2] Berry M, A. Haidar M, Maria U, 2015, Analisis Perbandingan
Optimasi Query Nested Join Dan Hash Join Pada Aplikasi
Pencarian Data Berbasis Web,
http://digilib.binadarma.ac.id/files/disk1/144/123-123-berrymaula-
7151-1-jurnal_p-n.pdf, diakses 27 Desember 2016
[3] Immanuel Chan, Oracle Database Performance Tuning Guide,
10g Release 2 (10.2), Redwood City, CA, Maret 2008, pp.379-403.
[4] Junus Sinuraya, 2013, Analisis Query Pencarian Data
Menggunakan Algortima Hash Join dan Nested Join,
blob:https://web.whatsapp.com/dc575335-cf8d-4a6a-92c9-
97b9ff9c4082 diakses 27 Desember 2016
[5] MySQL 5.1 Reference Manual. (online)
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html, diakses
pada 20 Oktober 2016.
[6] Richard Foote, OPTIMIZER_INDEKS_CACHING Parameter,
(2009 September 1). Tersedia: http://richardfoote.wordpress.com
[7] Tom Best dan M.J. Billings, Oracle Database 10g: Administration
Workshop I, Electronic Presentation, Redwood Shores, California
USA, November 2005, pp. 41-42.[5] Sandra Cheevers, Oracle
Database Product Familiy, An Oracle White Paper, Redwood
Shores, CA USA, Agustus 2006, pp 3-4. [6] Sagi Arsyad,
Pengenalan .NET dan C#, Microsoft Innovation Center,
Universitas Indonesia, Jakarta, 2008.

Biodata Penulis
Doni B Wahyudi, memperoleh gelar Sarjana Komputer
(S.Kom), Jurusan Teknik Informatika STMIK AMIKOM
Yogyakarta, lulus tahun 2006. Saat ini menjadi
Mahasiswa Pascasarjana Universtas Amikom
Yogyakarta.
Khafidz Nur Huda Penulis Kedua, memperoleh gelar
Sarjana Komputer (S.Kom), Jurusan Teknik Informatika