Sqlde geliştirme yaparken şu tarz bir hata mesajı alırsanız,
30 Ekim 2011 Pazar
23 Ekim 2011 Pazar
Sql'de Recompile
Sql'de Stored Procedure yazarken arka planda üç temel iş gerçekleşir. Bunlar Parsing,Compiling ve Executing'dir. Kısaca neler olduklarını açıklamak gerekirse,
Parsing, yazdığımız kodun syntax olarak hata içerip içermediğinin kontrol zamanıdır,
Compiling, yazdığımız prosedürün execution planını oluşturup bunu geçici hafızaya atılma zamanıdır,
Executing ise anlaşılacağı üzere kodun çalıştığı anda DML'e bildirilen zamandır.
İşte compiling zamanında execution plan'ın hafızaya atılması bazı durumlarda kodumuza hız katabilir. Fakat bazı durumlarda da tablo yapıları veya indeksler çok sık değiştiğinden bu hafızaya atılan execution plan'lar yarar yerine zarar getirir. Bunu nasıl anlarız? ilk derlemede prosedürümüz hızlı çalışıp, sonraki çalıştırmalarda gözle görülür bir yavaşlama varsa, nedeni bu olabilir. Bundan kaçınmak için yapmamız gereken RECOMPILE keyword'unu prosedüre tanıtmak. Kısaca kullanılışı;
Böylece Recompile yazarak, artık execution plan'ın hafızaya atılmasını engelledik.
Parsing, yazdığımız kodun syntax olarak hata içerip içermediğinin kontrol zamanıdır,
Compiling, yazdığımız prosedürün execution planını oluşturup bunu geçici hafızaya atılma zamanıdır,
Executing ise anlaşılacağı üzere kodun çalıştığı anda DML'e bildirilen zamandır.
İşte compiling zamanında execution plan'ın hafızaya atılması bazı durumlarda kodumuza hız katabilir. Fakat bazı durumlarda da tablo yapıları veya indeksler çok sık değiştiğinden bu hafızaya atılan execution plan'lar yarar yerine zarar getirir. Bunu nasıl anlarız? ilk derlemede prosedürümüz hızlı çalışıp, sonraki çalıştırmalarda gözle görülür bir yavaşlama varsa, nedeni bu olabilir. Bundan kaçınmak için yapmamız gereken RECOMPILE keyword'unu prosedüre tanıtmak. Kısaca kullanılışı;
CREATE PROCEDURE SatisRapor
WITH RECOMPILE
AS
....Böylece Recompile yazarak, artık execution plan'ın hafızaya atılmasını engelledik.