Dokumen tersebut membahas tentang tuning performance database. Secara umum dibahas mengenai pengertian tuning performance, langkah-langkah memulai tuning, prinsip dan kriteria tuning, teknik-teknik tuning seperti partitioning, indexing, denormalisasi, dan masalah yang menyebabkan performance menurun seperti scan tabel yang tidak efisien.
Penulisan artikel ilmiah ini dimaksudkan untuk mengetahui implementasi aplikasi basis data relasional di Siloam Hospitals Kebon Jeruk. Penulisan artikel ilmiah ini dilakukan dengan mengamati proses kegiatan aktivitas di Siloam Hospitals Kebon Jeruk dengan tujuan untuk mengetahui bagaimana proses, tantangan dan permasalahan yang timbul karena implementasi aplikasi basis data relasional perusahaan tersebut. Melalui penulisan artikel ilmiah ini, diharapkan dapat ditemukan alasan implementasi aplikasi basis data relasional dapat memberikan nilai tambah bagi Siloam Hospitals Kebon Jeruk.
Kata Kunci: Basis Data Relasional, Aplikasi, Sistem Infomasi Akuntansi.
Sebagai salah satu pertanggungjawab pembangunan manusia di Jawa Timur, dalam bentuk layanan pendidikan yang bermutu dan berkeadilan, Dinas Pendidikan Provinsi Jawa Timur terus berupaya untuk meningkatkan kualitas pendidikan masyarakat. Untuk mempercepat pencapaian sasaran pembangunan pendidikan, Dinas Pendidikan Provinsi Jawa Timur telah melakukan banyak terobosan yang dilaksanakan secara menyeluruh dan berkesinambungan. Salah satunya adalah Penerimaan Peserta Didik Baru (PPDB) jenjang Sekolah Menengah Atas, Sekolah Menengah Kejuruan, dan Sekolah Luar Biasa Provinsi Jawa Timur tahun ajaran 2024/2025 yang dilaksanakan secara objektif, transparan, akuntabel, dan tanpa diskriminasi.
Pelaksanaan PPDB Jawa Timur tahun 2024 berpedoman pada Peraturan Menteri Pendidikan dan Kebudayaan RI Nomor 1 Tahun 2021 tentang Penerimaan Peserta Didik Baru, Keputusan Sekretaris Jenderal Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi nomor 47/M/2023 tentang Pedoman Pelaksanaan Peraturan Menteri Pendidikan dan Kebudayaan Nomor 1 Tahun 2021 tentang Penerimaan Peserta Didik Baru pada Taman Kanak-Kanak, Sekolah Dasar, Sekolah Menengah Pertama, Sekolah Menengah Atas, dan Sekolah Menengah Kejuruan, dan Peraturan Gubernur Jawa Timur Nomor 15 Tahun 2022 tentang Pedoman Pelaksanaan Penerimaan Peserta Didik Baru pada Sekolah Menengah Atas, Sekolah Menengah Kejuruan dan Sekolah Luar Biasa. Secara umum PPDB dilaksanakan secara online dan beberapa satuan pendidikan secara offline. Hal ini bertujuan untuk mempermudah peserta didik, orang tua, masyarakat untuk mendaftar dan memantau hasil PPDB.
1. TUGAS SISTEM BASIS DATA
Database Performance Tuning
|| Oleh ||
1. Elma Fiana Nim : 1513000045
2. Friska Nuraini Nim : 1513000048
3. Rut Kristina M. Nim : 1513000064
4. Siti Aminah Nim : 1513000068
5. Melyana Tumorank Nim : 1513000425
SISTEM INFORMASI A-SIANG SEM IV
FAKULTAS TEKNIK DAN ILMU KOMPUTER
T.A 2016/2017
2. 2
Database Performance Tuning
A. Pengenalan Tentang Performance Tuning
Performance tuning adalah suatu usaha untuk memperbaiki kinerja perangkat keras dan
perangkat lunak komputer. Perangkat keras komputer adalah peralatan di sistem
komputer yang secara fisik terlihat dan dapat dijamah, peralatan tersebut meliputi
peralatan input (masukan), peralatan proses dan peralatan output (keluaran) [1].
Perangkat lunak komputer adalah program yang berisi perintah– perintah untuk
melakukan pengolahan data [1].
Tuning bisa berarti mengganti atau menambah, contohnya tuning perangkat keras bisa
diartikan mengganti dengan perangkat keras yang lebih baik atau menambah
perangkat keras yang diperlukan untuk menambah suatu kinerja yang lebih baik. Dalam
sebuah manajemen basis data, tuning sebaiknya tidak dilakukan hanya pada basis
datanya saja, tetapi juga pada sistem operasi yang dipakai, proses
/ operasi bisnis, aplikasi dan perangkat keras.
Kinerja sistem (Performance) dalam banyak hal berarti suatu kecepatan eksekusi, atau
sesuatu yang sudah benar bila dilihat secara menyeluruh. Jadi, performance tuning
merupakan usaha untuk memperbaiki atau menyetel suatu sistem menjadi lebih baik.
Sistem adalah jaringan dari pada elemen–elemen yang saling berhuibungan,
membentuk satu kesatuan untuk melaksanakan suatu tujuan pokok dari sistem tersebut
[1].
1. Memulai Tuning
Tuning bisa dilakukan dengan langkah–langkah yang bervariasi, karena dalam
pelaksanaannya kadang kala berulang–ulang dilakukan suatu tuning tertentu tidak harus
berurutan. Namun, memulai tuning bisa dilakukan dengan tahapan sebagai berikut:
1) Tune operasi bisnis
Tune operasi bisnis bisa saja ditujukan untuk meningkatkan penghasilan atau laba suatu
perusahaan, secara langsung maupun tidak langsung. Efek dari tune operasi bisnis
adalah dari segi pelayanan yang lebih baik.
3. 3
Salah satu contoh dari tune operasi bisnis adalah operasional transaksi di teller pada
sebuah bank, dimana bank menyediakan fasilitas ATM (Automated Teller Machine)
yang merupakan suatu perubahan dalam operasi bisnis bank.
2) Tune Perangkat Keras
Tune perangkat keras merupakan langkah logis yang menyertai tune operasi bisnis,
karena bila suatu tune opersi bisnis sudah ditentukan maka
diperlukan suatu perangkat keras yang mampu untuk memenuhi kebutuhan tersebut.
Walaupun perangkat keras sudah ada, tetap masih diperlukan tune perangkat keras.
3) Tune Sistem Operasi
Tune sistem operasi merupakan langkah yang logis sesudah melakukan tune perangkat
keras, dimana sistem operasi adalah sebuah perantara antara hardware dengan software
lainnya. Pada tune sistem operasi itu tergantung sistem operasi yang dipakai, setiap
sistem operasi yang dipakai memiliki langkah–langkah tuning yang berbeda antara satu
dengan yang lainnya. Misalnya melakukan tune pada Windows berbeda bila
melakukan tune pada sistem operasi yang menggunakan
Unix.
4) Tune aplikasi
Tune aplikasi berkaitan dengan tune operasi bisnis, karena sebuah aplikasi merupakan
implementasi operasi bisnis yang melibatkan mesin. Suatu hal yang umum dari aplikasi
komputer adalah pemakaian code cache, data cache, dan stack cache.
Code cache adalah memori fisik untuk menyimpan kode yang dijalankan [3]. Data cache
adalah memori fisik untuk menyimpan data (input atau output) yang sedang diolah [3].
Dan stack cache adalah tempat menyimpan isi stack [3]. Stack adalah suatu sesi yang di
dalamnya berisi variabel, atau array (variabel berindek yang digunakan untuk
menyimpan beberapa nilai dalam satu nama array) [1]. Istilah–istilah untuk ketiga
cache tersebut mungkin berbeda dari suatu development tool ke tool lain dan dari suatu
aplikasi ke aplikasi lain, namun esensinya sama.
5) Tune SMBD (Sistem Manajemen Basis Data)
Tune SMBD ini merupakan pembahasan inti dari materi penelitian ini, yang lebih lanjut
dijelaskan pada bagian–bagian selanjutnya.
4. 4
2. Prinsip dan Kriteria Tuning
Prinsip untuk tuning adalah mengukur keadaan sebelum dan sesudah tuning dilakukan
dan untuk melaksanakan tuning tersebut maka diperlukannya suatu alat diagnostik
untuk mendiagnosa keadaan.
Kriteria tuning yang dipakai harus dijadikan sebagai acuan sebuah proses – proses
selanjutnya, dimana bisa mewakili kriteria–kriteria yang dipakai, misalnya kriteria
tuning untuk tune data cache menggunakan parameter hit-ratio minimal
90%. Hit-ratio diperoleh dengan SQL statement.
3. Prasyarat Tuning
Prasyarat tuning yaitu mementukan parameter instance yang akan ditune . Instance
merupakan kumpulan dari oracle process (proses–proses di oracle) dan alokasi memori
yang ada di oracle, yaitu SGA (System Global Area) yang digunakan untuk mengakses
informasi–informasi yang tersimpan pada basis data [3]. Hal ini dapat membantu
instance memberikan informasi akurat dari suatu transaksi atau query. Prasyarat tuning
juga harus mencatat konfigurasi perangkat keras dan perangkat lunak yang akan
dilakukan tuning. Hal ini membantu pada saat akan melakukan tuning di perangkat keras
dan perangkat lunak yang berbeda. Dan persiapan keamanan secara baik juga diperlukan
dalam prasyarat tuning.
4. Type dari Performance Tuning
a. System Tuning
Sytem tuning terjadi pada tingkat tertinggi dan memiliki dampak terbesar pada kesehatan
secara keseluruhan aplikasi database, karena setiap aplikasi tergantung pada sistem. kita
akan mendefinisikan sistem terdiri dari DBMS itu sendiri dan semua komponen terkait
yang dipercayakan. DBMS dapat dan harus bisa disetel untuk menjamin kinerja yang
optimal. Cara di mana perangkat lunak DBMS terinstal, memori, disk, CPU, sumber
daya lainnya, dan opsi konfigurasi dapat mempengaruhi kinerja aplikasi database. dan
Intinya DBMS harus bisa di seting agar bisa menjamin performa sistem tetap optimal.
b. Database Tuning
Performansi dapat dipengaruhi oleh desain fisik database, termasuk normalisasi,
penyimpanan disk, jumlah tabel, desain indeks, dan penggunaan DDL dan parameter
yang terkait. Lokasi fisik file database pada sistem disk akan berdampak pada kinerja
aplikasi mengakses data. Semakin banyak data yang tersimpan pada perangkat disk yang
5. 5
sama, kemungkinan kinerja degradasi meningkat. dan Intinya lokasi fisik dari file
database pada sistem disk dapat mempengaruhi performa aplikasi dalam mengakses data
ke DataBase .
c. Application Tuning
Aplikasi itu sendiri harus dirancang secara tepat dan dipantau untuk efisiensi.
Kebanyakan ahli setuju bahwa sebanyak 75% dari masalah kinerja disebabkan oleh
syntax aplikasi yang tidak benar. SQL adalah penyebab utama; coding pernyataan SQL
yang efisien dapat menjadi rumit. Pengembang perlu diajarkan bagaimana
merumuskan, memantau, dan pernyataan SQL yang benar.dan Intinya tidak semua
masalah aplikasi disebabkan oleh penulisan SQL yang tidak sesuai.
5. Teknik Tuning dan Optimizing
Ada Beberapa Teknik Tuniang dan Optimizing, antaralain sebagai berikut :
1. Partitioning
Adalah dengan Mempartisi database dapat mempercepat pencapaian proses paralel.
Proses paralel merupakan proses untuk menggunakan perintah jamak untuk mengakses
database, Proses paralel digunakan untuk mengurangi elapsed time query database
2. Raw Partition VS File System
Raw partition lebih sering digunakan daripada menyimpan data di cache file system,
Karena cache DBMS akan langsung menuliskan data tanpa intervensi dari file system.
Tidak dianjurkan untuk menambahkan cache DBMS dengan cache yang lain
3. Indexing
Index digunakan untuk Menemukan baris untuk nilai tertentu pada sebuah atau banyak
kolom, Mempermudah operasi JOIN, Menghubungkan data antara tabel, Agregasi
data, Mengurutkan data sesuai perintah query. Dengan index mempermudah proses
pengolahan data
4. Denormalisasi
Ialah Kebalikan dari normalisasi, Salah satu teknik untuk meningkatkan performa
dengan menambahkan data yang redundant atau dengan mengelompokkan data.
Denormalisasi Dapat diterapkan dengan: Prejoined table, Report table, Mirror table, Split
table, Combined tables, Speed tables, Storing redundant data, Storing repeating groups,
Storing derivable data, dan Clustering. Tabel yang sudah dikelompokkan akan
menyimpan data secara fisik di dalam sebuah disk sesuai dengan kolomnya masing-
masing
6. 6
5. Interleaving Data
Jika data dari satu tabel dengan tabel yang lain sering digabungkan, maka dapat
dipertimbangkan untuk mengumpulkan data tersebut dalam satu cluster. Interleaving
data merupakan pengkhususan dari cluster
6. Free Space
Free Space terkadang disebut dengan Fill Factor yang merupakan ruang kosong yang
disediakan untuk menambah data baru dengan parameter yang biasa digunakan adalah
PCTFREE dan FREEPAGE. Tugas DBA adalah memastikan jumlah ruang kosong yang
tepat untuk setiap tabel.
Keuntungan Free Space
Insert lebih cepat
Ketika sebuah baris baru di-insert-kan, langsung dapat di-cluster-kan
Concurrency lebih mudah
Kekurangan
Disk storage yang dibutuhkan lebih besar
Waktu scan lebih lama
Jumlah baris yang lebih sedikit, akan meminta I/O yang lebih banyak
Mengurangi efisiensi data caching karena sedikitnya baris yang discan
per I/O.
7. Compression
Compression adalah untuk meringkas database yang dapat mengurangi penggunaan
ruang penyimpanan data. Namun Tidak semua table perlu dicompress.
Keuntungan : menghemat ruang penyimpanan dan mengurangi waktu pemrosesan
data
Kekurangan : Biaya tambahan untuk melakukan compress dan decompress data
8. File Placement and Allocation
Yang harus diperhatikan ketika mengalokasikan data :
Jika memungkinkan memisahkan data dengan index
Memisahkan file untuk tabel yang sering diakses bersama
Jika data dari tabel disimpan di dalam halaman yang berbeda,
diutamakan untuk memisahkan disk penyimpan untuk
mempermudah dan mengoptimalkan operasi yang paralel
9. Page size
7. 7
Beberapa DBMS membatasi jumlah page yang digunakan untuk menyimpan data,
Karena itu DBA harus dapat menghitung jumlah halaman yang dibutuhkan berdasarkan
jumlah baris data, jumlah baris per halaman, dan jumlah ruang kosong yang dibutuhkan.
10. Reorganization
Reorganization adalah memaksimalkan availabilitty dan reliability data. Me-reorganisasi
database berarti merestrukturisasi objek database, memaksimalkan availability dan
kecepatan, serta mengefisiensi fungsi database.
6. Masalah yang menyebabkan Performa Databse menurun
Penyebab Performa Database menurun diantaranya :
Scan Tabel
Index yang tidak sesuai
Pilihan Index yang tidak sesuai
Tidak menggunakan Index yang tersedia
Statistik database yang usang
Tabel tergabung dalam urutan yang tidak optimal
Penyebab lain Performa Database menurun diantaranya :
Memory Allocation (Buffer/Cache for data, SQL, Authorization)
Logging Options (Log Cache, Log Size, Oracle Rollback Segments)
I/O Efficiency (Separation of tables and indexes on disk, database
size, fragmented and extended files)
Overall application and database workload on the server
Database schema definitions
B. Database Tuning
Tuning database adalah proses fine-tuning database kinerja server. Sebagai pendatang
baru SQL, jarang sekali mungkin dari pemula akan terkena tuning database kecuali
seorang DBA DBA baru atau pindah ke lingkungan database relasional. Pada saat akan
mengelola database atau menggunakan SQL pada aplikasi atau program, Seorang
pemula akan mendapatkan keuntungan dengan mengetahui sesuatu tentang proses
tuning-database. Kunci keberhasilan setiap database bagi semua pihak untuk bekerja
sama. Beberapa tips umum untuk tuning database ikuti.
Minimalkan ukuran keseluruhan yang dibutuhkan untuk database. Ini bagus
untuk memungkinkan ruang untuk pertumbuhan ketika mendesain
8. 8
database, tapi jangan pergi ke laut. Jangan mengikat sumber daya yang Anda mungkin
perlu untuk mengakomodasi pertumbuhan database.
Percobaan dengan variabel waktu-slice proses pengguna. Variabel ini mengatur
jumlah waktu database server scheduler mengalokasikan untuk pengguna setiap proses.
Optimalkan jaringan paket ukuran yang digunakan oleh aplikasi. Semakin besar
jumlah data yang dikirim melalui jaringan, semakin besar ukurannya jaringan paket
seharusnya. Tanyakan database dan dokumentasi jaringan untuk rincian lebih lanjut.
Store transaksi log pada hard disk yang terpisah. Untuk setiap transaksi yang terjadi,
server harus menulis perubahan transaksi log. Jika Anda menyimpan log file-file pada
disk yang sama seperti Anda menyimpan data, Anda dapat menciptakan hambatan
kinerja.
Stripe sangat besar tabel di beberapa disk. Jika pengguna mengakses bersamaan
sebuah meja besar yang banyak tersebar di disk, ada kurang banyak kesempatan harus
menunggu sumber daya sistem.
Toko semacam database daerah, sistem kawasan katalog, dan daerah kembalikan
pada hard disk yang terpisah. Ini adalah semua wilayah di database yang paling sering
akses pengguna. Dengan menyebarkan daerah- daerah tersebut selama beberapa disk
drive, Anda memaksimalkan penggunaan sumber daya sistem
Tambah CPU. Fungsi ini administrator sistem dapat secara drastis meningkatkan
kinerja database. Menambahkan CPU dapat mempercepat pemrosesan data karena alasan
yang jelas. Jika Anda memiliki beberapa CPU pada mesin, maka Anda mungkin dapat
menerapkan strategi pemrosesan paralel,. Database Anda Lihat dokumentasi lebih untuk
informasi paralel pada pemrosesan jika tersedia dengan implementasi Anda.
Tambah memori. Secara umum, lebih banyak lebih baik.
Toko tabel dan indeks pada hard disk yang terpisah. Anda harus menyimpan indeks
dan tabel terkait pada disk drive yang pernah terpisah bila memungkinkan. Susunan ini
memungkinkan meja untuk dibaca pada saat yang sama indeks ini direferensikan pada
disk lain. Kemampuan untuk menyimpan objek pada beberapa disk tergantung pada
berapa banyak disk yang terhubung ke controller.
9. 9
Gambar di atas memperlihatkan contoh sederhana tentang bagaimana memisahkan
wilayah utama dari database .
C. Study Kasus Performance Tuning Pada SQL
Ada banyak cara yang dapat dan harus dilakukan agar proses server database dapat
berlangsung cepat. Dalam pengembangan aplikasi database, hal ini biasa disebut dengan
istilah performance tuning, karena berkenaan dengan kinerja/performance database. [7]
Sebagian besar dari SQL yang digunakan di dalam pengembangan aplikasi basis data
adalah perintah SELECT yang ditujukan untuk menarik/mengambil sejumlah baris data
dari suatu tabel. Misalkan, SELECT * FROM Tabel1 berarti "tarik semua data - ditandai
dengan * - dari tabel Tabel1". Contoh lain: SELECT DATA1, DATA2 FROM Tabel2
berarti "tarik DATA1 dan DATA2 dari tabel Tabel2". Mengingat SELECT merupakan
perintah SQL yang paling banyak digunakan, maka artikel ini memfokuskan pada
optimalisasi perintah SELECT untuk mendapatkan kinerja yang paling optimal yang
antara lain ditandai dengan kecepatan akses/proses.
SELECT memerlukan waktu pemrosesan yang panjang dan sangat tergantung pada
klausul SELECT yang digunakan. Untuk mempercepatnya, setiap programmer harus
memperhatikan teknik-teknik optimalisasi SQL.
1. Pemilihan Metode Akses
Dalam mengambil/menarik data dari suatu table, SQL melakukan salah satu dari
alternatif berikut:
a. Pengaksesan secara bertahap (sequential access). Teknik ini juga sering
direferensikan sebagai full table scanning, karena SQL akan mengambil data yang
diinginkan dengan lebih dulu merunut/melacak data satu demi satu baris, dimulai dari
record/baris pertama. Apabila proses ini melibatkan tabel dengan jumlah record yang
banyak, maka metode ini tidak akan efisien, karena membutuhkan waktu yang lama.
10. 10
Contoh Kasus : Jika Sebuah Database hotel memiliki table tamu,
pengaksesan secara bertahap untuk mengakses tabel tamu dilakukan dengan
seperti gambar dibawah ini :
SELECT * FROM tamu
b. Pengaksesan secara langsung (direct access). Dalam teknik ini, SQL hanya
membaca baris/data yang diminta. Metode ini biasa juga disebut access by index,
karena untuk dapat melakukan ini diperlukan indeks pada kolom yang digunakan untuk
kriteria pencarian. Dengan pembacaan langsung pada baris yang dibutuhkan, maka
metode ini membutuhkan waktu yang lebih cepat dari sequential access.
Contoh Kasus: Jika Sebuah Database hotel sama seperti di atas memiliki table tamu,
namun dalam pengaksesan secara direct atau langsung ini ialah dengan menunjukan
langsung dimana kolom yang akan di index. untuk mengakses tabel tamu dengan direct
acces dilakukan dengan seperti gambar
dibawah ini :
SELECT * FROM tamu WHERE Nama_Tamu = 'Rooney'
11. 11
2. Pembuatan Index
Pencarian data menggunakan SELECT biasanya dengan menggunakan kriteria pencarian
menggunakan klausa WHERE, atau HAVING. Contoh berikut menunjukkan adanya
spesifikasi pencarian dengan batasan.
Contoh Study Kasus : Jika sebuah database sama dengan yang di atas, database hotel
yang mempunyai tabel tamu. kasus ini ingin mencari kode tamu yang dimana kode
tamunya di atas sama dengan 1000004, maka pencarian dengan batasan ini
dilakukan seperti query berikut :
SELECT * FROM tamu WHERE kode_tamu > 1000004
Kolom yang akan digunakan dalam spesifikasi pencarian data perlu dibuat index agar
dapat menggunakan metode direct access. Dalam contoh di atas, maka proses SELECT
akan lebih cepat memberikan hasil apabila dibuatkan index pada kolom kode_tamu dari
tabel tamu.
12. 12
Contoh lain, misalkan suatu tabel tamu mempunyai kolom (Kode_Tamu, Nama_Tamu,
No_Identitas, Alamat). Apabila dalam proses SELECT nantinya akan lebih banyak
menggunakan kolom Alamat sebagai batasan/kriteria pencarian, maka disarankan untuk
membuat index dari kolom kode_tamu.
Cara pembuatan index dapat menggunakan perintah sebagai berikut:
Index di atas dengan query berikut :
CREATE {UNIQUE} INDEX nama_indeks
ON identifikator_tabel ((nama_kolom {ASC|DESC}), ...); CREATE
INDEX namatabel_namakolom_NDX
ON nama_tabel(nama_kolom);
Index dapat dibuat untuk satu kolom atau gabungan dari beberapa kolom.
Berikut pedoman untuk pemilihan kolom yang perlu dibuatkan index:
Index unik pada kolom kunci utama (primary key)
Index pada kolom kunci asing (foreign key)
Index pada kolom yang digunakan sebagai kriteria pemilihan
Index pada kolom yang digunakan untuk pengurutan (order by)
Index pada kolom yang digunakan untuk pengelompokan (group by)
3. Perbaikan Pernyataan SELECT
3.1. Hindari Penggunaan SELECT *
13. 13
Fokuslah hanya pada kolom yang memang benar-benar dibutuhkan. Misalkan
diasumsikan bahwa tabel TAMU memiliki kolom (Kode_Tamu, Nama_Tamu,
No_Identitas, Alamat, Kota, No_Telp), maka jika diinginkan informasi panggilan dari
A ke B dan durasinya maka dapat dilakukan dengan
perintah sebagai berikut:
Select * From Tamu
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
select Kode_Tamu, Nama_Tamu,No_Identitas, Alamat, Kota, No_Telp From Tamu
Berikut gambar proses hasil eksekusinya :
3.2. Gunakan Kriteria
Hindari pengaksesan seluruh data, tetapi fokuslah pada kriteria data yang diperlukan
sesuai kebutuhan. Contoh apabila dibutuhkan informasi daftar alamat
tamu yang diketahui cuma “Jl. Mang”, maka:
select Nama_Tamu,No_Identitas, Alamat, Kota, No_Telp From Tamu
14. 14
Perintah SQL di atas bisa menemukan informasi tersebut namun akan lebih
efisien, jika dirubah menjadi:
select Nama_Tamu, Alamat, Kota From Tamu where substring(Alamat,1,7) =
'Jl. Man';
Maka tampilan yang dihasilkan :
3.3.Hindari OR, gunakan UNION
Operator OR membutuhkan waktu yang banyak. Bila memungkinkan, gunakan
operator UNION yang setara. Contoh Study Kasus jika kita ingin mencari
nama dengan awalan Ron dan Adr, maka berikut querynya :
select kode_tamu, Nama_Tamu, Alamat, Kota From tamu where
substring(Nama_Tamu,1,3) = 'Ron' or substring(Nama_Tamu,1,3) = 'Adr'
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
select kode_tamu, Nama_Tamu, Alamat, Kota From tamu where
substring(Nama_Tamu,1,3) = 'Ron' UNION select kode_tamu, Nama_Tamu, Alamat,
Kota From tamu where substring(Nama_Tamu,1,3) = 'Adr'
15. 15
SELECT kode_tamu, Nama_Tamu, Alamat, Kota FROM tamu WHERE (Kode_Tamu <=
1000003 );
Maka yang dihasilkan seperti gambar dibawah ini :
3.4.Hindari NOT
Hindari operator NOT dan ganti dengan operator perbandingan bila
memungkinkan. Contoh study kasus mencari kode_tamu dengan tidak lebih dari
1000003, maka yang querynya seperti berikut :
SELECT kode_tamu, Nama_Tamu, Alamat, Kota FROM tamu WHERE NOT (Kode_Tamu
> 1000003 );
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT kode_tamu, Nama_Tamu, Alamat, Kota FROM tamu WHERE (Kode_Tamu <=
1000003 );
Maka yang dihasilkan seperti gambar dibawah ini :
16. 16
3.5.Hindari Ekspresi Matematika di Sisi Kiri Operand
Bila kriteria pencarian memerlukan ekspresi matematika, maka posisikan ekspresi
tersebut pada sebelah kanan operator jika memungkinkan. Contoh Study kasus mencari
harga di table kamar dengan harga lebih 200000 di atas 1000000,
berikut querynya :
SELECT No_Kamar, Nama_Kamar, Kode_Tipe_Kamar, Kapasitas, Harga,
Status_Kamar FROM Kamar WHERE(Harga + 200000 > 1000000);
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT No_Kamar, Nama_Kamar, Kode_Tipe_Kamar, Kapasitas, Harga,
Status_Kamar FROM Kamar WHERE (Harga > 800000 )
Hasilnya Seperti gambar berikut :
17. 17
3.6. Hindari Operator IN
Penggunaan operator IN dalam kriteria pencarian merupakan pernyataan SELECT yang
mahal, sehingga perlu dihindari. Berikut cara menghindarinya untuk dua bentuk
penggunaan IN. Contoh Study Kasus mencari nomor kamar 202, 203 yang ada di tabel
kamar.
Penggunaan operator IN bentuk pertama:
SELECT No_kamar , Nama_Kamar FROM Kamar WHERE Substring(No_kamar, 1, 3) IN
('202', '203');
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT No_kamar , Nama_Kamar FROM Kamar WHERE Substring(No_kamar, 1, 3) =
'202' OR Substring(No_kamar, 1, 3) = '201';
18. 18
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
Hasilnya berikut :
Untuk Study kasus yang selanjutnya, untuk mengindari penggunaan operator OR.
Penggunaan operator IN bentuk kedua, dalam study kasus ini adalah mencari nomor
kamar sama yang ada di dalam tabel check_in :
SELECT No_kamar , Nama_Kamar FROM Kamar WHERE Substring(No_kamar, 1, 3) IN
(SELECT No_Kamar FROM Check_In) ;
SELECT Kamar.No_kamar , Kamar.Nama_Kamar, Check_in.No_Kamar FROM Kamar,
Check_In WHERE Substring(Kamar.No_kamar, 1, 3) = Check_In.No_Kamar ;
Berikut hasil implementasinya :
19. 19
SELECT A.ANUMBER, A.BNUMBER, A.DURASI FROM T_CA
LLS A SELECT A.ANUMBER, A.BNUMBER, A.DURASI
3.7.Hindari Operator EXIST
Sama halnya dengan EXIST, bila memungkinkan hindari penggunaan operator ini.
Contoh study kasus ialah mencari nomor kamar yang sama di tabel
kamar dan checkin, querynya seperti berikut :
SELECT Kamar.No_kamar , Kamar.Nama_Kamar, Check_in.No_Kamar FROM Kamar,
Check_In
WHERE EXISTS (SELECT Check_in.No_Kamar no_kamar WHERE Check_in.No_Kamar
= Kamar.No_kamar)
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT Kamar.No_kamar , Kamar.Nama_Kamar, Check_in.No_Kamar FROM Kamar,
Check_In WHERE Substring(Kamar.No_kamar, 1, 3) = Check_In.No_Kamar ;
Hasilnya Seperti berikut :
20. 20
3.8. Hindari Operator LIKE
Penggunaan operator LIKE akan menyebabkan full table scanning. Oleh karena itu, perlu
dirubah dengan ekspresi yang sama bila memungkinkan. Contoh Study kasus mencari
nomor identitas yang hanya diketahui depannya dengan Like %, namun hal itu kurang
efesien, lebih efesien jika querynya ditentukan pencarian awalnya
555501 dan samapai 555503, jadi tidak full table scanning,
SELECT Kode_Tamu, Nama_Tamu,No_Identitas, Alamat, Kota, No_Telp FROM Tamu
WHERE No_Identitas LIKE '55550%';
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT Kode_Tamu, Nama_Tamu,No_Identitas, Alamat, Kota, No_Telp FROM Tamu
WHERE No_Identitas >= '555501' AND No_Identitas < '555503';
21. 21
3.9.Urutan Nama Kolom
Penulisan nama kolom disarankan menggunakan urutan sebagaimana kolom tersebut
didefinisikan di dalam tabel. Study Kasus tabel berikut mempunyai kolom dengan
urutan sebagaimana tertulis: Kamar (No_Kamar, Nama_Kamar, Kode_Tipe_Kamar,
Kapasitas, Harga, Status_Kamar) di mana terdapat composite index untuk kolom
No_Kamar dan Kode_Tipe_Kamar berikut querynya :
SELECT Kapasitas, Nama_Kamar, Status_Kamar, Harga FROM Kamar
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT Nama_Kamar, Kapasitas, Harga, Status_Kamar FROM Kamar
Hasilnya, tabel berurutan :
22. 22
Pada penggunaan index dari beberapa kolom (composite index) sebutkan nama
kolomnya dalam urutan yang benar sesuai dengan urutan kolom tersebut di dalam
tabelnya.
SELECT Nama_Kamar, Kapasitas, Harga, Status_Kamar FROM Kamar WHERE
Kode_Tipe_kamar > 2010203 AND No_Kamar = 205;
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT Nama_Kamar, Kapasitas, Harga, Status_Kamar FROM Kamar WHERE
No_Kamar = 205 AND Kode_Tipe_kamar > 2010203;
Hasilnya :
23. 23
3.10. Gunakan Konsensus Penulisan SQL
SQL merupakan bahasa pemrograman tingkat tinggi generasi keempat. Secara internal,
Oracle akan mengolah lebih dulu setiap pernyataan SQL untuk mendapatkan hasil yang
diinginkan. Jika Oracle menemukan suatu pernyataan SQL yang dimasukkan pertama
kali, maka Oracle akan mengolah pernyataan tersebut menjadi pernyataan perintah low
level yang dimengerti oleh server database untuk mendapatkan hasilnya. Perintah low
level ini akan didaftarkan oleh Oracle pada suatu area memory khusus yang disebut
LIBRARY CACHE untuk keperluan lebih lanjut. Jika suatu saat pernyataan SQL yang
sama muncul lagi, maka Oracle tidak akan merubah SQL menjadi low level, namun
menggunakan perintah low level yang sudah ada terdaftar pada LIBRARY CACHE.
Dengan demikian, mengurangi proses translasi dari bahasa tingkat tinggi ke bahasa low
level.
24. 24
REFERENSI
Edmundus, A.Haryadi. 2005. Perkenalan Sistem Basis Data. Yogyakarta: PT. Gramedia.
http://www.tutorialdba.com/tuning-database2
http://content.yudu.com/Library/A1qiqr/DatabasePerformanceT/resources/index.html
http://imam_muiz.staff.gunadarma.ac.id/Downloads/files/6535/BASIS+DATA.pdf