MAKALAH SISTEM BASIS DATA
“DATABASE PERFORMANCE TUNING” Kelompok 4 TI – A Pagi Ibrahim Anwar Ilham Irfannur Diah Manaor Simanjuntak Muhammad Perkasa Pratama Rifa Rahmadi
(1310000016) (1310000017) (1310000019) (1310000020) (1310000021) (1310000031)
STMIK POTENSI UTAMA Proggram Studi Teknik Informatika 2004/2015 1
Kata Pengantar Puji dan Syukur kami ucapkan ke Hadirat Allah. S.W.T Tuhan Yang Maha Esa, karena berkat limpahan Rahmat dan Karunia-nya sehingga kami dapat menyusun makalah ini dengan baik dan tepat pada waktunya. Dalam tugas makalah ini kami membahas mengenai Database Performance Tuning. Makalah ini dibuat dengan berbagai sumber di internet dan beberapa bantuan dari berbagai pihak untuk membantu menyelesaikan tantangan dan hambatan selama mengerjakan makalah ini. Oleh karena itu, kami mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu dalam penyusunan makalah ini. Kami menyadari bahwa masih terdapat kekurangan yang mendasar pada makalah ini. Oleh karena itu kami mengundang pembaca untuk memberikan saran serta kritik yang dapat membangun kami. Kritik konstruktif dari pembaca sangat kami harapkan untuk penyempurnaan makalah selanjutnya. Akhir kata semoga makalah ini dapat memberikan manfaat bagi kita sekalian.
Medan , 11 Oktober 2014 Team Penulis
2
Daftar Isi Kata Pengantar ........................................................................................ i Daftar Isi .................................................................................................. ii BAB I : Pendahuluan ............................................................................ 1 1.1. Latar Belakang ............................................................................ 1 1.2. Permasalahan .............................................................................. 1 1.3. Tujuan ......................................................................................... 2 1.4. Mafaat ......................................................................................... 2 BAB II : Pembahasan............................................................................. 3 2.1. Performance Tuning .................................................................... 3 2.1.1. Memulai Tuning ................................................................. 3 2.1.2. Prinsip dan Kriteria Tuning ................................................ 5 2.1.3. Persyaratan Tuning............................................................. 5 2.1.4. Type dari Performance Tuning .......................................... 5 2.1.5. Teknik Tuning dan Optimizing .......................................... 6 2.1.6. Masalah yang Menyebabkan Performa menurun ............... 8 2.2. Sistem Manajemen Basis Data .................................................... 9 2.3. Database Tuning.......................................................................... 10 2.4. Study Kasus SQL Tuning............................................................ 12 BAB III: Penutup ................................................................................... 28 3.1. Kesimpulan ................................................................................. 28 3.2. Saran ............................................................................................ 28 Daftar Pustaka ........................................................................................ 29
3
BAB I PENDAHULUAN 1.1 Latar Belakang Di Era Globalisasi Dalam masyarakat berbasis informasi, sistem basis data merupakan komponen penting pada sebuah sistem informasi manajemen. Suatu sistem besar, yang setiap hari berinteraksi, selalu membutuhkan informasi yang selalu up-to-date dan tepat waktu dalam pengelolaan manajemen data dan informasi. Basis data dan Sistem Manajemen Basis Data (SMBD) / Database Management System (DBMS) dapat menyediakan sarana infrastruktur pada suatu sistem yang dibangun. Sistem manajemen basis data merupakan perangkat lunak yang dapat digunakan untuk mendefinisikan, menciptakan, mengelola dan mengendalikan pengaksesan basis data. Tugas dari sistem manajemen basis data adalah menyediakan lingkungan yang nyaman dan efisien untuk penyimpanan dan pengambilan data dari basis data. Pengelolaan manajemen basis data membutuhkan suatu perangkat / tools untuk dapat mengelolanya, sehingga manajemen basis data dapat terus dikelola dan terus ditingkatkan kinerjanya. Performance tuning merupakan suatu usaha ataupun cara untuk memperbaiki kinerja yang sudah umum bagi perangkat keras dan perangkat lunak komputer yang diharapkan dapat menjaga kestabilan pada suatu sistem yang ada. Maka dari itu pada makalah ini penulis membahas tentang performance tuning lebih lanjut sebagai penambahan ilmu dan juga sebagai tugas dari mata kuliah Sistem Basis Data. 1.2 Permasalahan Bagaimana
suatu Performance Tuning Manajemen Basis Data dapat
menangani basis data yang komplek dan tetap dapat meningkatkan kinerja suatu sistem.
4
1.3 Tujuan 1. Memahami cara kerja performance tuning manajemen basis data. 2. Sebagai tugas dari mata kuliah Sistem Basis Data 1.4 Manfaat 1. Dengan menulis makalah ini diharapkan dapat menambah pengetahuan dan wawasan mengenai performance tuning manajemen basis data. 2. Penelitian ini diharapkan dapat menjadi bahan masukan dan pemikiran bagi pengguna teknologi informasi yang membutuhkan data dan informasi yang semakin komplek.
5
BAB II PEMBAHASAN 2.1
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]. 2.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.
6
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.[3].
7
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. 2.1.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]. 2.1.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. 2.1.4
Type dari Performance Tuning
1. 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.
8
2. 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 sama, kemungkinan kinerja degradasi meningkat. dan Intinya lokasi fisik dari file database pada sistem disk dapat mempengaruhi performa aplikasi dalam mengakses data ke DataBase . 3. 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. 2.1.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
9
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 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
10
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 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. 2.1.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 11
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)
2.2
Overall application and database workload on the server
Database schema definitions
Sistem Manajemen Basis Data (SMBD) Basis data merupakan kumpulan data yang diperlukan sebagai suatu unit,
untuk menyimpan dan menerima informasi, serta untuk memecahkan permasalahan manajemen informasi. Berdasarkan perkembangan teknologi informasi, suatu sistem pemrosesan basis data terbentuk setelah masa sistem pemrosesan manual dan pemrosesan berkas. Sistem pemrosesan manual atau berbasis kertas merupakan pemrosesan yang menggunakan suatu tumpukan rekaman yang disimpan pada rak–rak berkas, dimana berkas tersebut harus dicari secara manual dari rak–rak yang ada apabila diperlukan. Rekaman adalah gabungan sejumlah elemen data yang saling terkait. Berkas adalah kumpulan rekaman data yang berkaitan dengan suatu subjek. Kemudian, suatu sistem komputer sudah bisa diterapkan maka sekelompok rekaman tersebut disimpan pada sejumlah berkas secara terpisah, pendekatan yang digunakan pada sistem ini disebut sebagai sistem pemrosesan berkas. Sistem pemrosesan berkas mempunyai kelebihan dibandingkan dengan sistem pemrosesan secara manual, yaitu mengenai kecepatan dan keakuratan. Namun, sistem ini juga mempunyai kelemahan, yaitu perancangan sistem masih didasarkan pada kebutuhan individual pengguna, bukan kebutuhan sejumlah pengguna. Setiap kali ada kebutuhan baru dari seorang pengguna, kebutuhan segera diterjemahkan ke program komputer. Hasilnya, setiap program aplikasi menuliskan data tersendiri, sementara ada kemungkinan data yang sama juga terdapat pada berkas– berkas lain yang digunakan oleh program aplikasi lain.
12
Secara jelasnya, sistem pemrosesan berkas mempunyai kekurangan– kekurangan dalam hal: 1. Kemubaziran data atau duplikasi data, yaitu diakibatkan olehsetiap program aplikasi menggunakan data tersendiri. 2. Keterbatasan berbagi dua, yaitu terjadi karena terbatasnya data, sehingga suatu data tidak dapat dipakai oleh beberapa program aplikasi. 3. Ketidakkonsistenan data, yaitu diakibatkan oleh adanya perubahan terhadap data yang sama, tetapi tidak semuanya diubah. 4. Kurangnya integritas data, integritas disini yang berarti data harus selalu dalam keadaan valid. 5. Ketidakluwesan, merupakan sistem pemrosesan berkas terletak pada hal pengembangan atau perubahan. Pada basis data terdapat istilah independensi data. Independensi data adalah sifat yang memungkinkan perubahan struktur berkas tidak mempengaruhi program dan sebaliknya, independensi juga bisa berarti bahwa data bersifat tidak bergantung pada data lain. Sistem pemrosesan basis data dimaksudkan untuk mengatasi kelemahan–kelemahan yang ada pada sistem pemrosesan berkas. Sistem seperti ini dikenal dengan sebutan SMBD (Sistem Manajemen Basis Data) .[2]. 2.3
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
13
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 daerahdaerah 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
14
yang sama indeks ini direferensikan pada disk lain. Kemampuan untuk menyimpan objek pada beberapa disk tergantung pada berapa banyak disk yang terhubung ke controller.
Gambar di atas memperlihatkan contoh sederhana tentang bagaimana memisahkan wilayah utama dari database . 2.4
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.
15
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. 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.
16
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'
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
17
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. 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:
18
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 * 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 :
19
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
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';
20
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'
21
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 <= SELECT kode_tamu, Nama_Tamu, Alamat, Kota FROM tamu WHERE (Kode_Tamu <= 1000003 ); 1000003 );
22
Maka yang dihasilkan seperti gambar dibawah ini :
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 )
23
Hasilnya Seperti gambar berikut :
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';
24
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) ;
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 ;
25
Berikut hasil implementasinya :
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)
SELECT A.ANUMBER, A.BNUMBER, A.DURASI FROM T_CALLS A 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 ;
SELECT A.ANUMBER, A.BNUMBER, A.DURASI
26
Hasilnya Seperti berikut :
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';
27
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
Hasilnya, tabel berurutan :
28
FROM Kamar
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 :
29
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.
30
BAB III PENUTUP A. Kesimpulan Dari pembahasan pada bab pembahasan, dapat di tarik kesimpulan bahwa : 1. Database performance tuning adalah aktivitas dan prosedur yang dirancang untuk mempercepat respon sistem database 2. Database Performane tuning bertujuan untuk mengeksekusi query secepat mungkin 3. Teknik Tuning dan Optimizing, antara lain: Partitioning, Raw Partition vs File Systems, Indexing, Denormalization, Clustering, Interleaving Data, Free Space, Compression, File Placement and Allocation, Page size, dan Reorganiztion 4. Performance Tuning pada SQL, dapat dilakukan dengan Pemilihan Metode Akses, Pembuatan Index, Perbaikan pernyataan select dengan menghindari select semua, select dengan kriteria, select dengan union, menghindari not , expresi matematika, operator in, operator exist, like dan urutan kolom B. Saran Demikianlah makalah DataBase Performance Tuning yang kami buat ini, semoga bermanfaat dan menambah pengetahuan para pembaca. Kami mohon maaf apabila terdapat kesalahan ejaan dalam penulisan kata dan kalimat yang kurang jelas, dimengerti, dan lugas. Karena kami hanyalah manusia biasa yang tak luput dari kesalahan Dan kami juga sangat mengharapkan saran dan kritik dari para pembaca yang membangun kepada kami demi sempurnanya makalah ini. Semoga makalah ini dapat bermanfaat bagi kami penulis dan para pembaca . Amiin.
31
DAFTAR PUSTAKA [1]
http://ilmukomputer.org/wpcontent/uploads/2010/03/arief_pengenalankomputer.pdf. access at 07 October 2014.
[2]
http://imam_muiz.staff.gunadarma.ac.id/Downloads/files/6535/BASIS+DA TA.pdf. access at 07 October 2014.
[3]
docs.oracle.com/cd/A64702_01/doc/server.805/a58246.pdf access at 07 October 2014.
[4]
http://www.webbasedprogramming.com access at 07 October 2014
[5]
http://www.tutorialdba.com/tuning-database2 access
[6]
http://www.rizallaros.com/mengenal-performance-management-305/
at 07 October 2014
access at 07 October 2014 [7]
http://content.yudu.com/Library/A1qiqr/DatabasePerformanceT/resources/ index.htm access at 07 October 2014
32