Oracle Tuning
Oracle Tuning
1 BAB 2
LANDASAN TEORI
1.1 Teori Umum
1.1.1 Definisi Data dan Informasi
MenurutWilliams-Sawyer (2011, p40),data adalah fakta-fakta dan gambar
mentah yang akan diproses menjadi informasi. Sedangkan menurut Indrajani (2009, p2),
data adalah fakta atau observasi mentah yang biasanya mengenai fenomena fisik atau
transaksi bisnis.
Sementara itu, menurut Williams-Sawyer (2011, p41), informasi adalah data
yang telah dirangkum atau dimanipulasi dalam bentuk lain untuk tujuan pengambilan
keputusan. Sedangkan menurut Rainer-Cegielski (2011, p11), informasi adalah data
yang telah diolah sehingga memiliki arti dan nilai yang berguna bagi penerima.
1.1.2 Definisi Aplikasi
Menurut Connolly-Begg (2010, p67), aplikasi adalah sebuah program komputer
yang berinteraksi dengan database dengan melakukan pengaksesan data melalui DBMS.
Sedangkan menurut Indrajani (2009, p5), aplikasi adalah program untuk menentukan
aktivitas pemrosesan informasi yang dibutuhkan untuk penyelesaian tugas-tugas khusus
dari pemakai komputer.
9
1.1.3 Subprogram
Menurut Sebesta (2010, p411), subprogram adalah blok-blok pembangun dasar
dari program-program yang ada. Karakteristik dari subprogram, yaitu sebagai berikut:
Setiap subprogram memiliki sebuah entry point.
Program unit yang memanggil subprogram akan tertunda selama pemanggilan
subprogram, yang mengindikasikan bahwa hanya satu subprogram yang dapat
dieksekusi dalam waktu yang sama.
Kontrol selalu dikembalikan ke pemanggil ketika eksekusi subprogram berhenti.
Terdapat 2 kategori dari subprogram, yaitu sebagai berikut:
o Procedure
Procedure merupakan kumpulan perintah yang melakukan perhitungan-
perhitungan terhadap parameter yang diterima.
o Function
Function secara struktur menyerupai procedure, namun secara semantik
menyerupai fungsi-fungsi matematis. Function dipanggil dengan menyebutkan
nama function beserta parameter aktual yang akan dikirim. Nilai yang dihasilkan
oleh sebuah function akan dikembalikan ke pemanggil dan menggantikan bagian
dari pemanggilan function itu sendiri.
1.1.4 Active Server Pages
Menurut Macdonald (2010, p7), Active Server Pages (ASP)adalah bahasa
pemrograman script-based yang membutuhkan pemahaman menyeluruh mengenai
HTML dan berorientasi objek model yang memungkinkan kita membuat sebuah
10
halaman web dalam membangun sebuah aplikasi dengan mudah. Sedangkan menurut
Connolly-Begg (2010, p1035), ASP adalah suatu model pemrograman yang
memungkinkan pembuatan halaman-halaman web yang dinamis dan interaktif pada web
server.
ASP dibangun pada file dengan ekstensi .asp, yang berisi kombinasi dari
komponen-komponen berikut:
Teks
HTML tags, dibatasi oleh simbol kurung lancip (<dan >)
Perintah-perintah script dan ekspresi output, dibatasi oleh simbol <% dan %>
1.1.5 Sistem Database
1.1.5.1 Definisi Database
Definisi database menurut Connolly-Begg (2010, p65) adalah kumpulan data,
beserta deskripsinya, yang saling berhubungan secara logis dan dirancang untuk
memenuhi kebutuhan informasi oleh suatu organisasi. Sedangkan menurut Bryla-Loney
(2008, p4),database adalah kumpulan data dalam disk yang terdapat dalam satu atau
beberapa filepada sebuah database server yang mengumpulkan dan mengelolainformasi
yang saling berkaitan.
Empat elemen database menurut Whitten-Bentley (2007, p520-p522), yaitu
sebagai berikut:
1. Field
Field merupakan unit terkecil dari data, yang memiliki arti, yang disimpan di
dalam file atau database. Ada empat jenis field, yaitu sebagai berikut:
11
a. Primary key, adalah field yang nilainya mengidentifikasikan satu dan hanya
satu record di dalam sebuah file. Contohnya, CUSTOMER NUMBER
secara unik mengidentifikasi satu record CUSTOMER di dalam database.
Primary key dapat dibuat dengan mengkombinasikan dua atau lebih field,
disebut sebagai concatenated key.
b. Secondary key, merupakan identifier alternatif bagi database. Nilai dari
secondarykey dapat mengidentifikasi satu record tunggal (seperti
primarykey) atau himpunan record (misalnya semua ORDERS yang
memiliki ORDER STATUS berupa back ordered).
c. Foreign key, merupakan penunjuk ke record dari file lain di dalam
database. Foreign key memungkinkan database untuk menghubungkan
record-record dengan tipe tertentu ke record dengan tipe lain. Contohnya,
ORDER RECORD mengandung foreign key CUSTOMER NUMBER
untuk mengidentifikasi atau menunjuk ke record CUSTOMER yang
berhubungan dengan ORDER. Foreign di suatu tabel harus memiliki
pasangan primary key di tabel yang berhubungan. Dengan demikian,
CUSTOMER NUMBER di dalam tabel ORDERS harus memiliki pasangan
CUSTOMER NUMBER yang sama di dalam tabel CUSTOMERS agar
dapat terjadi relasi antara kedua tabel tersebut.
d. Descriptive field, adalah field lain (bukan key) yang menyimpan data bisnis.
Contohnya EMPLOYEE NAME, DATE HIRED, dan PAY RATE.
12
2. Record
Record adalah kumpulan field yang disusun dalam format yang sudah
ditentukan sebelumnya. Contohnya, suatu CUSTOMER RECORD
dideskripsikan oleh field-field berikut:
CUSTOMER (NUMBER, LAST-NAME, FIRST-NAME, ...)
3. File dan Tabel
Record-record sejenis disusun ke dalam kelompok yang disebut file. Dalam
sistem database, file seringkali disebut tabel. File adalah kumpulan dari semua
kejadian dari suatu struktur record. Tabel adalah database relasional yang
ekuivalen terhadap file.
1.1.5.2 Database Management System
Menurut Connolly-Begg (2010, p66),Database Management System, atau
seringkali disingkat DBMS, adalah sebuah perangkat lunak sistem yang memungkinkan
pemakai untuk mendefinisikan, membuat, mengelola, dan mengontrol akses ke
database.
Menurut Indrajani (2009, p12-p17), lima komponen penyusun DBMS, yaitu
sebagai berikut:
1. Perangkat Keras (Hardware)
Yang termasuk perangkat keras, antara lain personal computer, notebook,
mainframe, hingga jaringan komputer.
2. Perangkat lunak (Software)
Beberapa penggunaan software, antara lain sebagai berikut:
13
2. Aggregate Function
Aggregate functions digunakan untuk melakukan perhitungan seperti rata-rata
dan total dari suatu kolom di dalam query. Beberapa aggregate function yang
penting, antara lain sebagai berikut:
MIN: berfungsi untuk mengembalikan nilai terkecil.
MAX: berfungsi untuk mengembalikan nilai terbesar.
AVG: berfungsi untuk mengembalikan nilai rata-rata.
SUM: berfungsi untuk mengembalikan jumlah dari sebuah kolom.
COUNT: berfungsi untuk mengembalikan banyaknya baris dari kolom-
kolom tertentu.
3. Number dan Date Function
Number function pada Oracle menerima nilai numerik dan juga
mengembalikan nilai-nilai numerik, sedangkan datefunction membantu kita
mengatur format tanggal dan waktu. Beberapa number dan date function yang
penting, antara lain sebagai berikut:
ROUND: berfungsi untuk mengembalikan nilai hasil pembulatan ke tingkat
desimal tertentu.
TRUNC: berfungsi untukmengembalikan tanggal hasil pemotongan ke
format tanggal tertentu.
SYSDATE: berfungsi mengembalikan tanggal dan waktu sekarang.
TO_DATE: berfungsi untukmengubah format tanggal atau mengkonversi
tipe data CHAR atau VARCHAR2 menjadi tipe data DATE.
TO_CHAR: berfungsi untukmengkonversi tanggal menjadi karakter string.
17
4. Menghasilkan baris-baris untuk diberikan pada perintah DML
Subquery juga dapat digunakan pada perintah DML seperti pada contoh
berikut:
Tabel 1.4Contoh PenggunaanSubquerypada Perintah DML
1.1.6.4 Multi-Table Query
Menurut Connolly-Begg (2010, p158), operasi join adalah operasi SQL yang
mengkombinasikan informasi dari dua tabel dengan membentuk pasangan dari baris-
baris yang berkaitan dari dua tabel.
Apabila kita ingin memperoleh informasi dari beberapa tabel, pilihan yang
tersedia yaitu menggunakan subquery atau menggunakan operasi join. Apabila tabel
hasil berisi kolom-kolom dari tabel lain, maka diperlukan penggunaan join. Untuk
melakukan join, cukup menyertakan lebih dari satu nama tabel pada klausa FROM,
menggunakan tanda baca koma (,) sebagai pemisah, dan biasanya menyertakan klausa
WHERE untuk menentukan kolom-kolom join. Nama-nama tabel pada klausa FROM
juga dapat diwakilkan oleh suatu alias. Alias dipisahkan dari nama tabel dengan spasi.
i nser t i nt o sal es_hi st sel ect * f r omsal es
wher e dat e > sysdat e- 1;
updat e empl oyees set sal ar y=
( sel ect avg( sal ar y) f r omempl oyees) ;
del et e f r omdepar t ment s
wher e depar t ment _i d not i n
( sel ect depar t ment _i d f r omempl oyees) ;
sel ect
( sel ect max( sal ar y) f r omempl oyees) *
( sel ect max( commi ssi on_pct ) f r omempl oyee)
f r omdual ;
21
1.1.7 PL/SQL
Menurut Alapati (2009, p1241), PL/SQL merupakan singkatan dari Oracles
propietary extension to SQL. Salah satu keuntungan yang ditawarkan oleh PL/SQL
adalah bahwa Anda dapat menggunakan program unit yang disebut procedure atau
package di dalam database, sehingga meningkatkan performance dari penggunaan
kembali kode yang pernah ditulis.
1.1.7.1 Blok PL/SQL Dasar
Menurut Alapati (2009, p1241), blok PL/SQL adalah sebuah program yang
dapat dieksekusi. Suatu blok PL/SQL, baik yang terenkapsulasi dalam sebuah program
unit seperti procedure atau yang ditulis sebagai suatu anonymous block yang bebas,
tersusun dari struktur-struktur berikut:
a. DECLARE
DECLARE merupakan bagian opsional. Sebelum digunakan, variabel dan
konstanta pada blok PL/SQL harus dideklarasikan terlebih dahulu pada bagian
DECLARE. Variabel PL/SQL dapat berupa tipe built-in, seperti DATE,
NUMBER, VARCHAR2 atau CHAR, atau dapat berupa sebuah tipe komposit
seperti VARRAY.
b. BEGIN
BEGIN merupakan perintah wajib dalam blok PL/SQL. Semua perintah
PL/SQL harus dituliskan setelah perintah BEGIN. Terdapat beberapa
perbedaan dalam cara menangani perintah SELECT pada PL/SQL dengan
perintah SELECT biasa. Ketika menggunakan perintah SELECT dalam
22
PL/SQL loop menyediakan cara untuk melakukan iterasi terhadap suatu code
tertentu sebanyak frekuensi yang ditentukan atau hingga suatu kondisi bernilai
benar atau bernilai salah. J enis-jenis konstruksi looping, yaitu sebagai berikut:
Simple Loop
Pada simple loop, sekumpulan perintah SQL ditulis di antara keyword
LOOP dan END LOOP. Perintah EXIT akan menghentikan iterasi.
Konstruksi simple loop digunakan apabila jumlah iterasi tidak dapat
ditentukan secara pasti.
WHILE loop
Pada WHILE loop, sekumpulan perintah tertentu akan dieksekusi selama
kondisi tertentu bernilai benar. Pada konstruksi ini, kondisi dievaluasi
diluar loop. Kondisi akan dievaluasi setiap kali perintah di antara LOOP
dan END LOOP dieksekusi. Apabila kondisi sudah bernilai salah, maka
iterasi akan berhenti.
FOR loop
Konstruksi FOR loop digunakan apabila jumlah eksekusi dapat ditentukan
secara pasti.
1.1.7.3 Subprogram PL/SQL
Menurut Moore (2009, p1-17), subprogram PL/SQL adalah blok PL/SQL yang
dapat dipanggil dengan menyertakan sekumpulan parameter. Subprogram PL/SQL dapat
berupa procedure ataupun function. Biasanya, procedure digunakan untuk melakukan
suatu tugas, sedangkan function digunakan untuk melakukan perhitungan sekaligus
24
mengembalikan sebuah nilai. Subprogram dapat dibuat pada tingkat schema, dalam
sebuah package, atau dalam suatu blok PL/SQL.
Subprogram yang dibuat pada tingkat schema dinamakan standalone stored
subprogram. Kita dapat membuat subprogram ini dengan perintah CREATE
PROCEDURE atau CREATE FUNCTION. Subprogram ini disimpan dalam database
hingga kita menghapusnya dengan perintah DROP PROCEDURE atau DROP
FUNCTION.
Subprogram yang dibuat dalam sebuah package dinamakan packaged
subprogram. Subprogram ini disimpan dalam database hingga kita menghapus package
dengan perintah DROP PACKAGE.
Subprogram yang dibuat dalam suatu blok PL/SQL dinamakan nested
subprogram. Kita dapat mendeklarasi dan mendefinisikannya pada saat yang sama, atau
kita dapat mendeklarasikannya terlebih dahulu (forward declaration) dan kemudian
mendefinisikannya kemudian dalam blok yang sama. Sebuah nested subprogram
disimpan dalam database hanya jika subprogram tersebut berada di dalam suatu
standalone atau packagedsubprogram.
Sebuah subprogram selalu memiliki nama dan bisa memiliki daftar parameter.
Seperti setiap blok PL/SQL, subprogram PL/SQL memiliki suatu bagian deklaratif yang
opsional, bagian executable yang wajib, dan suatu bagian exception-handling yang
opsional.
25
Sistem yang berhasil dilakukan tuning akan menghasilkan response time yang
lebih cepat dan throughput yang lebih baik. Sebagai hasilnya, user maupun
organisasi menjadi lebih produktif.
Response time yang lebih cepat dapat meningkatkan moral dari staf.
Response time yang lebih cepat dapat meningkatkan kepuasan pelanggan.
1.2.2.3 Pendekatan Performance Tuning
Menurut Chan (2008, pp1-1), terdapat tiga pendekatan dalam melakukan
performance tuningpada Oracledatabase, yaitu sebagai berikut:
1. Performance planning
Performance planning merupakan peningkatan performance dari Oracle
database dengan memeriksa desain aplikasi dan menggunakan statistik untuk
memantau performance aplikasi.
2. Instance tuning
Instance tuning merupakan pendekatan performance tuning dengan
memperbaiki pengaturan dari Oracle instance, seperti konfigurasi memori,
konfigurasi I/O, penggunaan statistik performance otomatis, penggunaan
diagnosa performance otomatis, dan penggunaan performance view.
3. SQL tuning
SQL tuningdilakukan dengan mencari cara yang lebih efisien untuk memproses
workload yang sama. Dalam SQL tuning, dimungkinkan untuk mengubah
execution planpada perintah yang ada tanpa mengubah fungsionalitas yang ada
untuk mengurangi pemakaian resource.
28
tabel dengan jumlah baris yang banyak, dengan predikat pada klausa where.
Tentukan mengapa index tidak digunakan pada predikat yang selektif tersebut.
Apabila kondisi-kondisi seperti itu belum optimal, maka pertimbangkan untuk
melakukan restrukturisasi perintah SQL atau mengatur ulang index yang ada.
2. Melakukan restrukturisasi perintah SQL
Seringkali, menulis kembali perintah SQL yang tidak efisien jauh lebih mudah
dibandingkan memodifikasinya. Apabila Anda memahami tujuan dari suatu
perintah SQL, maka Anda bisa dengan cepat dan mudah menulis sebuah perintah
baru yang memenuhi persyaratan yang ditentukan.
3. Melakukan restrukturisasi index
Beberapa hal yang dapat dilakukan, antara lain sebagai berikut:
Menghapus index yang tidak selektif untuk mempercepat DML
Mempertimbangkan untuk menata ulang kolom-kolom dalam concatenated
index yang ada
Menambahkan kolom kepada index untuk meningkatkan selektivitas
4. Memodifikasi atau menonaktifkan trigger
Penggunaan trigger dapat menghabiskan sumber daya sistem. Apabila
penggunaan trigger terlalu banyak, performance bisa menjadi lebih buruk
sehingga Anda perlu melakukan modifikasi atau menonaktifkan beberapa trigger
yang ada.
5. Melakukan restrukturisasi data
Setelah melakukan restrukturisasi index dan perintah SQL, Anda dapat
mempertimbangkan untuk merestrukturisasi data.
30
Primary index adalah unique index pada suatu tabel yang harus selalu
menyimpan suatu nilai, sehingga tidak boleh bernilai NULL. Secondary
index adalah index lain pada tabel yang sama yang tidak harus bersifat unik.
Composite index
Composite index, atau dikenal juga sebagai concatenated index, adalah index
yang terdiri dari dua kolom atau lebih dari tabel yang sama. Composite index
sangat berguna dalam meningkatkan pemilihan predikat dari klausa WHERE.
Biasanya, jika penggunaan index individual menghasilkan pemilihan yang
kurang baik, maka penggunaan composite index akan meningkatkan
selektivitas.
1.2.4.1.3 Panduan dalam Membuat Index
Menurut Alapati (2009, p297), terdapat beberapa hal yang perlu diperhatikan
dalam membuat index yang efisien pada tabel-tabel Oracle, antara lain sebagai berikut:
Gunakan index hanya jika Anda perlu mengakses tidak lebih dari 4 atau 5
persen data dari sebuah tabel. Perlu diingat bahwa penggunaan index untuk
mengakses data membutuhkan dua kali pembacaan, yaitu pembacaan index
diikuti oleh pembacaan tabel.
Hindari penggunaan index pada tabel-tabel yang relatif kecil. Full table scan
sudah cukup bagi tabel-tabel kecil. Tidak perlu menyimpan data tabel dan
index untuk tabel-tabel kecil.
Buat primary key pada semua tabel. Apabila Anda menetapkan suatu kolom
sebagai primary key, Oracle akan secara otomatis membuatkan index pada
kolom tersebut.
32
Buat index pada kolom-kolom yang terlibat dalam operasi multitable join.
Buat index pada kolom-kolom yang sering digunakan dalam klausa WHERE.
Kolom-kolom yang terdiri dari string yang panjang biasanya bukan kandidat
yang baik untuk dibuatkan index.
Buat index pada tabel-tabel dengan selektivitas yang tinggi. Artinya, buat
index hanya pada tabel-tabel yang tidak memiliki banyak data dengan nilai
yang sama.
Usahakan agar jumlah index sesedikit mungkin.
Composite index dapat digunakan ketika nilai dari satu kolom tunggal tidak
cukup unik.
1.2.4.1.4 Beberapa Hal yang Menyebabkan Index Tidak Digunakan
Menurut Niemec (2007, p40), terdapat beberapa situasi di mana logika dari
klausa WHERE akan membuat Oracle tidak menggunakan index yang ada, antara lain
sebagai berikut:
a. Penggunaan operator NOT EQUAL (<>dan !=)
Index hanya dapat digunakan untuk mencari data yang memang ada dalam
sebuah tabel. Setiap kali operator-operator not equal digunakan dalam klausa
WHERE, maka index pada kolom-kolom bersangkutan tidak dapat
digunakan.
b. Penggunaan IS NULL atau IS NOT NULL
Ketika kita menggunakan IS NULL atau IS NOT NULL dalam klausa where,
index pada kolom yang bersangkutan tidak akan digunakan karena nilai
NULL tidak dikenali. Tidak ada nilai pada database yang sama dengan
33
sebuah nilai NULL, bahkan NULL sendiri tidak dapat dibandingkan dengan
nilai NULL lain. Untuk mencegah nilai-nilai NULL masuk ke sebuah kolom,
kita dapat menggunakan NOT NULL ketika membuat atau melakukan alter
pada tabel.
c. Penggunaan function
Selain function-based index, penggunaan fungsi-fungsi pada kolom-kolom
yang memiliki index pada klausa WHERE dalam sebuah perintah SQL akan
menyebabkan optimizer mengabaikan index yang ada. Beberapa fungsi yang
umum digunakan yaitu TRIM, TRUNC, UPPER, LOWER, SUBSTR,
TO_DATE, TO_CHAR, and INSTR. Semua fungsi ini akan menyebabkan
nilai dari kolom bersangkutan berubah. Oleh karena itu, index dan kolom-
kolom yang ditunjuk tidak akan digunakan.
1.2.4.2 Partitioning
1.2.4.2.1 Pengertian Partitioning
Menurut Oracle Corporation (2011, pp1-1),partitioning adalah pemecahan
tabel dan index yang berukuran besar ke dalam kelompok-kelompok yang lebih kecil,
yang sifatnya transparan terhadap aplikasi. Sedangkan menurut Bryla-Loney (2008,
p266),partitioning adalah pembagian data dari suatu tabel yang berukuran besar ke
dalam beberapa subtabel.
Menurut Alapati (2009, p1076), tabel yang dipartisi biasanya menghasilkan
peningkatan yang besar bagi performance, dan tabel-tabel yang dipartisi lebih mudah
dikelola. Dengan mempartisi suatu tabel menjadi beberapa subpartisi, kita pada dasarnya
telah membatasi jumlah data yang perlu diperiksa untuk memenuhi query yang kita
34
bangun. Apabila terdapat tabel-tabel berukuran besar, dengan jumlah record di atas 10
juta, pertimbangkan untuk mempartisi tabel-tabel tersebut.
1.2.4.2.2 Partitioning Key
Menurut Oracle Corporation (2011,pp2-2),partitioning key adalah satu atau
lebih kolom yang menentukan pada partisi mana setiap baris dalam tabel
disimpan.Oracle secara otomatis mengarahkan operasi insert, update, dan delete ke
partisi yang tepat dengan partitioning key.
1.2.4.2.3 Pengaruh Partitioning Terhadap Performance
Menurut Oracle Corporation (2011, pp2-5),partitioning memberikan
keuntungan bagi performance dengan karakteristik sebagai berikut:
Partition Pruning
Partition pruning merupakan sarana yang paling sederhana sekaligus paling
penting dalam meningkatkan performance dengan menggunakan
partitioning. Partition pruning seringkali dapat meningkatkan kinerja query
hingga beberapa kali lipat. Sebagai contoh, misalkan terdapat suatu aplikasi
dengan sebuah tabel Orders yang berisi data-data pemesanan historikal, dan
tabel ini sudah dipartisi berdasarkan minggu. Dengan demikian suatu query
yang mengakses data pemesanan dalam satu minggu cukup mengakses satu
partisi dari tabel Orders.
Partition Wise-Joins
Partitioning juga dapat meningkatkan performance dari multi-table joins
dengan menggunakan teknik yang dikenal dengan partition-wise joins.
Partition wise-joins dapat diaplikasikan ketika dua tabel dilakukan operasi
35
join dan kedua tabel dipartisi pada join key. Partition-wise joins memecah
suatu join yang besar menjadi beberapa join yang lebih kecil antara masing-
masing partisi sehingga waktu join secara keseluruhan menjadi lebih sedikit.
Namun, menurut Alapati (2009, p281), meskipun tabel-tabel yang dipartisi
pada umumnya akan memperbaiki performance dari tabel-tabel berukuran besar,
partitioning bukan jalan keluar bagi masalah-masalah perancangan dan penulisan
aplikasi yang buruk. Selain itu, partitioning juga dapat menghasilkan suatu cost
tambahan dalam hal usaha pengelolaan partisi dan index-nya.
1.2.4.2.4 Strategi Partitioning
Menurut Oracle Corporation (2011, pp2-6 pp2-9), Oracle partitioning
menawarkan tiga metode dasar dalam distribusi data sebagai strategi partitioning dasar
yang mengontrol bagaimana data ditempatkan ke dalam partisi-partisi individual, yaitu
range, hash, dan list.
Dengan metode-metode distribusi data tersebut, strategi partitioning dapat
dibagi ke dalam dua kategori, yaitu sebagai berikut:
1. Single-Level Partitioning
Pada single-level partitioning, suatu tabel didefinisikan dengan menetapkan
salah satu dari metode distribusi data berikut, dengan satu atau lebih kolom
sebagai partitioningkey:
a. Range partitioning
Range partitioning memetakan data ke partisi berdasarkan rentang dari
nilai-nilai partitioning key yang Anda tentukan untuk setiap partisi.
36
query adalah melakukan pembacaan semua data dari sebuah tabel, maka
penggunaan index menjadi kurang efisien.
3. Cost
Cost merupakan sebuah ukuranrelatif yang akan dihasilkanoleh Oracle untuk
merepresentasikan jumlah work yang diperlukan untuk menjalankan sebuah
langkah spesifik. J umlah cost dari semua langkah yang ada merepresentasikan
cost yang dibutuhkan untuk mengeksekusi sebuah statement secara keseluruhan.
Pada umumnya, sebuah plan dengan cost yang lebih rendah merepresentasikan
suatu kinerja yang lebih baik daripada sebuah plan dengan cost yang lebih tinggi.
Meskipun demikian, sering juga ditemukan bahwa plan yang memiliki cost yang
tinggi memiliki kinerja yanglebih baik daripada plan dengan cost yang rendah.
Menurut Alapati (2009, p1093), hal-hal yang perlu diingat dalam membaca
explain plan, yaitu sebagai berikut:
Setiap langkah dalam plan mengembalikan hasil dalam bentuk sekumpulan baris
kepada langkah parent.
Bacalah plan dari dalam ke luar, dimulai dari baris yang memiliki indentasi
paling dalam.
Apabila dua operasi berada pada level yang sama dalam hal indentasi, baca yang
paling atas terlebih dahulu.
1.2.6 SQL Trace dan TKPROF
Menurut Alapati (2009, p1099), SQL trace adalah utilitas Oracle yang
membantu kita dalam menelusuri perintah-perintah SQL. Sedangkan, TKPROF adalah
44
utilitas Oracle yang membantu kita untuk mengubah trace file yang dihasilkan oleh SQL
trace ke dalam bentuk yang dapat dibaca. Apabila EXPLAIN PLAN menampilkan
execution plan yang diharapkan, maka SQL trace memberikan hasil eksekusi aktual dari
sebuah query SQL. Sementara itu, menurut Chan (2008, pp20-8), TKPROFadalah suatu
tool yang memungkinkan kita untuk secara akurat mengakses efisiensi dari SQL
statements yang dijalankan oleh sebuah aplikasi.
1.2.6.1 Mengaktifkan SQL Trace
Menurut Alapati (2009, p1101), untuk menggunakan SQL Trace dan
TKPROF, hal pertama yang harus dilakukan adalah mengaktifkan fasilitas trace. Kita
dapat melakukannya pada level instance dengan menggunakan statement ALTER
SESSION atau DBMS_SESSION package. Berikut adalah statement yang digunakan
untuk mengaktifkan SQL trace:
SQL>ALTER SESSI ON SET sql _t r ace = t r ue;
1.2.6.2 Menginterpretasikan Trace File dengan TKPROF
Menurut Alapati (2009, p1102), setelah kita telah mengaktifkan tracing untuk
sebuah session, semua perintah SQL yang dijalankan pada session tersebut akan di-trace
dan output berupa trace file akan disimpan dalam direktori (UDUMP). Nama file
memiliki format db_name_ora_nnnnn.trc, dimana nnnnn biasanya merupakan 5 digit
angka.
Utilitas TKPROF menggunakan trace files sebagai input besertadengan
parameter yang kita tentukan. Berikut ini adalah parameter TKPROF yang dapat kita
gunakan untuk mengatur format yang sesuai dengan keinginan kita:
1. FILENAME, yaitu trace file yang dibuat melalui SQL Trace.
45
untuk menerima statement dari pemakai dan mengirimnya ke Oracle server dan
menampilkan hasilnya. Sedangkan menurut Alapati (2009, p97), SQL*Plus adalah
utilitas yang umum digunakan untuk melakukan koneksi dan bekerja dengan Oracle
database. Setelah terdapat perangkat lunak SQL*Plus pada mesin client atau server, kita
dapat melakukan proses log in dan melakukan start SQL*Plus session.
1.2.9 HttpWatch Professional Edition
HttpWatch adalah perangkat lunak yang terintegrasi dengan Internet Explorer
dan Firefox yang digunakan untuk menunjukkan HTTP traffic saat kita mengakses
sebuah halaman web.
Beberapa manfaat dari penggunaan HttpWatch, antara lain sebagai berikut:
1. Mengatahui bagaimana suatu situs bekerja dan bagaimana situs tersebut
mengimplementasikan beberapa fitur.
2. Memeriksa informasi yang disediakan browser ketika mengunjungi situs.
3. Memeriksa kebutuhan performance tuning terhadap suatu situs web dengan
mengukur waktu page load.
4. Mempelajari bagaimana cara HTTP bekerja.
Pada HttpWatch, hasil pengukuran waktu dari semua request yang menyusun
suatu halaman web ditampilkan dalam bentuk horizontal bar berwarna yang ditampilkan
pada kolom Time Chart. Arti dari warna-warna horizontal bar tersebut, yaitu sebagai
berikut:
Tabel 1.6Tabel Deskripsi Warna pada Kolom Time Chart aplikasi HTTPWatch
Warna Timing Name Deskripsi
48
Blocked
Waktu Blockedmencakup waktu pre-processing
(seperti cache lookup) dan waktu yang digunakan
untuk menunggu ketersediaan koneksi jaringan. IE 7
dan Firefox 2 hanya akan membuat maksimal 2
koneksi jaringan bersamaan untuk setiap nama
host(seperti www.microsoft.com) dan akan
menampung request yang datang hingga sebuah
koneksi jaringan tersedia. Sering sekali waktu Blocked
menjadi faktor yang paling penting dalam mengunduh
gambar-gambar dalam sebuah halaman web.
DNS Lookup
DNS Lookup merupakan waktu yang diperlukan untuk
mengubah nama host (seperti www.google.com)
menjadi alamat IP numerik (seperti 216.239.59.99).
Connect
Connect merupakan waktu yang diperlukan untuk
membuat koneksi TCP ke web server (atau proxy). J ika
sebuah koneksi HTTPS yang aman digunakan, maka
waktu Connect akan memasukkan proses SSL
handshake.
Send
Send merupakan waktu yang digunakan untuk
mengirim pesan HTTP request ke server dan
tergantung pada jumlah data yang dikirim ke server.
Sebagai contohnya, waktu Send yang lama biasanya
49