SQL - Penyetelan Database
Butuh waktu untuk menjadi Ahli Database atau Administrator Database ahli. Ini semua datang dengan banyak pengalaman dalam berbagai desain database dan pelatihan yang bagus.
Tetapi daftar berikut mungkin berguna bagi pemula untuk memiliki kinerja database yang bagus -
Gunakan desain database 3BNF yang dijelaskan dalam tutorial ini di bab Konsep RDBMS.
Hindari konversi angka-ke-karakter karena perbandingan angka dan karakter secara berbeda dan menyebabkan penurunan kinerja.
Saat menggunakan pernyataan SELECT, hanya ambil informasi apa pun yang diperlukan dan hindari penggunaan * dalam kueri SELECT Anda karena akan memuat sistem secara tidak perlu.
Buat indeks Anda dengan hati-hati di semua tabel tempat Anda sering melakukan operasi pencarian. Hindari indeks pada tabel di mana Anda memiliki jumlah operasi pencarian yang lebih sedikit dan lebih banyak jumlah operasi penyisipan dan pembaruan.
Pemindaian tabel lengkap terjadi ketika kolom di klausa WHERE tidak memiliki indeks yang terkait dengannya. Anda dapat menghindari pemindaian tabel lengkap dengan membuat indeks pada kolom yang digunakan sebagai kondisi di klausa WHERE dari pernyataan SQL.
Berhati-hatilah dengan operator persamaan dengan bilangan real dan nilai tanggal / waktu. Keduanya dapat memiliki perbedaan kecil yang tidak terlihat jelas tetapi membuat pencocokan persis tidak mungkin dilakukan, sehingga mencegah kueri Anda mengembalikan baris.
Gunakan pencocokan pola dengan bijaksana. LIKE COL% adalah kondisi WHERE yang valid, mengurangi set yang dikembalikan hanya ke record tersebut dengan data yang dimulai dengan string COL. Namun, COL% Y tidak mengurangi lebih lanjut hasil yang dikembalikan yang ditetapkan karena% Y tidak dapat dievaluasi secara efektif. Upaya untuk melakukan evaluasi terlalu besar untuk dipertimbangkan. Dalam kasus ini, COL% digunakan, tetapi% Y dibuang. Untuk alasan yang sama, karakter pengganti terkemuka% COL secara efektif mencegah penggunaan seluruh filter.
Sempurnakan kueri SQL Anda dengan memeriksa struktur kueri (dan subkueri), sintaks SQL, untuk mengetahui apakah Anda telah merancang tabel untuk mendukung manipulasi data cepat dan menulis kueri secara optimal, memungkinkan DBMS Anda untuk memanipulasi data secara efisien .
Untuk kueri yang dieksekusi secara teratur, coba gunakan prosedur. Prosedur adalah grup pernyataan SQL yang berpotensi besar. Prosedur dikompilasi oleh mesin database dan kemudian dijalankan. Tidak seperti pernyataan SQL, mesin database tidak perlu mengoptimalkan prosedur sebelum dijalankan.
Hindari menggunakan operator logika ATAU dalam kueri jika memungkinkan. ATAU pasti memperlambat hampir semua kueri terhadap tabel berukuran besar.
Anda dapat mengoptimalkan pemuatan data massal dengan menghapus indeks. Bayangkan tabel sejarah dengan ribuan baris. Tabel riwayat tersebut juga cenderung memiliki satu atau lebih indeks. Saat memikirkan indeks, biasanya Anda memikirkan akses tabel yang lebih cepat, tetapi dalam kasus pemuatan batch, Anda bisa mendapatkan keuntungan dengan menghapus indeks.
Saat melakukan transaksi batch, lakukan COMMIT setelah pembuatan record dalam jumlah yang wajar sebagai ganti membuatnya setelah setiap pembuatan record.
Rencanakan untuk mendefrag database secara teratur, meskipun melakukannya berarti mengembangkan rutinitas mingguan.
Alat Tuning Bawaan
Oracle memiliki banyak alat untuk mengelola kinerja pernyataan SQL tetapi di antara mereka ada dua yang sangat populer. Kedua alat ini adalah -
Explain plan - alat mengidentifikasi jalur akses yang akan diambil ketika pernyataan SQL dijalankan.
tkprof - mengukur kinerja dengan waktu yang berlalu selama setiap fase pemrosesan pernyataan SQL.
Jika Anda hanya ingin mengukur waktu yang telah berlalu dari kueri di Oracle, Anda dapat menggunakan perintah SQL * Plus SET TIMING ON.
Periksa dokumentasi RDBMS Anda untuk detail lebih lanjut tentang alat yang disebutkan di atas dan mendefrag database.