Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

OPTIMASI QUERY MATERI 4 Sistem Manajemen Basis Data Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012.

Presentasi serupa


Presentasi berjudul: "OPTIMASI QUERY MATERI 4 Sistem Manajemen Basis Data Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012."— Transcript presentasi:

1 OPTIMASI QUERY MATERI 4 Sistem Manajemen Basis Data Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012

2 Tabel-tabel yang digunakan 2 enrolled lecturer grade_scale students course faculty

3 Optimasi Query 3  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 4  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 5  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 6  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 7  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 8  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 9  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 10  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 To Be Continued … Materi 5 Any Question ? 11


Download ppt "OPTIMASI QUERY MATERI 4 Sistem Manajemen Basis Data Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012."

Presentasi serupa


Iklan oleh Google