একটি নির্দিষ্ট ধরণের প্রত্যাশা দেওয়া, আপনি কীভাবে আবিষ্কার করবেন যে কোন প্রশ্নগুলি কোনও প্রোডাকশন এসকিউএল ২০০৮ আর 2 সার্ভারে নিরাপদে অপেক্ষা করছে?
এই বিশেষ ক্ষেত্রে আমি ভাবছি async_network_io
।
একটি নির্দিষ্ট ধরণের প্রত্যাশা দেওয়া, আপনি কীভাবে আবিষ্কার করবেন যে কোন প্রশ্নগুলি কোনও প্রোডাকশন এসকিউএল ২০০৮ আর 2 সার্ভারে নিরাপদে অপেক্ষা করছে?
এই বিশেষ ক্ষেত্রে আমি ভাবছি async_network_io
।
উত্তর:
এগুলি পরীক্ষা করার জন্য আমার প্রিয় উপায় হ'ল অ্যাডাম মাচানিকের দুর্দান্ত এসপি_হোআইএসএকটিভ স্টোরড প্রোক। এটি কীভাবে ব্যবহার করতে হয় তার একটি ভিডিও এবং কোডটি ডাউনলোড করার জন্য একটি লিঙ্ক:
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
ক্যাচটি হ'ল ফলটি যাচাই করতে আপনাকে পর্যায়ক্রমে এটি চালাতে হবে। আপনি যদি এই ডেটা পর্যায়ক্রমে আপনার জন্য জড়ো করতে চান, তবে sp_WhoIs ক্রিয়ামূলক ফলাফলগুলি একটি টেবিলে ক্যাপচার করার জন্য কেন্দ্র লিটলের টিউটোরিয়ালটি দেখুন:
http://www.littlekendra.com/2011/02/01/whoisactive/
অবশেষে, যখনই কোনও প্রশ্ন অ্যাসিঙ্ক_নেটওয়ার্ক_ওর জন্য অপেক্ষা করে তখন আপনি কিছু গুলি চালাতে চান, আপনি এক্সটেন্ডেড ইভেন্টস নামে একটি নতুন সরঞ্জাম ব্যবহার করতে পারেন। এটি এসকিউএল সার্ভার ইঞ্জিনের ভিতরে ডিবাগ পয়েন্টগুলির মতো যেখানে আপনি যাদু ঘটাতে পারেন। সত্যই, 2008 সালে এই মুহূর্তে ব্যবহার করা কিছুটা বেদনাদায়ক।
'async_wait_io' অপেক্ষা করার ধরণ নয়। সম্ভাব্য ASYNC% অপেক্ষার প্রকারগুলি হ'ল:
অপেক্ষার প্রকারের জন্য কয়েকটি ভাল লিঙ্ক:
আমার বর্তমান অপেক্ষাগুলি সন্ধানের জন্য ক্যোয়ারিতে যেতে:
SELECT req.session_id
,blocking_session_id
,ses.host_name
,DB_NAME(req.database_id) AS DB_NAME
,ses.login_name
,req.status
,req.command
,req.start_time
,req.cpu_time
,req.total_elapsed_time / 1000.0 AS total_elapsed_time
,req.command
,req.wait_type
,sqltext.text
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
JOIN sys.dm_exec_sessions ses
ON ses.session_id = req.session_id
WHERE req.wait_type IS NOT NULL
--WHERE req.wait_type = '?'