Tuning Database
Tuning Database
Dika Swadani E Arwin Luthfir R. Faizah Alkaff Muhammad Najib 5109100010 5109100028 5109100065 5109100111
Teguh Jiwandana
Margareta H Virky Wiradiatma
5109100128
5109100150 5109100190
PENGERTIAN
Database tuning adalah aktivitas mengoptimasi dan menyamaratakan performa database.
Database tuning biasanya melengkapi query tuning, tapi merujuk pada desain dari file database, pemilihan DBMS, sistem operasi, dan CPU dimana DBMS berjalan.
TUJUAN
Untuk mengurangi waktu respon sistem terhadap end user, atau untuk mengurangi resource yang digunakan untuk memproses pekerjaan yang sama. Kita dapat memenuhi kedua tujuan ini dalam beberapa cara:
a.
b. c.
Mengurangi Beban Kerja (Reduce the Workload) Menyeimbangkan Beban Kerja (Balance the Workload) Memparalelkan Beban Kerja (Parallelize the Workload)
SQL Tuning secara umum melibatkan pencarian cara yang lebih efisien untuk memproses beban kerja yang sama. SQL tuning memungkinkan untuk mengubah rencana eksekusi dari suatustatement tanpa mengubah fungsionalitas untuk mengurangi pemakaian resource.Dua contoh bagaimana penggunaan resource dapat dikurangi: Jika suatu query yang biasa dieksekusi perlu untuk mengakses suatu persentase kecil dari data dalam tabel, maka query tersebut dapat dieksekusi dengan lebih efisien dengan menggunakan indeks. Dengan membuat indeks, kita dapat mengurangi jumlah pemakaian resource. Jika seorang user mencari dua puluh baris pertama dari 10000 baris yang diberikan oleh perintah pengurutan yang spesifik, dan jika query (dan perintah pengurutan) dapat dipenuhi oleh indeks, maka user tidak perlu untuk mengakses dan mengurutkan 10000 baris untuk melihat dua puluh baris.
Materi Basis Data Lanjut Database Tuning
Sistem cenderung memiliki penggunaan penuh pada siang hari ketika user yang sebenarnya terhubung ke sistem dan penggunaan yang sedikit di malam hari. Jika noncritical report dan batch jobdapat dijadwalkan untuk berjalan pada malam hari dan penggunaan sistem pada siang hari dikurangi, maka hal tersebut dapat membebaskan resource agar dapat digunakan pada program-program yang lebih penting pada siang hari.
Query-query yang mengakses sejumlah besar data (typical data warehouse queries) sering dapat diparalelkan. Hal ini sangat berguna untuk mengurangi waktu respon dalam data warehouse yang rendah konkurensinya. Akan tetapi, untuk lingkungan OLTP, yang cenderung tingggi konkurensinya, hal ini dapat merugikan user-user lain dengan meningkatkan penggunaan resource secara keseluruhan pada program.
JENIS TUNING
Tuning Index
Tuning Query
Materi Basis Data Lanjut Database Tuning
TUNING INDEX
Relasi
mana untuk index field atau kombinasi field mana yang dipilih sebagai index search key.
Skema ternormalisasi alternatif : Kita biasa mempunyai lebih dari 1 cara untuk menguraikan skema menjadi normal form yang diinginkan (BCNF atau 3NF). Sebuah pilihan dapat dibuat pada dasar kriteria performa.
Denormalisasi :
Kita mungkin ingin mempertimbangkan kembali penguraian skema yang dihasilkan untuk normalisasi selama proses desain skema konseptual untuk meningkatkan performa query yang mencakup atribut dari beberapa relasi sebelumnya.
Materi Basis Data Lanjut Database Tuning
Vertikal :
Dalam kondisi tertentu, kita mungkin ingin menguraikan relasi lebih jauh untuk meningkatkan performa query yang hanya mencakup beberapa atribut. View : Digunakan untuk menutupi perubahan dalam skema konseptual dari pengguna.
EXPLAIN PLAN
adalah suatu perintah yang digunakan untuk menampilkan perintah eksekusi suatu query. Query yang dioperasikan yang didukung oleh explain plan adalah :
SELECT INSERT UPDATE DELETE
Dengan memanfaatkan explain plan kita bisa melihat langkah eksekusi yang diambil oleh oracle, sehingga kita bisa meningkatkan performansi query kita. Optimizer mengambil informasi tentang obyek dan tipe dari query yang dijalankan, kemudian memberikan keputusan bagaimana suatu query akan dieksekusi.
Materi Basis Data Lanjut Database Tuning
ANALYZE
Selalu jalankan command ANALYZE pada table anda untuk memberikan kepastian kalau optimizer akan memperoleh informasi tentang data tersebut. Anda dapat melakukan ANALYZE sebuah table, index, dan bahkan cluster. Ketika anda melakukan analyze suatu table maka oracle akan mengambil informasi berupa data dari obyek tersebut dan informasi untuk memferifikasi blok. Ini adalah perintah yang sangat berguna bukan Cuma untuk memproteksi data, tetapi juga untuk meningkatkan performansi.
SYNTAX ANALYZE
Pertama buat table emp SQL> create table emp( a number, b varchar(10)); Table created. Kemudian masukkan sebuah data SQL> insert into emp values(1,'hallo'); 1 row created. Lakukan ANALYZE, eksekusi analyze dibawah adalah untuk melakukan validasi terhadap structure table emp. SQL> analyze table emp validate structure cascade
Materi Basis Data Lanjut Database Tuning
SQL TUNING
Bagian terpenting pada tuning performansi database system adalah Tuning SQL statements. Adapun pada tuning SQL terdapat tiga langkah dasar : Identifikasi SQL statements yang memegang andil besar pada sharing workload aplikasi dan system resources, dengan mereview history SQL execution yang telah lampau yang tersedia pada system. Verifikasi bahwa execution plans yang diproduksi oleh query optimizer untuk statement-statement ini berjalan dengan baik. Mengimplementasi corrective actions untuk men-generate execution plans pada peformansi SQL statement yang buruk sehingga menjadi lebih baik.
Mengecek apakah query yang dibuat dapat memanfaatkan index yang telah dibuat sebelumnya. Contoh Query : SELECT E.dno FROM Employees E WHERE E.hobby = Stamps OR E.age=10 Jika sebelumnya telah dibuat index untuk hobby dan age, maka jika dilakukan query seperti contoh diatas tidak akan berpengaruh pada peforma diatas. Solusinya, buat dua query yang berbeda untuk setiap klausa WHERE yaitu E.hobby = Stamps dan E.age=10, sehingga index untuk hobby dan age dapat dimanfaatkan.
Materi Basis Data Lanjut Database Tuning
Penggunaan DISTINCT pada perintah SELECT untuk mengeliminasi record yang duplikat. penggunaan GROUP BY dan HAVING pada query, seperti pada perintah berikut : SELECT MIN (E.age) FROM Employees E GROUP BY E.dno HAVING E.dno=12
SELECT * INTO Temp FROM Employees E, Departements D WHERE E.dno = D.dno AND D.mgrname=Robinson SELECT T.dno, AVG(T.salary) FROM Temp T GROUP BY T.dno Di tulis kembali menjadi : SELECT E.dno, AVG(E.sal) FROM Employees E, Departments D WHERE E.dno=Ddno AND D.mgrname=Robinson GROUP BY E.dno
SEKIAN. . .