Penghidu Parametrik dalam EF 6 Dilawati Semula
Walaupun pertanyaan dinamik menawarkan fleksibiliti, saiznya boleh membawa kepada isu prestasi dalam EF 6. Penyebab biasa adalah parameter sniffing, di mana pelan pertanyaan dicache berdasarkan parameter pelaksanaan awal, yang membawa kepada rancangan tidak cekap apabila parameter berbeza-beza.
Mengalamatkan Parameter Sniffing dengan EF 6
Untuk mengatasi parameter sniffing, adalah penting untuk memaklumkan kepada enjin pangkalan data untuk melengkapkan semula pertanyaan dengan setiap pelaksanaan . Walaupun mengemas kini statistik pangkalan data adalah amalan standard, ia mungkin tidak menangani isu sepenuhnya.
Menggabungkan "OPTION RECOMPILE" dengan EF 6
Nasib baik, EF 6 menyediakan mekanisme untuk memanipulasi Perintah SQL sebelum pelaksanaan. Satu teknik sedemikian melibatkan penggunaan ciri pemintasan.
Pelaksanaan melalui Pemintasan
Sampel kod berikut menggambarkan pelaksanaan kelas OptionRecompileHintDbCommandInterceptor:
public class OptionRecompileHintDbCommandInterceptor : IDbCommandInterceptor { ... private static void addQueryHint(IDbCommand command) { ... } }
Pemintas ini menambah pembayang OPTION RECOMPILE pada pernyataan SQL yang bermula dengan "pilih" dan belum lagi mengandungi pembayang.
Penggunaan
Untuk memanfaatkan pemintas ini, cuma tambah kod berikut pada permulaan aplikasi:
DbInterception.Add(new OptionRecompileHintDbCommandInterceptor());
Dengan menggunakan pendekatan ini, anda boleh memaksa enjin pangkalan data untuk menyusun semula pertanyaan pada setiap pelaksanaan, mengurangkan parameter menghidu dan meningkatkan prestasi pertanyaan.
Atas ialah kandungan terperinci Bagaimanakah EF 6 Interception Boleh Mengurangkan Isu Prestasi Menghidu Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!