Optimasi Query Materi 4

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

description

Optimasi Query Materi 4. Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012. Sistem Manajemen Basis Data. Tabel-tabel yang digunakan. lecturer. enrolled. students. faculty. grade_scale. course. Optimasi Query. - PowerPoint PPT Presentation

Transcript of Optimasi Query Materi 4

Page 1: Optimasi  Query Materi  4

OPTIMASI QUERYMATERI 4

Sistem Manajemen Basis Data

Eko Prasetyo

Teknik Informatika

Universitas Bhayangkara Surabaya

2012

Page 2: Optimasi  Query Materi  4

2

Tabel-tabel yang digunakan

enrolledlecturer

grade_scale

students

course

faculty

Page 3: Optimasi  Query Materi  4

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.

Page 4: Optimasi  Query Materi  4

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.

Page 5: Optimasi  Query Materi  4

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)

Page 6: Optimasi  Query Materi  4

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

Page 7: Optimasi  Query Materi  4

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.

Page 8: Optimasi  Query Materi  4

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.

Page 9: Optimasi  Query Materi  4

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)

Page 10: Optimasi  Query Materi  4

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.

Page 11: Optimasi  Query Materi  4

11

To Be Continued … Materi 5

Any Question ?

Click icon to add picture