Anda di halaman 1dari 17

Database Administration:

The Complete Guide to


Practices and Procedures
Chapter 12: Application Performance

Your Date Here Clarissa Luthfia Rachmad (H96218054)


Daftar Isi
1. Designing Applications for Relational Access
2. Relational Optimization
3. Additional Optimization Considertions
4. Reviewing Access Patha
5. SQL Coding and Tuning for Efficiency

Your Date Here Your Footer Goes Here 2


1. Designing Applications for Relational Access

Akun kode aplikasi yang dibangun dan dirumuskan dengan buruk


untuk sebagian besar basis data relasional masalah kinerja. Masalah
desain untuk memeriksa ketika kinerja aplikasi menderita termasuk:
• Jenis SQL
• Bahasa Pemrograman
• Desain dan Pemrosesan Transaksi
• Strategi Penguncian
• Strategi KOMIT
• Pemrosesan Batch
• Pemrosesan Online
2. Relational Optimization
Pengoptimal adalah mesin
inferensi untuk menentukan
strategi navigasi basis data.
Pemisahan kriteria akses dari
karakteristik
penyimpanan fisik disebut fisik
kemandirian data. cara
pengoptimalan harus
mengevaluasi dan menganalisis
berbagai faktor, termasuk
perkiraan CPU dan I / O biaya,
statistik basis data, dan
pernyataan SQL aktual.
2.1 Biaya CPU dan I/O 2.2 Statistik Basis Data
Pengoptimal relasional menggunakan Pengoptimal relasional tidak banyak berguna
formula dan model untuk memperkirakan tanpa statistik yang akurat. DBMS mengumpulkan
biaya alat berat untuk menjalankan setiap informasi statistik seperti
potensi jalur akses untuk kueri yang sedang • Jumlah baris dalam tablespace, tabel, atau
dioptimalkan.Berdasarkkan hasil ananlisis indeks
perkiraan waktu CPU dapat mengakses • Jumlah nilai unik yang disimpan dalam kolom
semua queri. Selanjutnya, pengoptimal • Nilai kolom yang paling sering muncul
relasional harus memperkirakan biaya • Nilai kolom yang paling sering muncul
penulisan aktual dan pengambilan • Detail tentang rasio pengelompokan untuk tabel
data. Pengoptimal memperkirakan biaya I / berkerumun
O untuk kueri dengan menggunakan • Korelasi kolom dengan kolom lainnya
serangkaian formula berdasarkan statistik
• Status struktural dari indeks atau tablespace
basis data, efisiensi cache data, dan biaya I /
O untuk file kerja menengah. • Jumlah penyimpanan yang digunakan oleh objek
database
Buat skrip untuk mengisi statistik produksi ke
dalam sistem pengujian.
2.3 Analisis Permintaan
Selama analisis kueri, pengoptimal menganalisis aspek pernyataan SQL dan sistem basis data,
seperti:
• Tabel mana yang membutuhkan basis data
• Apakah ada tampilan yang perlu dipecah menjadi tabel yang mendasarinya
• Diperlukan apakah tabel bergabung atau tidak
• Indeks mana, jika ada, yang dapat digunakan
• Berapa banyak predikat (WHERE clauses) yang harus dipenuhi
• Fungsi mana yang harus dijalankan
• Apakah SQL menggunakan OR atau AND
• Bagaimana DBMS memproses setiap komponen pernyataan SQL
• Berapa banyak memori yang telah ditetapkan untuk cache data yang digunakan oleh tabel
dalam SQL pernyataan
• Berapa banyak memori yang tersedia untuk mengurutkan jika permintaan membutuhkan
pengurutan
Semakin kompleks pernyataan SQL, semakin banyak pekerjaan yang harus dilakukan analisis
kueri.
2.4 Join 2.4.1 Join dengan Order
Secara umum, pengoptimal akan
menggunakan algoritma yang
meminimalkan berapa kali tabel
dalam harus diakses untuk baris
tabel luar yang memenuhi syarat.
Namun, tidak ada pengoptimal
relasional hari ini yang sempurna.

Menggabungkan informasi dari beberapa tabel


dikenal sebagai join
2.5 Akses Pilihan Jalur
Pengoptimal relasional memiliki banyak opsi untuk membuat jalur akses SQL. Dan
beberapa jenis akses data lainnya
2.5.1 Pemindaian Tabel 2.5.2 Akses Terindeks
Pindaian tabel adalah bentuk akses data yang paling Pengoptimal relasional dapat memilih untuk
sederhana. Biasanya, pengoptimal akan memilih untuk menggunakan indeks dengan berbagai cara. Yang
memindai data karena salah satu alasan berikut: pertama, dan yang paling sederhana, jenis akses yang
• Permintaan tidak dapat dipenuhi menggunakan indeks diindeks adalah pencarian indeks langsung. Untuk
mungkin karena tidak ada indeks tersedia, tidak predikat melakukan pencarian indeks langsung, DBMS memulai
cocok dengan indeks, atau predikat menghalangi langkah-langkah berikut:
penggunaan indeks. • Nilai dalam predikat SQL dibandingkan dengan nilai
• Persentase tinggi dari baris dalam tabel memenuhi syarat yang disimpan di halaman root indeks.
• Indeks yang memiliki predikat pencocokan memiliki rasio • Jika ada halaman nonleaf menengah, halaman nonleaf
kluster rendah dan hanya efisien untuk yang sesuai dibaca, dan nilainya dibandingkan untuk
• sejumlah kecil data menentukan halaman daun mana yang akan diakses
• Tabelnya sangat kecil sehingga penggunaan indeks akan • Halaman daun yang tepat dibaca; halaman daun indeks
merugikan. berisi pointer ke data actual untuk baris kualifikasi
Prefetch data sangat berguna untuk pemindaian tabel dan • Berdasarkan penunjuk dalam entri indeks halaman
tablespace. daun, DBMS membaca tabel yang sesuai halaman data.
Tambahan
• Jenis akses terindeks yang paling sederhana adalah pencarian indeks langsung.
• Ada dua jenis dasar pemindaian indeks: pencocokan dan tidak cocok
• Penyaringan indeks berguna jika beberapa kolom indeks multikolom tidak ditentukan dalam
Queri.
• Dengan akses multi-indeks, DBMS menggunakan lebih dari satu indeks untuk memenuhi
satu akses jalan.

2.5.3 Menggunakan Indeks untuk Menghindari


Macam
Pengoptimal relasional akan mencoba menggunakan indeks untuk menghindari pengurutan
bila memungkinkan. Penyortiran mungkin terjadi ketika klausa berikut ini ditentukan:
• Distinct
• Union
• Group By
• Order By
Gunakan indeks untuk menghindari pengurutan dengan membuatnya di kolom yang perlu
disortir.
Tambahan
Apakah menggunakan indeks atau tidak sebenarnya lebih cepat daripada
memindai data dan menyortir akan bergantung pada:
• Jumlah baris yang memenuhi syarat
• Kecepatan semacam itu
• Karakteristik Indeks
2.5.4 Mengapa Indeks Tidak Terpilih?
Daftar hal hal yang diperiksa untuk cara mendorong pemilihan indeks:
• Apakah kueri menentukan argumen pencarian? Jika tidak ada predikat yang
menggunakan argumen pencarian, maka optimizer tidak dapat menggunakan
indeks untuk memenuhi kueri
• Apakah Anda bergabung dengan sejumlah besar tabel?
• Apakah statistik terkini? 
• Apakah Anda menggunakan prosedur tersimpan? 
• Apakah diperlukan predikat tambahan? 
2.6 Akses Hashed
Hash serupa dalam operasi dengan pencarian indeks langsung.

2.7 Akses Pararel


Tiga tipe dasar paralelisme dapat didukung oleh DBMS:
• Paralelisme I / O memungkinkan aliran I / O bersamaan
dimulai untuk satu permintaan
• Paralelisme CPU memungkinkan multitasking pemrosesan
CPU dalam kueri.
• Akhirnya, DBMS dapat menggunakan paralelisme
sistem untuk lebih meningkatkan kueri parallel
operasi. Paralelisme sistem memungkinkan satu kueri untuk
dipecah dan dijalankan beberapa contoh DBMS.
3. Additional Optimization Considertions
3.1 lihat Akses
• Lihat materialisasi dan penggabungan tampilan dapat digunakan untuk
mengoptimalkan referensi SQL itu dilihat
3.2 Penulisan Ulang Query
• Aturan untuk jenis pertanyaan apa yang dapat ditulis ulang bervariasi dengan
DBMS dan pengoptimal
3.3 Optimalisasi Berbasis Aturan
• Oracle menyediakan optimasi berbasis biaya dan berbasis aturan.
• Optimalisasi berbasis biaya adalah tren untuk DBMS karena pernyataan SQL
tidak perlu dikodekan mengikuti serangkaian esoteris "aturan“. Selanjutnya,
pengoptimal yang memperkirakan biaya berbeda jalur akses menghasilkan
rencana eksekusi permintaan yang efisien lebih andal
4 Meninjau Jalur Akses
• Programmer atau DBA dapat memeriksa jalur akses yang dipilih oleh
optimizer relasional
• Alat analisis dapat memudahkan DBA untuk menginterpretasikan jalur
akses yang digunakan
4.1 Memaksa Jalur Akses
• Teknik yang memaksa kriteria pemilihan jalur akses harus digunakan
dengan hati-hati. Biasanya lebih baik biarkan pengoptimal relasional
memilih jalur akses yang tepat sendiri kecuali:
• Anda memiliki pengetahuan mendalam tentang jumlah dan jenis data yang disimpan
dalam tabel yang akan dibuat bergabung
• Anda cukup yakin bahwa Anda dapat menentukan urutan bergabung optimal lebih
baik daripada pengoptimal
• Statistik basis data tidak mutakhir
• Metode alternatif tersedia untuk mendorong pengoptimal untuk memilih
akses yang berbeda jalan.
5. SQL Coding and Tuning for Efficiency
DBA bertanggung jawab untuk memastikan bahwa langkah-langkah berikut terjadi untuk setiap
pernyataan SQL di organisasi:
1. Identifikasi persyaratan data bisnis
2. Pastikan bahwa data yang diperlukan tersedia dalam database yang ada.
3. Terjemahkan persyaratan bisnis ke dalam SQL
4. Uji SQL untuk akurasi dan hasil
5. Tinjau jalur akses untuk kinerja
6. Tweak SQL untuk jalur akses yang lebih baik
7. Petunjuk pengoptimalan kode
8. Ulangi langkah 4 hingga 7 hingga kinerja dapat diterima
9. Ulangi langkah 8 setiap kali masalah kinerja muncul atau versi DBMS baru diinstal.
10.Ulangi seluruh proses kapan pun bisnis perlu diubah
Penyetelan SQL adalah proses yang kompleks, memakan waktu, dan rawan kesalahan.
Tentunya, harus ada cara untuk menyederhanakan penyetelan SQL.
5.1 Aturan SQL Thumb
• Tergantung: DBA yang sukses akan tahu apa yang tergantung
• Berhati-hatilah dengan Apa yang Anda Minta: Tempatkan predikat paling ketat di mana
pengoptimal dapat membacanya terlebih dahulu
• KISS: Tetap sederhana, Bodoh
• Hanya Ambil Apa Yang Dibutuhkan: Tentukan jumlah minimum kolom absolut dalam daftar
SELECT.
• Hindari Produk Cartesain: Hasil produk Cartesian sulit untuk ditafsirkan
• Penggunaan OR secara bijaksana: Operator logika OR dapat menyusahkan kinerja.
• Penggunaan LIKE yang bijaksana: Operator logika LIKE adalah hal yang merepotkan
• Tahu Apa yang Berfungsi Terbaik: Salah satu cara pengkodean biasanya memberikan kinerja
yang lebih baik daripada yang lain
• Masalah KOMIT sering: Keluarkan pernyataan KOMIT yang cukup untuk meminimalkan
dampak penguncian pada ketersediaan.
• Waspadai Pembuatan kode
• Pertimbangkan Prosedur yang disimpan
5.2 Tips Penyetelan SQL Tambahan
Penyetelan SQL adalah tugas rumit yang membutuhkan buku panjangnya
sendiri. Namun berikut ini Saran tuning SQL berguna untuk diterapkan DBA,
terlepas dari DBMS:
• Gunakan indeks untuk menghindari penyortiran
• Buat indeks untuk mendukung pertanyaan yang merepotkan
• Bilamana memungkinkan, jangan melakukan aritmatika dalam predikat
SQL.
• Gunakan fungsi SQL untuk mengurangi upaya pemrograman.
• Bangun kendala yang tepat ke dalam basis data untuk meminimalkan
pengkodean pemeriksaan edit
• Jangan lupa tentang dampak "tersembunyi" dari pemicu. 
5.3 Mengidentifikasi SQL yang Berkinerja Buruk

Kinerja SQL monitor adalah pendekatan terbaik untuk


mengidentifikasi pernyataan yang berkinerja buruk. Alat seperti
itu terus-menerus memonitor lingkungan DBMS dan melaporkan
sumber daya yang dikonsumsi oleh pernyataan SQL.

Anda mungkin juga menyukai