এসকিউএল সংকলন / সেকেন্ড একটি ভাল মেট্রিক, তবে কেবলমাত্র ব্যাচ অনুরোধ / সেকেন্ডের সাথে মিলিত হলে । নিজেই, প্রতি সেকেন্ডে সংকলনগুলি আপনাকে সত্যি বেশি কিছু বলে না।
আপনি 170 দেখতে পাচ্ছেন sec তবে যদি আপনার ব্যাচের রেকর্ড প্রতি সেকেন্ডটি প্রায় 5000 পরিমাপ করে তবে সেকেন্ডে 170 সংকলন মোটেও খারাপ নয়। এটি থাম্বের একটি সাধারণ নিয়ম যা সংকলন / সেকেন্ড মোট ব্যাচের অনুরোধ / সেকেন্ডের চেয়ে 10% বা তার চেয়ে কম হওয়া উচিত ।
আপনি যদি সত্যই ক্যাশে হচ্ছেন তা খতিয়ে দেখতে চান, তবে উপযুক্ত ডিএমভিগুলি ব্যবহার করে নিম্নলিখিত কোয়েরিটি চালান:
select
db_name(st.dbid) as database_name,
cp.bucketid,
cp.usecounts,
cp.size_in_bytes,
cp.objtype,
st.text
from sys.dm_exec_cached_plans cp
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
সমস্ত একক ব্যবহারের পরিকল্পনা পেতে (একটি গণনা):
;with PlanCacheCte as
(
select
db_name(st.dbid) as database_name,
cp.bucketid,
cp.usecounts,
cp.size_in_bytes,
cp.objtype,
st.text
from sys.dm_exec_cached_plans cp
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
)
select count(*)
from PlanCacheCte
where usecounts = 1
সমস্ত ক্যাশেড পরিকল্পনার তুলনায় আপনি কতগুলি একক-ব্যবহারের গণনা পরিকল্পনার অনুপাত পেতে:
declare @single_use_counts int, @multi_use_counts int
;with PlanCacheCte as
(
select
db_name(st.dbid) as database_name,
cp.bucketid,
cp.usecounts,
cp.size_in_bytes,
cp.objtype,
st.text
from sys.dm_exec_cached_plans cp
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
where cp.cacheobjtype = 'Compiled Plan'
)
select @single_use_counts = count(*)
from PlanCacheCte
where usecounts = 1
;with PlanCacheCte as
(
select
db_name(st.dbid) as database_name,
cp.bucketid,
cp.usecounts,
cp.size_in_bytes,
cp.objtype,
st.text
from sys.dm_exec_cached_plans cp
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
where cp.cacheobjtype = 'Compiled Plan'
)
select @multi_use_counts = count(*)
from PlanCacheCte
where usecounts > 1
select
@single_use_counts as single_use_counts,
@multi_use_counts as multi_use_counts,
@single_use_counts * 1.0 / (@single_use_counts + @multi_use_counts) * 100
as percent_single_use_counts
কোনও এসকিউএল সার্ভার ট্রেস-এর মাধ্যমে প্রাপ্ত সময়সীমাগুলির জন্য, এটি পুনর্নির্মাণ ইভেন্টগুলির জন্য উপলভ্য নয়। পরিকল্পনার সংকলন যে সময়কাল বা ব্যথার কারণ হয়ে উঠছে তা দেখতে এতটা তাত্পর্যপূর্ণ নয় কারণ কেস-কেস-কেস পরিস্থিতির জন্য আপনার পক্ষে তেমন কিছুই করা যায় না। সমাধানটি হ'ল পরিকল্পনা পুনরায় ব্যবহারের মাধ্যমে সংকলন এবং পুনঃসংশোধন সীমাবদ্ধ করার চেষ্টা করা (প্যারামিটারাইজড ক্যোয়ারী, সঞ্চিত প্রক্রিয়া ইত্যাদি)।