সঞ্চিত পদ্ধতিগুলি কীভাবে প্রোফাইল করবেন


26

আমি এসকিউএল সার্ভার 2012 ব্যবহার করছি এবং কীভাবে সঞ্চিত প্রক্রিয়াগুলি প্রোফাইল করব তা ভাবছিলাম

উদাহরণস্বরূপ প্রোফাইলার স্টোরেজ পদ্ধতিতে প্রতিটি পৃথক এসকিউএল বিবৃতি ক্যাপচার করতে পারে, এটি কী, এবং এগুলি চালাতে কতক্ষণ সময় নেয়?

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

উত্তর:


27

কেভিনের উত্তরে এসকিউএল ট্রেস / এসকিউএল প্রোফাইলারগুলিতে কোন ইভেন্টগুলি ক্যাপচার করা হবে তা বর্ণনা করে। এই উত্তরে কিছুটা প্রসারিত করার জন্য - SP:StmtCompletedস্টোরেজ প্রক্রিয়া সম্পন্ন হওয়ার মধ্যে প্রতিটি বিবৃতি আপনাকে শোনাবে, যেমন শোনাচ্ছে।

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

এই তথ্যটি বর্ধিত ইভেন্টগুলির মাধ্যমে উপলভ্য থাকলেও আমি এখনও এসকিউএল ট্রেস (এসকিউএল প্রোফাইলারের পিছনে প্রযুক্তি) ব্যবহার করার পরিবর্তে কোনও ফাইলের সন্ধানের পরামর্শ দেব(আপনি যদি এক্সটেন্ডেড ইভেন্টগুলি শিখতে এবং ব্যবহারে বিনিয়োগ করতে চান তবে এটিই যাওয়ার উপায় হবে, এসকিউএল সার্ভারের ভবিষ্যতের সংস্করণে এসকিউএল ট্রেস চলে যাবে এবং আমাদের যা কিছু থাকবে তা বর্ধিত ইভেন্ট)। আপনি কেবল প্রয়োজনীয় যা ক্যাপচার করছেন তা নিশ্চিত করার জন্য আমি যতটা সম্ভব পটভূমির আওয়াজ কলাম ফিল্টার বোতামের মাধ্যমে ফিল্টার করার পরামর্শ দেব। কেভিন তার ভাল উত্তরে বর্ণিত পদক্ষেপগুলি ব্যবহার করে আপনি প্রোফাইলার সরঞ্জাম দিয়ে আপনার ট্রেস সেটআপ করতে পারেন এবং তারপরে সেই একই জিইউআই থেকে একটি ফিল্টার যুক্ত করতে পারেন। তারপরে আপনি ট্রেসটিকে স্ক্রিপ্ট হিসাবে রফতানি করতে পারেন এবং এসকিউএল সার্ভারে সেই স্ক্রিপ্টটি কোনও ফোল্ডারে এমন কোনও ফাইলে ট্রেসিংয়ে চালাতে পারেন যাতে ডাটাবেস বা লেনদেনের লগ ফাইল থাকে না। রফতানি করতে, আপনি কেবল নিজের ট্রেস সেটআপ করবেন, আপনি যা চান সেটি ক্যাপচার করছেন তা নিশ্চিত করার জন্য এটি কয়েক সেকেন্ডের জন্য চালান, এটি বন্ধ করুন এবং তারপরে মেনু বারে যান এবং File->Export-> Script Trace Definitionএবং ফাইলটি সংরক্ষণ করুন। তারপরে আপনি যে সার্ভারটি ট্রেস করতে চান তা সেই ফাইলটিকে নতুন ক্যোয়ারী উইন্ডোতে খুলুন। আপনি এখনই এখানে শুরু করে তৈরি করেছেন যে স্ক্রিপ্টটিতে ব্যবহৃত বিভিন্ন সঞ্চিত পদ্ধতির জন্য সহায়তা নিবন্ধগুলি দেখে আপনি তৈরি করেছেন এই স্ক্রিপ্টের বিকল্পগুলি এবং সংজ্ঞাগুলি সম্পর্কে আরও দেখতে পাবেন ।

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


2
যখন কোনও এসপি: স্টেমটকম্পটেড সবেমাত্র কোয়েরি পাঠ্যে "- এনক্রিপ্ট করা পাঠ্য" দেখায় তখন কী হবে? কোন টেবিল অ্যাক্সেস করা হচ্ছে তা আমরা কীভাবে খুঁজে বের করতে পারি?
Brain2000

আপনার @ Brain2000 এর মতোই সমস্যা হচ্ছে ....
wenzzzel

21

আপনি এসকিউএল সার্ভার প্রোফাইলারের মাধ্যমে সঞ্চিত পদ্ধতিতে স্বতন্ত্র বিবৃতিগুলি ক্যাপচার করতে পারেন। এটি করার জন্য, আপনার ইভেন্টস নির্বাচন ট্যাবে, "সমস্ত ইভেন্টগুলি দেখান" চেকবক্সটি ক্লিক করুন। তারপরে, সজ্জিত পদ্ধতি বিভাগে স্ক্রোল করুন এবং এসপি: StmtCompleted এর পাশের বাক্সটি চেক করুন । আপনার যদি এসকিউএল: ব্যাচস্টার্টেড এবং এসকিউএল: ব্যাচ কমপ্লিট ইভেন্টগুলি নির্বাচিত থাকে তবে আপনি এসপিআইডি দ্বারা সমস্তগুলি বেঁধে স্টোরেজ প্রক্রিয়া চালনার শুরু থেকে শেষের চিত্রটি পেতে পারেন।

আপনার ধীরে ধীরে সম্পাদনকারী পদ্ধতির জন্য আপনি কোনও ক্যোয়ারী পরিকল্পনা পেতে পারেন কিনা তা দেখার জন্য পরিকল্পনার ক্যাশেটি দেখার জন্য এটিও সহায়তা করতে পারে। আপনি এই জাতীয় কিছু দিয়ে শুরু করতে পারেন:

SELECT 
    OBJECT_NAME(st.objectid,st.dbid) AS ObjectName,
    cp.usecounts AS ExecutionCount,
    st.TEXT AS QueryText,
    qp.query_plan AS QueryPlan
FROM 
    sys.dm_exec_cached_plans AS cp
    CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp
    CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st
WHERE 
    cp.objtype = 'Proc'
    AND OBJECT_NAME(st.objectid,st.dbid) = 'YourStoredProcedure';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.