নীচের মত একটি কোয়েরি যেমন কোনও সারি ফেরত না দেওয়ার গ্যারান্টিযুক্ত, আমাদের সার্ভারগুলির মধ্যে 0 থেকে 160 সেকেন্ড পর্যন্ত যে কোনও কিছু নেয়:
select col1, col2, col3
from tab1
where 0 = 1
দুই সপ্তাহ আগে, 48 ঘন্টার ব্যবধানে এটি ছয়বার হয়েছিল। গত সপ্তাহে একই ক্যোয়ারীটি ~ 0 সেকেন্ড নিয়েছিল। আমার কাছে আমাদের অ্যাপ্লিকেশনটির এসকিউএলগুলির লগ রয়েছে তবে এখনও কোনও সন্দেহভাজন খুঁজে পাওয়া যায় নি। তদতিরিক্ত, আমি ভেবেছিলাম শীর্ষস্থানীয় 0 / যেখানে 0 = 1 ধরণের কোয়েরি কখনই ডেটা পৃষ্ঠাগুলিতে আঘাত করে না, তাই এটি সারি / পৃষ্ঠা / সারণী-স্তরের ডেটা লকগুলির সাথে প্রতিরোধী হওয়া উচিত? স্কিমার কোনও (পরিচিত) এসকিউএল দ্বারা স্পর্শ করা হয়নি।
যেহেতু সমস্যাটি সামঞ্জস্যপূর্ণ নয় এবং সার্ভারটি খুব ভারী বোঝার মধ্যে রয়েছে আমি এসকিউএল প্রোফাইলার সংযুক্ত করার আগে যা ঘটছে তার পিছনে তত্ত্বটি বুঝতে চাই। এই বিলম্বের সময় অন্যান্য প্রশ্নগুলি সমস্যা ছাড়াই চলে। অ্যাপ্লিকেশনটিতে একটি পরিচিত সমস্যা হ'ল গতিশীলভাবে তৈরি এসকিউএল কোয়েরিগুলির একটি উচ্চ সংখ্যা - 48 ঘন্টা সময়কাল ধরে মোট 850 কে মোট (লগইন) ক্যোয়ারীগুলির প্রায় 200k অনন্য ক্যোয়ারী, এটি কি এই জাতীয় সমস্যার সৃষ্টি করতে পারে?
সার্ভারটি এসকিউএল সার্ভার 2005 স্ট্যান্ডার্ড সংস্করণ, 96 গিগাবাইট র্যাম, সান এবং 4 সিপিইউ / 16 কোরে ডিস্ক চালাচ্ছে। ডাটাবেস ফাইল এবং ফাইলগ্রুপগুলি ভালভাবে অনুকূলিত হয়েছে এবং কোনও সমস্যা হওয়া উচিত নয় (তবে আমরা এটি আলাদাভাবে দেখছি)।
যে কোনও পয়েন্টার যেখানে দেখতে হবে তা প্রশংসিত।
সম্পাদনা: নিখুঁত! এক্সিকিউশন প্ল্যান যুক্ত করতে ক্যোয়ারীটি পুনরায় খেলুন এবং এতে 1 মিনিট 35 সেকেন্ড লেগেছিল। এখানে কার্য সম্পাদনের পরিকল্পনা এবং স্ক্রিনশটটি ক্যোয়ারির সময়কাল দেখায়:

সম্পাদনা 2: দ্বিতীয় রানের জন্য পরিসংখ্যানের সময় বিবরণ। এখনই ধারাবাহিকভাবে ধীর বলে মনে হচ্ছে, তাই আমরা প্রোফাইলার এবং পারফিউম সংযুক্ত হব:
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 97402 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
