পরিবেশ:
আমাদের দুটি 32-বিট উইন্ডোজ সার্ভার 2003 আর 2 মেশিন রয়েছে এসকিউএল সার্ভার 2005 চলমান hardware এডাব্লুইউ এবং / 3 জিবি পতাকাগুলি সক্ষম নয়।
পূর্বনির্ধারিত ইনস্টলেশন চেকলিস্টটি ব্যবহার করে সার্ভারগুলি পাশাপাশি বসানো হয়েছিল এবং উভয় মেশিনে সমস্ত ইনস্টল করা সফ্টওয়্যার একই।
আমরা যাচাই করতে জানি প্রতিটি এসকিউএল সার্ভার ইনস্টলেশন সেটিংস এবং প্যাচ স্তরটি অভিন্ন। একটি পার্থক্য হ'ল দ্রুত মেশিনে টিইএমপিডিবি 400MB এবং ধীর মেশিনে 1.2 গিগাবাইট। তবে, উভয় ক্ষেত্রেই, আমরা কোনও টিইএমপিডিবি বরাদ্দ নিতে দেখছি না।
সমস্যাটি:
এখানে একটি সঞ্চিত প্রক্রিয়া রয়েছে যা একটিতে 2 সেকেন্ডে চালিত হয়, তবে অন্যটিতে 15 মিনিট। অতিরিক্ত 15 মিনিটের সময়, কোনও ডিস্ক কার্যকলাপ নেই, মেমরির ব্যবহারের কোনও পরিবর্তন হয় না, তবে একটি সিপিইউ কোর পুরো সময়টিতে 100% এ পিন থাকে pin
ডাটাবেসগুলি এক থেকে ব্যাক আপ করা এবং অন্যটিতে পুনরুদ্ধার করা সত্ত্বেও এই আচরণটি বজায় থাকে।
যেহেতু এটা একটি সংরক্ষিত পদ্ধতি, কার্যকলাপ মনিটর এবং প্রোফাইলার আমাদের সম্পর্কে কোনও বিবরণে দেখাতে না যেখানে সঞ্চিত পদ্ধতির মধ্যে এই উচ্চ CPU- র কার্যকলাপ স্থান গ্রহণ করা হয়।
প্রশ্নটি:
আমাদের আর কী তাকানো উচিত?
ফলোআপ:
নিম্নলিখিত কার্সার সংজ্ঞার জন্য ফেচ নেক্সট স্টেটমেন্টগুলিতে অলসতা দেখা দেয়:
DECLARE C CURSOR FOR
SELECT X, Y
FROM dbo.A
WHERE X NOT IN (SELECT X FROM dbo.B)
AND Z <=0
...
<snip>
...
FETCH NEXT FROM C INTO @X, @Y
FETCH NEXT FROM C INTO @X, @Y
...
FETCH এর প্রতিটি বিবৃতি - কেবলমাত্র প্রায় 1000 সারি সম্বলিত একটি টেবিলে - প্রায় 7.25 মিনিটের প্রয়োজন। (না, আমি জানি না কেন এটি পর পর দুটি করে, বিকাশকারীদের জিজ্ঞাসা করা দরকার তবে এটি উভয় সার্ভারে সঠিকভাবে চালিত হয়)।
ভার্চুয়াল রিডের চেয়ে মনে হয় যে ভার্চুয়াল রিডস আসলেই বেশি I'm