আইডেন্টিকাল (?) এসকিউএল সার্ভার 2005 মেশিন; ক্যোয়ারী এক থেকে 2 সেকেন্ড নেয়, অন্যদিকে 15 মিনিট


12

পরিবেশ:

আমাদের দুটি 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


কীভাবে dbo.B রেকর্ড হতে পারে এবং dbo.BX ইনডেক্স করা হয়?
মার্ক স্টোরী-স্মিথ

1
আমি যদি জানতে আগ্রহী যে আপনি যদি এখানে যান তবে পারফরম্যান্সের পার্থক্য থাকে: dbo.ax থেকে dbo.ay নির্বাচন করুন dbo.a বাম বাহিরের বাইরের জোড় dbo.b এ dbo.b নির্বাচন করুন যেখানে dbo.bx নাল এবং z <= 0
ডিফোর্ড 42

আরও একটি ভাবনা মিশ্রণে ফেলুন। আপনি কি নিশ্চিত যে কার্সার আনার কারণে মন্দাটি হয়েছে? আপনি কি এটি নির্ধারণ করছেন কার্যকর করার পরিকল্পনা থেকে (যা প্রায় সমস্ত প্রাক্কলন অনুসারে) বা প্রোফাইল ট্রেস থেকে?
মার্ক স্টোরী-স্মিথ

এটি একটি প্রোফাইল ট্রেস থেকে।
ryandenki

ফাঁসির পরিকল্পনা কি একই রকম? এটি সম্ভবত সম্ভব যে তাদের মধ্যে একটি খারাপ প্রয়োগের পরিকল্পনা ব্যবহার করছে।
জেন

উত্তর:


7

ওয়েটস এবং কুইউসের মতো পারফরম্যান্স ট্রাবলশুটিং পদ্ধতি ব্যবহার করে উচ্চ সিপিইউ খরচ হওয়ার কারণটি সনাক্ত করা যায়, তবে বাধাটি চিহ্নিত হওয়ার পরে উপযুক্ত পদক্ষেপের সুপারিশ করা যেতে পারে।


6

এসকিউএল সার্ভার অন্য বাক্সে একটি পৃথক পরিকল্পনা বেছে নিচ্ছে।

পুনরুদ্ধারটি সাধারণত পরিসংখ্যানের ভিত্তিতে সমস্যাগুলি সরিয়ে দেবে, তাই আমি সার্ভারের পার্থক্যগুলিতে নজর দেব।

কিছু মোটা চেক আগে। ধরে নিবেন না: চেক করুন

  • এসকিউএল সার্ভার সেটিংস sys.configration- তে যেমন সর্বাধিক ডিগ্রি বা সমান্তরালতাতে পরীক্ষা করে দেখুন
  • চালুর সময় কোনও এএনএসআই সেটিংস আলাদা কিনা তা দেখতে ডিবিসিসির ব্যবহারকারীরা রান করুন (এএনএস সেটিংস নির্বাচিত পরিকল্পনাকে প্রভাবিত করতে পারে)
  • কোনও সমস্যা আছে কিনা তা দেখতে উইন্ডোজ এবং এসকিউএল সার্ভার লগগুলি পরীক্ষা করুন

তারপরে রিমসের উত্তর অনুসারে গভীর প্রান্তে ঝাঁপুন।


ইঙ্গিতগুলির জন্য ধন্যবাদ। উভয় সিস্টেমে সিএসসিফাইগ্রেশন এবং ডিবিসিসি ব্যবহারকারীর নাম একই রকম। কোনও উইন্ডোজ বা এসকিউএল সার্ভার লগগুলিতে কোনও ত্রুটি বা সতর্কতা নেই।

1
এবং তারা কি অভিন্ন ডাটাবেস বিন্যাস চালানো? (সূচী পুনর্নির্মাণ ইত্যাদি) উপর কোনও প্রশাসক পরিকল্পনা অপ্টিমাইজেশন করছেন না, ডাটাবেসে প্রাসঙ্গিক অবজেক্টের জন্য একই পরিসংখ্যান রয়েছে এবং একই ডিস্ক লেআউট আছে? একই প্যাচ স্তর?
টমটম

হ্যাঁ, একই ডিস্ক, ডিবি লেআউট এবং প্যাচ স্তর। আসলে, দ্রুত মেশিনে থাকা ডাটাবেসটি ধীর মেশিন থেকে পুনরুদ্ধার করা ব্যাকআপ। এবং কোনও অ্যাডমিন পরিকল্পনা নেই যেগুলি পৃথক, যতদূর আমি দেখতে পাচ্ছি।
ryandenki

6

অন্যান্য সমস্ত জিনিস সমান হলে, সম্ভবত (@ জিবিএন এর উত্তর অনুসারে) প্রতিটি সার্ভারে একটি পৃথক সম্পাদন পরিকল্পনা উত্পন্ন করা হচ্ছে। একাডেমিক অনুশীলন হিসাবে, উভয় পরিকল্পনা তাই প্রতিটি সার্ভারে পরিকল্পনার ক্যাশে থেকে তাদের ধরে নেওয়া এবং সম্ভব হলে এগুলিকে আপনার প্রশ্নে যুক্ত করা দেখতে আকর্ষণীয় হবে। তারপরে আমরা পরিকল্পনাগুলির পার্থক্যগুলি সনাক্ত করতে পারি যা পারফরম্যান্সে এত বড় বৈচিত্র ঘটায়।

দ্রুত সমাধানের জন্য, ব্যবহারের পরিকল্পনার ইঙ্গিতটি একবার দেখুন । এটি ধীর সার্ভারের সঞ্চিত পদ্ধতিতে দ্রুত সার্ভার থেকে ভাল পরিকল্পনা সংযুক্ত করা সম্ভব করে তোলে।

সম্পাদনা করুন: নিম্নলিখিত আপডেট পুনরায়: কার্সার

আপনার প্রশ্নের অন্য এক প্রকারের চেষ্টা করে দেখতে চেষ্টা করুন যে আমি অন্যান্য উত্তরে উল্লিখিত দেখতে পাচ্ছি না:

DECLARE C CURSOR FOR
    SELECT X, Y
    FROM dbo.A
    WHERE NOT EXISTS (SELECT 1 FROM dbo.B WHERE dbo.B.X = dbo.A.X)
    AND Z <=0
...
<snip>
...
FETCH NEXT FROM C INTO @X, @Y
FETCH NEXT FROM C INTO @X, @Y

এটি ভাল পরামর্শ, আমরা কোয়েরি প্ল্যানগুলি যাচাই করছি। প্রকৃতপক্ষে, সঞ্চিত প্রক্রিয়াটির মন্দাটি একটি কার্সারের সাথে আবদ্ধ বলে মনে হচ্ছে। সম্পাদনা দেখুন।
ryandenki

4

আমাকে কৌতুক করুন, এবং প্রতিস্থাপনের চেষ্টা করুন:

DECLARE C CURSOR FOR
SELECT X, Y
FROM dbo.A
WHERE X NOT IN (SELECT X FROM dbo.B)
AND Z <=0

এর সাথে:

DECLARE C CURSOR FOR
SELECT 
    X, 
    Y
FROM dbo.A

    LEFT OUTER JOIN dbo.B
        ON dbo.A.X = dbo.b.X

WHERE dbo.B.X IS NULL
AND Z <=0

আমি মনে করি না যে এটি আপনার কোডের ফেচ নেক্সট অংশে পারফরম্যান্স সমস্যা হিসাবে প্রকাশিত হবে, তবে আমার কাছে এখনও আমার ক্যাফিন ইঞ্জেকশন লাগেনি। আমার পরামর্শটি চেষ্টা করে দেখুন এবং আমাকে জানান।

আশাকরি এটা সাহায্য করবে,

ঔজ্বল্যহীন


4

আপনার সূচিগুলি পরীক্ষা করুন এবং আপনার সমস্ত পরিসংখ্যান আপডেট করুন। আমার খুব সিমিলার সমস্যা ছিল এবং এটি প্রমাণিত হয়েছিল যে একটি মেশিনের স্ট্যাটাস দুর্বল।


1

আমি এই একই আচরণ দুটিবার অভিজ্ঞতা পেয়েছি এবং প্রতিবার এটি ঠিক করে দেওয়ার জন্য আমি আপনাকে বলব:

১) আমি সঞ্চিত পদ্ধতিতে পুনঃসংযোগ সহ ইঙ্গিতটি যুক্ত করেছি কারণ ক্যাশেড পরিকল্পনাটি ভয়ানক ছিল।

২) আমি সারণী ভেরিয়েবলের পরিবর্তে অস্থায়ী টেবিলগুলি ব্যবহার করার জন্য সঞ্চিত পদ্ধতিটি পরিবর্তন করেছি।

আমি আশা করি যে কেউ সাহায্য করবে। শুভকামনা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.