Belum lama ini, saya memberikan tutorial tentang Explain Plan kepada staf pengembangan aplikasi kami. Satu pertanyaan yang muncul adalah bagaimana saya memutuskan pernyataan SQL mana yang perlu disetel? Saya menggunakan beberapa pendekatan berbeda dan menemukan kandidat penyetelan SQL dari sudut yang berbeda.
- Saya secara rutin melakukan tinjauan kode pada pernyataan SQL yang masuk ke database kami. Saya memanfaatkan pengalaman saya untuk dengan cepat melihat pernyataan SQL yang baru atau telah dimodifikasi secara signifikan untuk memutuskan apakah saya perlu menyelidiki SQL lebih lanjut. Misalnya, jika kueri di tabel mencari di kolom PK atau Unik, maka saya yakin itu akan berjalan cepat. Jika pernyataan SQL tampak mencurigakan bagi saya, saya akan menjalankannya melalui Explain Plan dan/atau mengatur waktu pernyataan untuk memastikannya berjalan dengan baik.
- Saya meminta Manajer Perusahaan Oracle untuk memperingatkan saya tentang pertikaian sumber daya dalam sistem basis data Pengujian kami. Pernyataan SQL apa pun yang saya lewatkan selama peninjauan kode terkadang dapat ditemukan di sini. Jika saya mendapat peringatan tentang pertengkaran sumber daya, saya akan melompat dan melihat apakah satu atau dua pernyataan SQL menyebabkan masalah. Ini adalah kesempatan terakhir saya untuk menangkap pernyataan SQL sebelum mereka mencapai produksi.
- Saya memanfaatkan Ignite untuk Oracle. Produk ini dari Confio, tetapi Confio sekarang menjadi bagian dari Solarwinds. Biasanya, saya tidak memasang produk vendor, tetapi saya akan membuat pengecualian dalam kasus ini. Hal yang saya sukai dari Ignite adalah saya mengirimkannya melalui email laporan setiap hari Senin. Laporan berisi pelanggar N Teratas berdasarkan waktu tunggu. Butuh beberapa detik untuk melihat laporan ini. Saya mencari bar besar dalam laporan. Pada contoh tangkapan layar di bawah ini, Anda dapat melihat bilah biru yang langsung menarik perhatian Anda. Angka di sebelah kanan adalah nilai id dan jika Anda mengkliknya, Anda bisa mendapatkan teks SQL. Ini adalah cara yang bagus untuk mengidentifikasi pernyataan SQL yang perlu disetel. Ini sangat cepat dan sangat mudah.
Seperti yang Anda lihat, saya mencoba menemukan SQL bermasalah saat sedang dikembangkan, saat berada dalam sistem pengujian kami, dan bahkan setelah mencapai produksi.