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.