এসকিউএল সার্ভার বেসলাইন পরীক্ষার জন্য পদক্ষেপগুলির সংজ্ঞায়িত তালিকা?


10

এসকিউএল সার্ভার ব্যবহার করে এমন কোনও অ্যাপ্লিকেশনটির জন্য পারফরম্যান্স পরীক্ষা / বেসলাইন চালানোর আগে, উদাহরণটি পুনরায় আরম্ভ না করেই উদাহরণটি একটি "পরিষ্কার" অবস্থায় সেট করতে সক্ষম হতে চাই। আমি যে পদক্ষেপগুলি অনুসরণ করতে চাইছি তা রয়েছে তবে আমি একটি নির্দিষ্ট তালিকা তৈরি করতে চাই যা সঠিক ক্রমযুক্ত এবং এর কোনও অপ্রয়োজনীয় পদক্ষেপ নেই।

পদক্ষেপের এই তালিকাটি কি এসকিউএল সার্ভারকে একটি "পরিষ্কার" অবস্থায় সেট করার কাজটি সম্পাদন করে?

ক্রমটি কি যৌক্তিক / সঠিক?

কোন অপ্রয়োজনীয় পদক্ষেপ আছে?

CHECKPOINT              -- Write all dirty pages

DBCC DROPCLEANBUFFERS   -- All should be clean after checkpoint?

DBCC FREEPROCCACHE      -- Clear the plan cache

DBCC FREESYSTEMCACHE    -- Is this necessary after FREEPROCCACHE?

DBCC FREESESSIONCACHE   -- May not be necessary if distributed queries aren't used, but want to catch all scenarios

EXEC SP_UPDATESTATS     -- Refresh stats

'BEGIN TESTING!'

5
এফওয়াইআই, এটি DROPCLEANBUFFERSপরীক্ষার জন্য দুর্দান্ত তবে সর্বদা নির্ভুল নয়। আপনি যদি একটি উচ্চ-ভলিউম টেবিলটি উল্লেখ করছেন তবে এটি সম্ভবত আপনার প্রায়শই স্মৃতিতে পৃষ্ঠাগুলি থাকবে এবং আইও সময়টি সেই ক্যোয়ারিতে কোনও বড় কারণ হবে না। এই ক্ষেত্রে বাস্তবের চেয়ে আপনি আইও-তে বেশি ওজন রেখেছেন।
জেএনকে

আপনি কি উত্পাদন পরিবেশে বা কোনও বিচ্ছিন্ন পরীক্ষার পরিবেশে পরীক্ষার কথা বলছেন?
bopapa_1979

যে কেউ প্রোড পরিবেশে পরীক্ষা করে তাকে বরখাস্ত করা উচিত। :) হ্যাঁ, পরীক্ষার পরিবেশগুলি।
এরিক হিগিংস

উত্তর:


5

প্রথমে, আমি পিছনে ফিরে এসে জিজ্ঞাসা করব পরীক্ষার সময় আপনি কী পরিমাপগুলি সংগ্রহ করার পরিকল্পনা করছেন। উদাহরণস্বরূপ, যদি আপনি ক্যোয়ারী অনুসারে যৌক্তিক পাঠগুলি গণনা করছেন তবে আপনাকে ক্যাশে মুক্ত করার দরকার নেই। লজিক্যাল রিডের ব্যবহারের আমি একটি বড় অনুরাগী কারণ এটি ডেটা ক্যাশেড বা ডিস্কে থাকা স্বাধীন কিনা - এবং উত্পাদনে, কোনও ক্যোয়ারীর ডেটা ক্যাশে হবে কিনা তা অনুমান করা শক্ত (আপনি মেমরির পুরো ডাটাবেসটি ক্যাশে না করলে) । আপনি যদি লজিক্যাল রিডকে হ্রাস করতে টিউন করেন তবে ডেটা ক্যাশে রয়েছে কিনা তা অ্যাপ্লিকেশনটি দ্রুত চলে।

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


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

ব্রেন্ট, আপনি কি আপনার পরীক্ষায় সিপিইউ অ্যাকাউন্টে নিচ্ছেন?
একে

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

@ অ্যালেক্সকুজন্তসভ আমি পরীক্ষার ক্ষেত্রে এক নই, আসলে - এরিকই সেই প্রশ্নটি করেছিলেন। আমি যখন এই ধরণের কাজ করি, তখন আমি সামগ্রিকভাবে সার্ভারের পাশাপাশি ক্যোয়ারী স্তরে সিপিইউ মেট্রিক্সকে লক্ষ্য করি।
ব্রেন্ট ওজার

আমরা একটি তৃতীয় পক্ষের লোড জেনারেটর ব্যবহার করি (এবং লোড পরীক্ষার বিকাশের জন্য একটি পুরো সময়ের ব্যক্তি নিবেদিত থাকে)। সুতরাং আমার পরীক্ষাগুলি লেনদেন, সিকোয়েন্স, # ব্যবহারকারীদের #, অ্যাপে সম্পাদিত সঠিক পদক্ষেপগুলি ... সব কিছুর জন্য নির্ভুল। সুতরাং অগত্যা আমার এসকিউএল ড্যাশবোর্ড টাইপ মেট্রিকগুলি মোটেও দেখার দরকার নেই। লোড টেস্ট সফ্টওয়্যারটি অ্যাপ্লিকেশন মডিউলগুলির জন্য মিলিসেকেন্ডে প্রতিক্রিয়া সময় ট্র্যাক করে। সুতরাং একটি ডিবি পুনরুদ্ধার করা ভাল ধারণা is আমি পরীক্ষার প্রতিটি রাউন্ডের আগে যে "ক্লিন স্লেট" রাষ্ট্রটি আমি চাইছি তা সম্পাদন করছি তা নিশ্চিত হওয়ার জন্য আমি যে অন্যান্য পদক্ষেপগুলি করছি তা স্যানিটি করতে হবে।
এরিক হিগিংস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.