Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Sistem Manajemen Basis Data
Optimasi Query Materi 4 Sistem Manajemen Basis Data Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012
2
Tabel-tabel yang digunakan
lecturer students enrolled faculty grade_scale course
3
Optimasi Query Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau volumenya. Kalau tidak didukung dengan kecepatan akses yang memadai maka akan semakin menurun unjuk kerjanya. Ukuran unjuk kerja dalam hal ini kecepatan akses data dipengaruhi oleh banyak faktor, seperti: perintah SQL, index, denormalisasi, cluster.
4
Optimasi Pada Perintah SQL
Desain aplikasi saja tidak cukup untuk meningkatkan unjuk kerja harus didukung dengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Dalam mendesain database, seringkali lokasi fisik data tidak menjadi perhatian penting. Karena hanya desain logik saja yang diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik. Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data. Indek bertindak seperti ‘daftar isi’ dalam sebuah buku.
5
Optimasi Pada Perintah SQL
Operasi-operasi query: seleksi, proyeksi, join Seleksi: Operasi pemilahan baris-baris data yang memenuhi kriteria dalam klausa WHERE Jika tidak terdapat indek pada kolom yang digunakan sebagai operand seleksi, maka DBMS akan men-scan seluruh isi tabel tersebut Proyeksi: Operasi pemilihan kolom tertentu dari tabel yang akan ditampilkan Select sid, name from students Memilih kolom sid dan name dari tabel students Operasi yang mahal adalah jika menggunakan operator DISTINCT Select DISTINCT age from students Akan mendapatkan usia berapa saja pada mahasiswa dalam tabel students Join: Operasi penggabungan 2 atau lebih tabel, ini merupakan operasi yang umum dan mahal. Ada 3 jenis: left join, right join, dan inner join (kadang juga menggunakan operator WHERE untuk menggabungkan)
6
Index Misal: Pada tabel students akan dibuatkan index yang melibatkan 1 kolom yang mengurutkan data menurut nama. create index idx_students_name on students (name) Kemudian melakukan query sebagai berikut: Select a.sid, a.name from students as a where a.name like ‘R%’ Select a.sid, a.name from students as a where a.name in (‘Sandi’,’Wati’) Select a.sid, a.name from students as a where a.name not in (‘Sandi’,’Wati’) and a.age > 20 Kedua query akan menggunakan indek secara optimal. Query 1 dan 2: optimal Query 3: optimal untuk name, tidak untuk age (karena tidak ada indek untuk age) Untuk menghapus index, gunakan perintah alter dan drop Misal: alter table students drop index idx_students_name
7
Index Misal: Pada tabel students akan dibuatkan index yang melibatkan 2 kolom yang mengurutkan data menurut fid (kode fakultas) dan lid (kode dosen wali) create index idx_students_fid_lid on students (fid, lid) Kemudian melakukan query sebagai berikut: SELECT a.name, a.birthday from students as a where a.lid in (‘9001’,’9003’) Indek tidak digunakan, karena seleksi tidak melibatkan kolom pertama indek SELECT a.name, a.birthday from students as a where a.fid = ‘1’ Indek tidak akan digunakan secara optimal karena pembuangan resource pelibatan kolom lid dalam indek SELECT a.name, a.birthday from students as a where a.fid = ‘1’ and a.lid in (‘9001’,’9003’) Indek digunakan secara baik dan optimal.
8
Optimasi Aplikasi Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain. Apakah desain database sudah melakukan normalisasi data secara tepat. Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-to-one dan sering diakses bersama lebih baik disatukan dalam satu tabel.
9
Denormalisasi Misal, pada tabel students sering ada pengaksesan antara tabel students dan lecturer untuk menampikan nama dosen wali pada KRS/KHS mahasiswa, untuk kasus seperti ini sebaiknya dilakukan denormalisasi dengan menambahkan kolom ‘lecturer_name’ pada tabel student Manfaatkan korelasi sub-query update Lakukan denormalisasi tabel students dengan menambah kolom lecturer_name Isi kolom lecturer_name didapatkan dari tabel lecturer alter table students add column lecturer_name varchar(30) update students as a set lecturer_name = (select b.name from lecturer as b where b.lid=a.lid)
10
Cluster Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join. Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.
11
Any Question ? To Be Continued … Materi 5
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.