analisa performansi query pada database smell

advertisement
Volume 21 No 1 Juni 2017
ISSN:2088-3943
ANALISA PERFORMANSI QUERY PADA DATABASE SMELL
Juanda Hakim Lubis
Program Studi Teknik Informatika,
Fakultas Teknik, Universitas Medan Area Jalan Kolam Nomor 1, Medan 20223
[email protected]
Abstract
Database Refactoring is a process to improve design of a database schema by observing some factors
called database smells. Design changes of a database schema will affect processing time and cost for
processing the query itself. Using a logic representation, which is entity relationship diagram (ERD),
a design is made from a database schema that has been refactored. In compeleting query processing
on a choosen bussines process, refactored schema can done all the query processing although if
compared to schema without Refactoring from query processing point of view, the result is not far
difference. But proven that there is some case where the cost for query processing can be reduced
using refactored schema.
Keywords: Refactoring, database smells, database schema, query, entity relationship diagram
Abstrak
Refactoring Database merupakan proses memperbaiki desain dari suatu skema basis data dengan
memperhatikan faktor-faktor tertentu yang disebut dengan database smell. Perubahan desain dari
skema database akan mempengaruhi waktu pemrosesan query dan biaya pemrosesan query.Dengan
menggunakan pada sebuah representasi lojik, yaitu entity relationship diagram (ERD), dibuat desain
dari suatu skema basis data yang telah di-refactor. Dalam menyelesaikan pemrosesan query pada
proses bisnis yang telah ditentukan, skema refactoring dapat menyelesaikan semua pemrosesan query
walaupun bila dibandingkan dari sudut pandang waktu pemrosesan query dengan skema yang tidak
mengalami refactoring, tidak berbanding jauh. Namun terlihat bahwa terdapat kasus-kasus dimana
biaya untuk pemrosesan query dapat diproses dengan biaya yang murah bila menggunakan skema
refactoring.
Kata Kunci: Refactoring, database smell, skema basis data, query, entity relationship diagram
I.
PENDAHULUAN
Berdasarkan hasil survey Universitas
California di BerkeleyLightstone ( Sam, 2006 ),
jumlah data yang disimpan di piringan magnetik (
disket, harddisk, dll ) meningkat 100% pertahun,
perdepartemen, perperusahaan, artinya setiap
perusahaan di dunia yang menggunakan komputer
data yang dimilikinya akan meningkat 2 kali lipat
pertahun. Oleh sebab itu perlu suatu upaya untuk
menjaga kinerja basis data agar tetap optimal.
Kinerja (performansi) basis data dapat
didefinisikan sebagai optimalisasi penggunaan
sumber daya untuk meningkatkan throughput,
sehingga kemungkinan beban kerja terbesar yang
diproses
terlebih
dahulu
(www.craigsmullins.com/cnr_db.htm).
Banyak
cara yang dapat digunakan untuk meningkatkan
performansi basis data diantaranya dengan
mendesign ulang model.
Desain basis data merupakan langkah awal
yang dilakukan untuk membuat suatu sistem agar
kinerja basis data agar tetap optimal. Dengan
desain basis data seorang praktisi dapat
mengurangi waktu proses untuk operasi bisnis
dalam beberapa kasus ( Sam, 2006 ) . Dengan merefactor skema yang kemudian akan mengasilkan
skema yang baru diharapkan dapat memperbaiki
kualitas dan mempercepat pengaksesan data,
setelah itu akan diuji performansinya, seberapa
besarkah pengaruh skema yang telah di-refactor
dengan yang belum di-refactor.
Refactoring database adalah pengubahan
terhadap skema database untuk memperbaiki
desain dari skema database tersebut tanpa
mengubah perilaku dari skema database tersebut.
Refactoring bukanlah proses mencari bug maupun
menambah fungsionalitas baru, namun lebih
ditekankan untuk memperbaiki desain agar lebih
mudah dimengerti, sehingga memudahkan
42
Junal Manajemen dan Informatika Pelita Nusantara
Volume 21 No 1 Juni 2017
maintenance pada masa yang akan datang. Di
samping itu, jika kode memiliki desain yang
bagus, maka penambahan atau perubahan
requirement tidak menjadi masalah besar.
Refactoring database tidak jauh berbeda dengan
refactoring kode program, tujuannya sama,
membuat desain baru yang diharapkan mudah
dipakai.
II. TEROI
1. Refactoring
Refactoring
merupakan
teknik
untuk
mengubah suatu desain menjadi desain yang lebih
baik berdasarkan faktor-faktor tertentu yang
menyebabkan desain awal dianggap tidak baik
dan perlu dilakukan proses refactoring tersebut.
Refactoring kode merupakan hal yang sudah
biasa bagi developer perangkat lunak. Dalam
refactoring kode, yang kita lakukan menginjeksi
kode program untuk meningkatkan efisiensi
design-nya, mulai dari hal sederhana seperti
merubah nama suatu variabel atau serumit
menggabungkan dua hirarki kelas yang berbeda.
Namun, tidak demikian halnya dengan
refactoring database. Walaupun refactoring kode
maupun refactoring database keduanya memiliki
konsep yang sama, yakni melakukan perbaikan
terhadap sebuah desain yang sudah ada dengan
mempertahankan semantik behaviour-nya.
Refactoring database adalah pengubahan
terhadap skema database untuk memperbaikin
desain dari skema database tersebut tanpa
megubah perilaku dari skema database tersebut.
2. Database Smell
Database smell pada desain suatu basis data
adalah beberapa kategori masalah yang umum di
dalam desain database. Database smell
mengindikasikan bahwa proses refactoring
mempunyai potensial untuk dilakukan pada desain
dari database. Berikut adalah database smell yang
terjadi pada desain dari suatu database:
1. Multipurpose column / kolom dengan
banyak tujuan.
Jika suatu kolom digunakan untuk
beberapa tujuan, akan diperlukan kode
tambahan untuk menjamin bahwa data
digunakan dengan cara yang benar. Hal
tersebut seringkali dilakukan dengan
mengecek nilai dari sebuah kolom atau
lebih. Sebagai contoh adalah sebuah
kolom yang digunakan untuk menyimpan
tanggal lahir seseorang jika dia adalah
customer
juga
digunakan
untuk
menyimpan tanggal mulai berkerja jika
dia adalah employee.
2. Multipurpose table / table dengan banyak
tujuan.
3.
4.
5.
6.
ISSN:2088-3943
Jika tabel digunakan untuk menyimpan
beberapa tipe entitas, maka akan ada
terjadi kecacatan dalam desain dari
database.
Redundant data / data yang berulang
Data yang berulang merupakan masalah
yang serius didalam database operasional
karena jika data disimpan di beberapa
tempat, peluang inkonsistensi akan
terjadi.
Tables with too many columns / table
dengan terlalu banyak kolom
Jika suatu tabel mempunyai banyak
kolom,
hal
tersebut
akan
mengindikasikan bahwa tabel tersebut
mempunyai hubungan yang renggang.
Solusinya adalah dengan melakukan
normalisasi atau dengan menambahkan
tabel baru (ekspansi tabel).
Tables with too many rows / table dengan
terlalu banyak baris
Tabel
yang
berukuran
besar
mengindikasikan masalah performansi.
Yang dapat dilakukan adalah membagi
tabel tersebut secara horizontal. Strategi
tersebut mengurangi ukuran dari tabel,
dan akan meningkatkan performansi.
"Smart" columns / kolom “pintar”
Merupakan kolom yang mempunyai
maksud tertentu, yang tidak bersifat
atomik. Atomik atau tidaknya suatu
kolom tergantung dari proses bisnis yang
ada. Misalnya, NIM dapat menjadi suatu
kolom yang atomik apabila tidak ada
proses pemecahan NIM dalam proses
bisnis. Namun bisa juga menjadi kolom
yang non-atomik. Contoh: 168150068, 2
digit pertama adalah angkatan, 3 digit
angka selanjutnya menandakan program
studi yang diikuti oleh mahasiswa,
sisanya adalah nomor urut mahasiswa.
Itulah yang dimaksud dengan kolom
“pintar”.
3. Tabel Partisi
Filosofi partisi adalah memecah tabel ke
dalam beberapa segmen (partisi atau subpartisi),
di mana tabel konvensional hanya mempunyai
satu segmen. Ini mengacu pada database smell
yang kemudian perlu di’kenai’ refactoring, yaitu
tabel dengan terlalu banyak baris.
Misalkan terdapat tabel penjualan dengan 1
juta records, lalau query yang sering muncul
adalah dengan mengetahui jenis produk yang
sering terjual di tabel penjualan tersebut. Pada
tabel konvensional (non partition), query akan
men-scan keseluruhan 1 juta records data tersebut
karena berada dalam 1 segmen. Jika dipartisi
43
Junal Manajemen dan Informatika Pelita Nusantara
Volume 21 No 1 Juni 2017
berdasarkan jenis produk, maka query akan
mencari khusus di segmen dimana data itu berada,
sehingga proses query lebih cepat.
Manfaat lain dari partitioning adalah tiaptiap segmen (partisi atau subpartisi) bisa
ditempatkan di tablespace yang berbeda, sehingga
kita mendapat manfaat dari spreading (menyebar)
tablespace, yaitu penyebaran I/O dan mengurangi
resiko data hilang yang disebabkan karena
tablespace corrupt.
Ada 3 metode utama partisi :
1. Range partitioning
Pada
range
partition,
data
dikelompokkan
berdasarkan
range
(rentang) nilai yang kita tentukan. Range
partition ini cocok digunakan pada
kolom yang nilainya terdistribusi secara
merata.
2. List partitioning
Pada list partition, data dikelompokkan
berdasarkan nilainya atau membagi data
dengan meletakkan pada partisi-partisi
yang sesuai dengan kriteria yang telah
ditentukan. Misalnya satu tabel di pecah
menjadi beberapa partisi dengan kriteria
lokasi, jadi tiap lokasi dalam satu table
tersebut berada di segmen yang berbeda
berdasarkan kiteria.
3. Hash partitioning
Jika ingin melakukan partisi namun tidak
cocok dengan range ataupun list, maka
kita bisa menggunakan hash partition.
Pembagian data berdasarkan algoritma
Hash, dengan membagi data sama rata
pada setiap partisi yang diatur secara
internal oleh Oracle.
4. Model Data
Untuk membangun suatu sistem aplikasi, basis
data merupakan pemodelan keadaan dari “Real
word” atau dunia nyata. Upaya perancangan basis
data dapat ditempuh dengan membuat sebuah
model dari awal sama sekali sampai dilakukan
perbaikan-perbaikan untuk mendapatkan sebuah
model data yang lebih permanen dan lebih
mendekati pada keadaan yang sebenarnya.
Menurut SilberSchatz, model data adalah
kumpulan
perangkat
konseptual
untuk
menggambarkan data, hubungan data, semantik
(makna) data dan batasan data.
Model basis data relasional merupakan salah
satu model basis data disamping ada model basis
data hirarki dan model basis data jaringan
(network). Model basis data relasional adalah
model yang menggunakan kumpulan table yang
masing-masing tabelnya terdiri dari kumpulan
baris/record dan atribut/field.
ISSN:2088-3943
a.
Basis Data Relasional
Basis data relasional adalah basis data yang
setiap entitasnya disimpan kedalam tabel-tabel.
Basis data akan dipilah-pilah kedalam berbagai
tabel 2 dimensi. Setiap table terdiri atas lajur
mendatar yang disebut baris data (row atau
record) dan jalur vertikal yang biasa disebut
kolom (column atau field).
5. Entity Relationship Model
Pada perancangan basis data seringkali
diasosiasikan dengan pembuatan model Entity
Relationship (Model ER) dimana model entity
relationship merupakan model keterhubungan
entitas yang paling popular digunakan dalam
perancangan basis data.
Entity Relationship (ER) merupakan model
data yang didasarkan atas persepsi dari dunia
nyata dimana terdiri dari kumpulan object-object,
yang disebut sebagai entity dan relasi, demikian
menurut SilberSchatz.
a. Komponen Entity Relationship
Sesuai dengan namanya, ada 2 komponen
utama pembentuk model entity relationship yaitu
entitas (entity) dan relasi (relation). Kedua
komponen ini dideskripsikan lebih jauh melalui
sebuah atribut. Entitas (entity) merupakan sebuah
object yang dapat dibedakan dengan object yang
lain. relasi (relation) menunjukkan hubungan
antar
entitas. Atribut
diartikan sebagai
karakteristik (property) dari sebuah entitas dan
relasi.
b. Kardinalitas atau Derajat Relasi
Kardinalitas/derajat relasi merupakan jumlah
maksimum entitas yang dapat berelasi dengan
entitas yang lain.
Kardinalitas/derajat relasi yang terjadi
diantara dua entitas antara lain :

Satu ke Satu (One to One)
Setiap entitas pada himpunan entitas A
berhubungan dengan paling banyak
dengan satu entitas pada himpunan
entitas B dan begitu juga sebaliknya.

Satu ke Banyak (One to Many)
Setiap entitas pada himpunan entitas A
dapat berhubungan dengan banyak
entitas pada himpunan entitas B, tetapi
tidak untuk sebaliknya dimana setiap
entitas pada himpunan entitas B
berhubungan dengan paling banyak satu
entitas pada himpunan A.

Banyak ke Satu (Many to One)
Setiap entitas pada himpunan entitas A
berhubungan dengan paling banyak satu
entitas pada himpunan entitas B, tetapi
tidak sebaliknya dimana setiap entitas
Jurnal Manajemen dan Informatika Pelita Nusantara
44
Volume 21 No 1 Juni 2017

ISSN:2088-3943
pada himpunan entitas B berhubungan
dengan paling banyak entitas pada
himpunan entitas A.
Banyak ke Banyak (Many to Many)
Setiap entitas pada himpunan entitas A
dapat berhubungan dengan banyak
entitas pada himpunan entitas B, dan
demikian juga sebaliknya.
6. Normalisasi
Normalisasi merupakan cara pendekatan lain
dalam membangun desain logik basis data
relasional yang tidak secara langsung berkaitan
dengan model data, tetapi dengan menerapkan
sejumlah aturan dan criteria standar untuk
menghasilkan stuktur table yang normal.
Adapun bentuk normalisasi antara lain:
 Bentuk normal tahap pertama (1st Normal
Form/1NF)
Syaratnya jika sebuah tabel tidak
memiliki
atribut
bernilai
banyak
(multivalued attribut) atau dengan kata
lain atribut yang atomik.
 Bentuk normal tahap kedua (2nd Normal
Form/2NF)
Syaratnya, memenuhi bentuk normal
tingkat pertama, semua atribut yang tidak
termasuk dalam key primer memiliki
ketergantungan fungsional (KF) pada key
primer yang utuh.
 Bentuk normal tahap ketiga (3th Normal
Form/3NF)
Syaratnya, memenuhi bentuk normal
tingkat
kedua.
Tidak
terdapat
ketergantungan
fungsi
transitif
(
transitive functional dependency), yaitu
tidak terdapat ketergantungan fungsi
antara atribut – atribut bukan kunci ke
atribut bukan kunci lainnya dalam tabel.
7. Optimasi Query
Menurut SilberSchatz, query adalah sebuah
pernyataan yang meminta pengaksesan informasi.
Query
(permintaan)
merupakan
metode
pengaksesan yang paling sering digunakan.
Dalam DBMS, query dinyatakan dalam SQL
(Structured Query Languange).
Dalam Database Management System
(DBMS), query di proses melalui tahapan berikut
:
Gambar 2.1 Tahapan Pemrosesan query
Sebuah query yang diekspresikan dalam
sebuah bahasa query tingkat tinggi seperti SQL
mula-mula harus dibaca, diuraikan dan disahkan
(parser and translator). Query tersebut kemudian
dibentuk menjadi sebuah struktur data yang biasa
disebut dengan query tree. Dan kemudian DBMS
(Database
management
system)
harus
merencanakan sebuah strategi eksekusi untuk
mendapatkan kembali hasil dari query dari filefile database.
Query Optimizer memeriksa semua ekspresiekspresi 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. Output dari Optimizer adalah evaluation
plan, yaitu urutan rencana proses eksekusi query
oleh DBMS. Optimasi query merupakan sebuah
proses untuk memilih evaluation plan yang
terbaik untuk suatu query. Query optimizer adalah
bagian dari DBMS yang melakukan fungsi
optimasi query.
Ada beberapa tahapan dalam optimasi query,
yaitu:
 Membangkitkan plan-plan alternatif yang
akan dipilih sebagai evaluation plan.
 Mengestimasi biaya eksekusi untuk
setiap alternatif plan yang dihasilkan
pada tahap satu. Dari beberapa plan yang
diperhitungkan, query optimizer memilih
satu plan optimal, yaitu plan dengan
estimasi biaya terkecil.
Optimasi query dapat dikategorikan menjadi
2 bagian, antara lain :
1. Cost Based Optimization
Pemilihan plan berdasarkan pada
perkiraan biaya untuk setiap alternatif
plan.
2. Rule Base Optimization
Pemilihan plan mengacu pada heuristic /
petunjuk baku yang menentukan prioritas
eksekusi suatu operasi.
45
Junal Manajemen dan Informatika Pelita Nusantara
Volume 21 No 1 Juni 2017
Pada dasarnya tujuan dari optimasi query
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.
ISSN:2088-3943
Physical data model yang digunakan untuk
skema baru adalah sebagai berikut:
country_subregion
PK
country_subregion_id
country_subregion
cust_city
PK
cust_city
PK
PK
countries
PK
cust_id
PK
cust_state_province
cust_total
cust_total_id
cust_total
country_region_id
country_id
country_region
cust_first_name
cust_last_name
cust_gender
cust_year_of_birth
cust_marital_status
cust_street_address
cust_postal_code
cust_city_id
cust_state_province_id
country_id
cust_main_phone_number
cust_income_level
cust_credit_limit
cust_email
cust_total_id
cust_src_id
cust_eff_from
cust_eff_to
cust_valid
cust_state_province_id
PK
country_region
customers
cust_city_id
cust_state_province
country_iso_code
country_name
country_subregion_id
country_region_id
country_total_id
country_name_hist
country_total
PK
country_total_id
country_total
prod_subcategory
products
PK
PK
promotions
promo_subcategory_id
PK
promo_subcategory
promo_id
promo_name
promo_subcategory_id
promo_category_id
promo_cost
promo_begin_date
promo_end_date
promo_total_id
promo_category
PK
promo_category_id
promo_category
prod_subcategory_desc
prod_subcategory
prod_name
prod_desc
prod_subcategory_id
prod_category_id
prod_weight_class
prod_unit_of_measure
prod_pack_size
supplier_id
prod_status
prod_list_price
prod_min_price
prod_total_id
prod_src_id
prod_eff_from
prod_eff_to
prod_valid
promo_subcategory
PK
prod_subcategory_id
prod_id
prod_category
PK
prod_category_id
prod_category_desc
prod_category
prod_total
PK
prod_total_id
prod_total
costs
promo_total
III. ANALISA
DAN
PERANCANGAN
SISTEM
1. Physical Data Model Lama
customers
PK
cust_id
promo_total_id
promo_total
channels
PK
cust_first_name
cust_last_name
cust_gender
cust_year_of_birth
cust_marital_status
cust_street_address
cust_postal_code
cust_city
cust_city_id
cust_state_province
cust_state_province_id
country_id
cust_main_phone_number
cust_income_level
cust_credit_limit
cust_email
cust_total
cust_total_id
cust_src_id
cust_eff_from
cust_eff_to
cust_valid
channel_desc
channel_class_id
channel_total_id
country_id
fiscal_quarter
PK
fiscal_quarter_id
fiscal_quarter_desc
products
calendar_year
PK
promotions
PK
promo_id
promo_name
promo_subcategory
promo_subcategory_id
promo_category
promo_category_id
promo_cost
promo_begin_date
promo_end_date
promo_total
promo_total_id
prod_id
PK
fiscal_year
PK
sales
costs
prod_id
time_id
promo_id
channel_id
unit_cost
unit_price
times
PK
fiscal_year_id
channel_class_id
channel_class
channel_total
channel_total_id
channel_total
times
PK
time_id
day_name
day_number_in_week
day_number_in_month
calendar-week_number
fiscal_week_number
week_ending_day_id
calendar_month_number
fiscal_month_number
calendar_month_id
fiscal_month_id
days_in_cal_month
days_in_fis_month
end_of_cal_month
end_of_fis_month
fiscal_month_name
calendar_quarter_id
fiscal_quarter_id
days_in_cal_quarter
days_in_fis_quarter
end_of_cal_quarter
end_of_fis_quarter
calendar_quarter_number
fiscal_quarter_number
calendar_year_id
fiscal_year_id
days_in_cal_year
days_in_fis_year
end_of_cal_year
end_of_fis_year
week_ending_day
PK
week_ending_day_id
week_ending_day
fiscal_month
PK
fiscal_month_id
fiscal_month_desc
calendar_quarter
PK
calendar_quarter_id
calendar_quarter_desc
fiscal_year
channel_id
channel_desc
channel_class
channel_class_id
channel_total
channel_total_id
PK
prod_id
time_id
promo_id
channel_id
unit_cost
unit_price
Gambar Error! No text of specified style in document..2
Physical Data Model Skema Baru
channels
PK
calendar_year_id
calendar_year
prod_name
prod_desc
prod_subcategory
prod_subcategory_id
prod_subcategory_desc
prod_category
prod_category_id
prod_category_desc
prod_weight_class
prod_unit_of_measure
prod_pack_size
supplier_id
prod_status
prod_list_price
prod_min_price
prod_total
prod_total_id
prod_src_id
prod_eff_from
prod_eff_to
prod_valid
channel_class
PK
prod_id
cust_id
time_id
channel_id
promo_id
quantity_sold
amount_sold
country_iso_code
country_name
country_subregion
country_subregion_id
country_region
country_region_id
country_total
country_total_id
country_name_hist
channel_id
sales
countries
PK
prod_id
cust_id
time_id
channel_id
promo_id
quantity_sold
amount_sold
PK
time_id
day_name
day_number_in_week
day_number_in_month
calendar-week_number
fiscal_week_number
week_ending_day
week_ending_day_id
calendar_month_number
fiscal_month_number
calendar_month_id
fiscal_month_description
fiscal_month_id
days_in_cal_month
days_in_fis_month
end_of_cal_month
end_of_fis_month
fiscal_month_name
calendar_quater_desc
calendar_quarter_id
fiscal_quarter_desc
fiscal_quarter_id
days_in_cal_quarter
days_in_fis_quarter
end_of_cal_quarter
end_of_fis_quarter
calendar_quarter_number
fiscal_quarter_number
calendar_year
calendar_year_id
fiscal_year
fiscal_year_id
days_in_cal_year
days_in_fis_year
end_of_cal_year
end_of_fis_year
Gambar Error! No text of specified style in document..1
Physical Data Model Skema Lama
2. Physical Data Model Skema Baru
Dari lima database smell yang telah
disebutkan, hal yang mencolok yang dikenai
proses refactor adalah table with too many rows –
tabel dengan terlalu banyak baris. Misalnya saja
tabel customers dengan banyak baris sebanyak
55500 baris, tabel costs dengan banyak baris
sebanyak 82112 baris, dan tabel sales dengan
banyak 918843 baris. Solusi dari proses refactor
untuk menangani hal tersebut adalah dengan
membagi tabel tersebut secara horizontal, yaitu
dengan mengimplementasikan “Tabel Partisi”.
Tabel yang dipartisi menempati satu tablespace
(tidak dilakukan partisi yang tersebar pada
beberapa tablespace dengan lokasi penyimpanan
yang berbeda)
Jurnal Manajemen dan Informatika Pelita Nusantara
3. Pengujian Sistem
Sistem ini diimplementasikan pada dua buah
skema
yaitu
skema
yang
belum
mengimplementasikan refactoring (skema lama)
dan skema yang sudah mengimplementasikan
refactoring (skema baru). Semua proses bisnis
yang telah terdefinisi diimplementasi pada kedua
buah skema tersebut. Setelah proses bisnis
diimplementasikan dan menghasilkan output yang
benar,
pengujian
dilanjutkan
dengan
mengekseskusi plan table untuk masing-masing
query dan menghitung waktu pemrosesan query.
Hasil eksekusi plan table dan angka waktu
pemrosesan query selanjutnya menjadi bahan
analisis.
a. Query yang Digunakan pada Skema Lama
1. Proses pengambilan nomor customer
select cust_id from customers where
cust_main_phone_number='&telp'
2. Proses pengambilan produk yang dibeli oleh
customer
select prod_id from products where
prod_category='&p'
and
prod_subcategory='&s'
3. Proses pengambilan waktu pembelian
select time_id from times where time_id in
(select to_char(substr(sysdate,1,7))||'00' from
dual)
4. Proses pengambilan channel
select channel_id from channels where
channel_desc='&ds' and channel_class='&d'
5. Proses pengambilan jenis promo untuk
barang yang dibeli
select min(promo_id) from promotions
Volume 21 No 1 Juni 2017
where promo_begin_date like
(select to_char(substr(sysdate,1,7))||'00' from
dual)
or
promo_name
like
'NO
PROMOTION #'
6. Proses pengambilan harga untuk produk
46
tersebut
select unit_price from costs where
prod_id=&prod and channel_id=&chan and
promo_id=&prom and time_id='&time'
7. Proses input pembelian
insert into sales values (&vprod, &vcust,
'&vtime', &vchannel, &vpromo, &vqty,
&vamount)
8. Proses hitung untung untuk periode waktu
tertentu
select time_id, sum(unit_price-unit_cost)
from costs where time_id in (select
to_char(substr(sysdate,1,7))||'00' from dual)
group by time_id
9. Analisis cutomer dari level income yang
membeli produk tertentu
select distinct a.cust_income_level from
customers
a,
sales
b
where
a.cust_id=b.cust_id and prod_id=&prod
10. Analisis wilayah (negara) dengan customer
yang mempunyai income level paling tinggi
select distinct a.country_region from
countries
a,
customers
b
where
a.country_id=b.country_id
and
cust_income_level='L: 300,000 and above'
11. Analisis produk dengan harga paling rendah
select prod_name from products where
prod_id in (select distinct prod_id from costs
where unit_price in (select min(unit_price)
from costs))
12. Analisis banyaknya customer yang membeli
produk termahal
select count(cust_id) from sales where
prod_id in (select distinct prod_id from costs
where unit_price in (select max(unit_price)
from costs))
b. Query yang Digunakan pada Skema Baru
1. Proses pengambilan nomor customer
select cust_id from customers where
cust_main_phone_number='&telp'
2. Proses pengambilan produk yang dibeli oleh
customer
select prod_id from products where
prod_category_id
in
(select
prod_category_id from prod_category where
prod_category='&p')
and
prod_subcategory_id
in
(select
prod_subcategory_id from prod_subcategory
where prod_subcategory='&c')
3. Proses pengambilan waktu pembelian
select time_id from times where time_id in
(select to_char(substr(sysdate,1,7))||'00' from
ISSN:2088-3943
dual);
Proses pengambilan channel
select channel_id from channels where
channel_desc='&ds' and channel_class_id in
(select channel_class_id from channel_class
where channel_class='&d')
5. Proses pengambilan jenis promo untuk
barang yang dibeli
select min(promo_id) from promotions
where promo_begin_date like (select
to_char(substr(sysdate,1,7))||'00' from dual)
or promo_name like 'NO PROMOTION #'
6. Proses pengambilan harga untuk produk
tersebut
select unit_price from costs where
prod_id=&prod and channel_id=&chan and
promo_id=&prom and time_id='&time'
7. Proses input pembelian
insert into sales values (&vprod, &vcust,
'&vtime', &vchannel, &vpromo, &vqty,
&vamount)
8. Proses hitung untung untuk periode waktu
tertentu
select time_id, sum(unit_price-unit_cost)
from costs where time_id in (select
to_char(substr(sysdate,1,7))||'00' from dual)
group by time_id
9. Analisis cutomer dari level income yang
membeli produk tertentu
select distinct a.cust_income_level from
customers
a,
sales
b
where
a.cust_id=b.cust_id and prod_id=&prod
10. Analisis wilayah (negara) dengan customer
yang mempunyai income level paling tinggi
select distinct a.country_region from
countries
a,
customers
b
where
a.country_id=b.country_id
and
cust_income_level='L: 300,000 and above'
11. Analisis produk dengan harga paling rendah
select prod_name from products where
prod_id in (select distinct prod_id from costs
where unit_price in (select min(unit_price)
from costs))
12. Analisis banyaknya customer yang membeli
produk termahal
select count(cust_id) from sales where
prod_id in (select distinct prod_id from costs
where unit_price in (select max(unit_price)
from costs))
4.
c. Analisis Waktu Pemrosesan Query
Analisis pertama adalah waktu pemrosesan
query untuk tiap-tiap proses bisnis atau kasus uji.
Berikut adalah hasil dari waktu pemrosesan query
untuk setiap query, baik untuk skema lama
maupun skema baru.
Untuk hasil analisis waktu pemrosesan
query, dilakukan dengan cara menghitung rata-
47
Junal Manajemen dan Informatika Pelita Nusantara
Volume 21 No 1 Juni 2017
ISSN:2088-3943
rata waktu pemrosesan query. Untuk setiap satu
kali eksekusi aplikasi, pemrosesan query
dilakukan sebanyak 10 kali dan dirata-rata.
Setelah itu dilakukan 10 kali running aplikasi,
serta dilakukan restart pada computer sebanyak 5
kali untuk mendapatkan hasil yang lebih akurat.
Analisis keunggulan dari waktu pemrosesan
query, baik untuk skema lama maupun skema
baru, dapat dilihat pada tabel-tabel dibawah ini:
Tabel Error! No text of specified style in document..1
Tabel rata-rata keunggulan untuk restart pertama dan
kedua
Tabel Error! No text of specified style in document..2 Tabel
rata-rata keunggulan untuk restart ketiga dan keempat
Tabel Error! No text of specified style in document.-3 Tabel
rata-rata keunggulan untuk restart kelima
Berikut
adalah
tabel
perbandingan
keunggulan dari masing-masing kasus untuk
setiap kali dilakukan restart:
Tabel Error! No text of specified style in document.-1
Tabel perbandingan keunggulan
Jurnal Manajemen dan Informatika Pelita Nusantara
Dari Tabel-tabel diatas, terdapat perbedaan
nilai waktu pemrosesan query pada skema lama
dan skema baru. Dari 11 kasus yang diselesaikan,
skema baru unggul untuk kasus-kasus sebagai
berikut:
1. Proses pengambilan nomor customer
2. Proses input pembelian
3. Analisis cutomer dari level income yang
membeli produk tertentu
4. Analisis wilayah (negara) dengan
customer yang mempunyai income level
paling tinggi.
5. Analisis banyaknya customer yang
membeli produk termahal
Ini disebabkan pada kasus diatas, pada
skema baru terdapat tabel-tabel yang dipartisi
sehingga dapat mempercepat waktu pemrosesan
query. Dapat dilihat untuk kasus analisis seperti
analisis cutomer dari level income yang membeli
produk tertentu, analisis wilayah (negara) dengan
customer yang mempunyai income level paling
tinggi, dan analisis banyaknya customer yang
membeli produk termahal. Ini disebabkan karena
terdapat query yang mengakses tabel yang
dipartisi dengan kriteria yang tepat.
Waktu pemrosesan query lebih cepat pada
skema lama pada kasus-kasus sebagai berikut:
1. Proses pengambilan produk yang dibeli
oleh customer
2. Proses pengambilan jenis promo untuk
barang yang dibeli
3. Proses pengambilan channel
4. Proses hitung untung untuk periode
waktu tertentu
5. Analisis produk dengan harga paling
rendah
Hal ini dikarenakan untuk poin 1, 2, dan 3,
pada skema baru terjadi dekomposisi tabel,
sehingga proses join yang dgunakan lebih banyak
karena tabel yang terlibat lebih banyak. Maka dari
itu waktu pemrosesan query menjadi lebih lama.
Sedangkan untuk poin 4 dan 5 terjadi karena
query yang dilakukan melibatkan tabel yang
dipartisi namun tidak mengakses pada kriteria
Volume 21 No 1 Juni 2017
partisi tabel tersebut. Jadi terdapat waktu
pengaksesan tabel partisi yang sia-sia dan
menjadikan waktu pemrosesan untuk query
tersebut menjadi lebih lama.
Adapun kasus dimana waktu pemrosesan
query baik untuk Skema Lama maupun Skema
Baru tidak terjadi selisih waktu, yaitu untuk
proses pengambilan waktu pembelian. Query
untuk kasus ini adalah statis, dimana tabel yang
diakses baik untuk skema lama maupun skema
baru adalah sama, yaitu tabel bawaan dari oracle
(dual).
Satu kasus yang unik, dari 5 kali restart
adalah selisih unggul untuk skema lama hanya 1,
yaitu 2 : 1 dan sisanya draw. Hal ini disebabkan
tabel dipartisi pada satu tablespace dan tidak
48
disebar pada lokasi yang berbeda, sehingga
pengaksesan I/O bersifat sekuensial. Maka untuk
waktu pemrosesan query, keunggulan mungkin
untuk skema lama dan mungkin juga untuk skema
baru. Ini terjadi pada kasus pengambilan harga.
Partisi tabel pada tabel-tabel tertentu dan
pengaksesan tabel-tabel tersebut untuk skema
baru mempercepat waktu pemrosesan query.
Walaupun tidak semua tabel yang dipartisi
memiliki pemrosesan query lebih cepat. Hal ini
juga dipengaruhi kriteria tabel partisi.
IV. KESIMPULAN
Dari hasil pengujian, dapat ditarik kesimpulan
sebagai berikut:
1. Skema baru dapat diterapkan dan memiliki
performansi yang baik. Dari segi waktu
pemrosesan query maupun biaya pemrosesan
query, untuk kasus tertentu yaitu adanya
query yang mengakses pada tabel partisi
dengan kriteria yang tepat.
2. Dekomposisi tabel yang menjadi bagian dari
proses refactor menyebabkan waktu
pemrosesan query pada skema baru menjadi
lebih lama karena join yang digunakan lebih
banyak karena melibatkan banyak tabel
akibat proses dekomposisi.
3. Skema baru memiliki struktur tabel yang
baik, sehingga unggul dalam waktu
pemrosesan query. Hal ini terbukti dari
kasus-kasus dimana skema baru memiliki
waktu pemrosesan query yang lebih baik
dari skema lama.
4. Untuk biaya pemrosesan query, tabel yang
dipartisi
menyebabkan
biaya
yang
dibutuhkan menjadi minimal. Dari penelitian
ini, untuk kasus pemrosesan customer
income level untuk produk tertentu biaya
yang dibutukan pada skema lama adalah
5443 dan untuk skema baru adalah 1442.
Keunggulan untuk skema baru sebesar
73,81%
5.
ISSN:2088-3943
Kriteria untuk tabel partisi juga berpengaruh
pada waktu pemrosesan query dan juga
biaya pemrosesan query
V. Daftar Pustaka
[1] Ambler S.W dan Sadalage P.J. 2006.
Refactoring
Databases:
Evolutionary
Database Design. Boston, Addison Wesley
Professional
[2] Fathansyah.1999, Basis Data, Informatika
Bandung.
[3] Lewis,Jonathan. 2006. Cost Based Oracle
Fundamentals. Appress
[4] Millsap,Cary. 2003. Optimizing Oracle
Performance. USA : O’REILLY
[5] Niemiec,Richard. 2007. Oracle Database
10g : Performance Tuning Tips & Technique.
Osborne: Mc Graw-Hill
[6] Powel,Gavin.
2004.
Oracle
High
Performance Tuning for 9i and 10g. USA:
Elsevier Digital Press
[7] Powel,Gavin. 2007. Oracle Performance
Tuning for 10g R2 Second Edition. USA:
Elsevier Digital Press
[8] Ramakrishnan,Raghu.
1998.
Database
Management
System,
Second
Edition.Osborne: Mc Graw-Hill
[9] Samsyiar,Evara.
2006.
Administrasi
Database Oracle 10g. Jakarta: Elex Media
Komputindo
[10] SilberSchatz,Kort and Sudarshan. 2002.
Database System Concept (4th Edition).
Osborne: Mc Graw-Hill
[11] Tow,Dan. 2003. SQL Tuning. USA :
O’REILLY
49
Junal Manajemen dan Informatika Pelita Nusantara
Download