Data didalam database makin lama akan
semakin besar ukuranya dan jika tidak didukung dengan kecepatan akses yang memadai
maka akan semakin menurun jalan kerjanya. Untuk itulah kita bisa menggunakan
optimasi query untuk mengatasinya. Obtimasi tersebut dapat dilakukan dengan
cara :
- OPTIMASI PERINTAH SQL
Inti dari
optimasi query adalah meminimalkan “jalur” pencarian untuk menemukan data yang
disimpan dalam lokasi fisik, jadi dalam mendesain database sebaiknya
memperhatikan lokasi sisik penyimpanan data tersebut.
Untuk meningkatkan
kecepatan database dapat menggunakan index, dimana saat query dijalankan, index
mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data
secara fisik pada disk.
Missal digunakan
untuk mencari data pada beberapa table dengan mengurutkan data sesuai ketentuan,
akan lebih cepat jika data terletak pada block table yang berdekatan :
CREATE
INDEX idx_kota_prop_kodepos
ON
karyawan(kota, propinsi, kode_pos)
TABLESPACE
INDX;
- PERENCANAAN EKSEKUSI
Sebelum
melakukan eksekusi sebaiknya kita cari tahu dulu jalur aksesnya, hal ini dapat
dilakukan dengan menggunakan perintah explain
plain untuk database menggunakan Oracle.
Namun sebelum
membuat perintah explain plan, terlebih dulu buat table plan TABLE_PLAN dengan
script utlxplan.sql .
Setelah itu
table PLAN_TABLE dapat digunakan seperti contoh :
SQL> explain plan
Set statement_id=’test1’
Into plan_table for
Select * from karyawan where gaji=2000000;
Dalam PLAN_TABLE rencana eksekusi
diatas dikenal dengan nama test1 yang terdefinisi
pada kolom statement_id.
Untuk melihat rencana eksekusi dari test1, digunakan perintah
SELECT berikut :
SELECT
LPAD(’ ’,2*Level)||Operation||’ ’||Options||’ ’||Object_Name Q_Plan
FROM
plan_table
WHERE
statement_id=’test1’
CONNECT BY
PRIOR id=parent_id AND statement_id=’test1’
START WITH
id=0 AND statement_id=’test1’;
Contoh hasil dari eksekusi query tersebut :
Q_PLAN
--------------------------------------------------------------------
SELECT
STATEMENT
TABLE ACCESS FULL KARYAWAN
Output tersebut dibaca mulai dari yang
indent-nya paling dalam yaitu : TABLE ACCESS FULL KARYAWAN. Dikarenakan klausa
WHERE melibatkan kolom gaji namun kolom gaji tidak ada index-nya, maka Oracle
melakukan full table scan. Setelah seluruh tabel karyawan selesai dibaca,
selanjutnya adalah SELECT STATEMENT untuk menampilkan hasil query.
- FAKTOR LAIN YANG MEMPENGARUHI KECEPATAN AKSES DATA
Ø
Optimasi Aplikasi
Optimasi aplikasi tergantung pada efisiensi penggunaan objek yang
mendukung kecepatan akses seperti index atau cluster dan normalisasi data pada
desain database.
Ø
Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari table berbeda
dalam suatu struktur fisik yang berdekatan. Penggunaan cluster secara tepat
dilakukan setelah menganalisa table mana saja yang sering di-query secara
bersamaan menggunakan perintah SQL join dan penggunaan index yang tepat
tergantung pada jenis nilai yang terdpat dalam kolom yang akan diindex.
Pada
database engine semisal Oracle keceptan akses datanya dipengaruhi oleh beberapa
komponen arsitektur pembentuknya seperti shared pool, buffer cache, dan redo
log buffer.
Komentar
Posting Komentar