এখন শেয়ার:
সুচিপত্র লুকান
৩. অ্যাক্টিভিটি মনিটরের প্যানেলগুলি বোঝা
৪. পারফরম্যান্স সমস্যা সমাধানের জন্য অ্যাক্টিভিটি মনিটর ব্যবহার করা
৫. বিকল্প পদ্ধতি: টি-এসকিউএল এর মাধ্যমে অ্যাক্টিভিটি মনিটর ডেটা পাওয়া
৬. কার্যকলাপ পর্যবেক্ষণের সীমাবদ্ধতা এবং বিবেচনা
৭. অ্যাক্টিভিটি মনিটর ব্যবহারের জন্য সেরা অভ্যাস
৮. অ্যাক্টিভিটি মনিটরের সমস্যা সমাধান

1. ভূমিকা

1.1 কি SQL Server কার্যকলাপ মনিটর?

SQL Server অ্যাক্টিভিটি মনিটর হল একটি অন্তর্নির্মিত ডায়াগনস্টিক টুল। SQL Server ম্যানেজমেন্ট স্টুডিও যা সম্পর্কে তথ্য প্রদর্শন করে SQL Server প্রক্রিয়া এবং সার্ভারের কর্মক্ষমতার উপর তাদের প্রভাব। এটি আপনাকে ট্র্যাক করতে দেয় SQL Server প্রক্রিয়া, রিসোর্স ওয়েট মনিটর, ব্যয়বহুল কোয়েরি বিশ্লেষণ এবং I/O প্যাটার্ন পর্যবেক্ষণ—সবই একটি একক ইন্টারফেস থেকে।

SQL Server ক্রিয়াকলাপ নিরীক্ষক

১.২ কেন ব্যবহার করবেন SQL Server কার্যকলাপ মনিটর?

কর্মক্ষমতা সমস্যা সমাধানের সময় অ্যাক্টিভিটি মনিটর আপনার প্রতিরক্ষার প্রথম লাইন হিসেবে কাজ করে। এটি আপনার ডিভাইসে কী ঘটছে তা তাৎক্ষণিকভাবে দৃশ্যমানতা প্রদান করে। SQL Server জটিল T-SQL কোয়েরি বা তৃতীয় পক্ষের সরঞ্জাম ছাড়াই।

এই টুলটি আপনাকে সেশন ব্লক করা, CPU-নিবিড় কোয়েরি, অতিরিক্ত কোয়েরি এক্সিকিউশন এবং I/O বাধার মতো সাধারণ সমস্যাগুলি দ্রুত সনাক্ত করতে সাহায্য করে। যখন ব্যবহারকারীরা রিপোর্ট করেন যে কোনও অ্যাপ্লিকেশন ধীর বা প্রতিক্রিয়াশীল নয়, তখন অ্যাক্টিভিটি মনিটর আপনাকে নির্ধারণ করতে সাহায্য করে যে ডাটাবেস সার্ভার অপরাধী কিনা।

ডাটাবেস প্রশাসকদের জন্য যারা কাজ করেন না SQL Server প্রতিদিন, অ্যাক্টিভিটি মনিটর সার্ভারের কার্যকলাপ বোঝার জন্য একটি সহজ প্রবেশপথ প্রদান করে। এমনকি অভিজ্ঞ ডিবিএ-রাও পারফরম্যান্স তদন্তের জন্য এটিকে তাদের প্রাথমিক পদক্ষেপ হিসেবে ব্যবহার করেন।

১.৩ অ্যাক্টিভিটি মনিটর বনাম অন্যান্য মনিটরিং টুল

অ্যাক্টিভিটি মনিটর মূল্যবান হলেও, অন্যান্য মনিটরিং বিকল্পগুলির সাথে এটি কীভাবে তুলনা করে তা বোঝা গুরুত্বপূর্ণ:

অ্যাক্টিভিটি মনিটর বনাম sp_WhoIsActive: অ্যাক্টিভিটি মনিটর একাধিক প্যান সহ একটি গ্রাফিক্যাল ইন্টারফেস প্রদান করে, যেখানে sp_WhoIsActive হল একটি বিস্তৃত সঞ্চিত পদ্ধতি যা একটি একক ফলাফল সেটে আরও বিস্তারিত তথ্য প্রদান করে। sp_WhoIsActive নির্দিষ্ট অপেক্ষার ধরণগুলি দেখায় যা অ্যাক্টিভিটি মনিটর একসাথে গ্রুপ করে এবং আরও গ্রানুলার ব্লকিং তথ্য প্রদান করে।

অ্যাক্টিভিটি মনিটর বনাম sp_who2: ঐতিহ্যবাহী sp_who2 কমান্ড মৌলিক সেশন তথ্য দেখায়, কিন্তু অ্যাক্টিভিটি মনিটর অপেক্ষা পরিসংখ্যান, ব্যয়বহুল কোয়েরি এবং I/O মেট্রিক্সকে একটি সংগঠিত, ভিজ্যুয়াল ফর্ম্যাটে প্রদর্শন করে আরও এগিয়ে যায়।

অ্যাক্টিভিটি মনিটর বনাম থার্ড-পার্টি টুল: সোলারউইন্ডস ডেটাবেস পারফরম্যান্স অ্যানালাইজারের মতো বাণিজ্যিক মনিটরিং সলিউশনগুলো হিস্টোরিক্যাল ট্র্যাকিং, অ্যালার্টিং এবং অ্যাডভান্সড অ্যানালিটিক্স সুবিধা প্রদান করে, যা অ্যাক্টিভিটি মনিটরে নেই। তবে, অ্যাক্টিভিটি মনিটরের জন্য কোনো অতিরিক্ত খরচ বা ইনস্টলেশনের প্রয়োজন হয় না।

১.৪ ডাটাবেস প্রশাসকদের জন্য মূল সুবিধা

অ্যাক্টিভিটি মনিটরের বেশ কিছু সুবিধা রয়েছে যা এটিকে একটি অপরিহার্য DBA টুল করে তোলে:

  • শূন্য খরচ: অন্তর্নির্মিত হিসাবে SQL Server ম্যানেজমেন্ট স্টুডিও বৈশিষ্ট্য, কোনও লাইসেন্সিং ফি বা স্থাপনার প্রচেষ্টার প্রয়োজন নেই।
  • রিয়েল-টাইম মনিটরিং: বর্তমান সার্ভারের কার্যকলাপ দেখুন যেমনটি ঘটে, ১ সেকেন্ড থেকে ১ ঘন্টা পর্যন্ত কনফিগারযোগ্য রিফ্রেশ ব্যবধান সহ।
  • সমন্বিত পদক্ষেপ: সেশন বন্ধ করতে, কোয়েরির বিবরণ দেখতে, অথবা চালু করতে প্রসেসগুলিতে ডান-ক্লিক করুন SQL Server প্রোফাইলারের ট্রেস—সবই টুলের ভেতর থেকে।
  • একাধিক দৃষ্টিকোণ: পাঁচটি বিশেষায়িত প্যানেলের মাধ্যমে বিভিন্ন কোণ থেকে সার্ভারের স্বাস্থ্য দেখুন, প্রতিটি প্যানেল কর্মক্ষমতার নির্দিষ্ট দিকগুলিতে ফোকাস করে।
  • দ্রুত সমস্যা সমাধান: মিনিটের মধ্যে সবচেয়ে সাধারণ পারফরম্যান্স সমস্যাগুলো শনাক্ত করুন, যা আপনার সমাধানের গড় সময়কে ত্বরান্বিত করবে।
  • প্রবেশে কম বাধা: এই টুলটি কার্যকরভাবে ব্যবহার শুরু করার জন্য কোনও উন্নত জ্ঞানের প্রয়োজন নেই, যদিও আরও গভীরতর SQL Server দক্ষতা ব্যাখ্যায় সাহায্য করে।

২. অ্যাক্টিভিটি মনিটর দিয়ে শুরু করা

অ্যাক্টিভিটি মনিটর কার্যকরভাবে ব্যবহার করার আগে, আপনাকে টুলটি চালু করার পূর্বশর্ত, প্রয়োজনীয় অনুমতি এবং বিভিন্ন পদ্ধতি বুঝতে হবে।

২.১ পূর্বশর্ত এবং সিস্টেমের প্রয়োজনীয়তা

ব্যবহার করা SQL Server অ্যাক্টিভিটি মনিটর, আপনার প্রয়োজন SQL Server আপনার স্থানীয় মেশিনে অথবা জাম্প সার্ভারে ম্যানেজমেন্ট স্টুডিও (SSMS) ইনস্টল করা হয়েছে। অ্যাক্টিভিটি মনিটর টুলটি উল্লেখযোগ্যভাবে পুনরায় ডিজাইন করা হয়েছে SQL Server ২০০৮, তাই এই নির্দেশিকার তথ্য প্রযোজ্য SQL Server 2008 এবং পরবর্তী সংস্করণ।

আপনার অবশ্যই নেটওয়ার্ক সংযোগ থাকতে হবে SQL Server আপনি যে ইনস্ট্যান্সটি মনিটর করতে চান। ক্লাউড-হোস্টেড ডেটাবেসের ক্ষেত্রে, ইনস্ট্যান্সটি অ্যাক্সেস করার জন্য আপনার সাধারণত একটি ভিপিএন সংযোগ বা সঠিকভাবে কনফিগার করা ফায়ারওয়াল নিয়মের প্রয়োজন হবে।

অ্যাক্টিভিটি মনিটর এর সকল সংস্করণের সাথে কাজ করে SQL Server, এক্সপ্রেস, স্ট্যান্ডার্ড এবং এন্টারপ্রাইজ সহ। টুলটি নিজেই আপনার ক্লায়েন্ট মেশিনে SSMS-এর মধ্যে চলে, তাই সার্ভারের রিসোর্সগুলি শুধুমাত্র এটি দ্বারা সঞ্চালিত মনিটরিং কোয়েরিগুলির দ্বারা প্রভাবিত হয়।

২.২ প্রয়োজনীয় অনুমতি

অ্যাক্টিভিটি মনিটর সঠিকভাবে কাজ করার জন্য যথাযথ অনুমতি অপরিহার্য। উপযুক্ত অধিকার ছাড়া, আপনি একটি ফাঁকা ডিসপ্লে দেখতে পারেন অথবা অ্যাক্সেস অস্বীকৃত ত্রুটি পেতে পারেন।

২.২.১ সার্ভার স্টেট দেখার অনুমতি

সার্জারির সার্ভারের অবস্থা দেখুন অ্যাক্টিভিটি মনিটর ব্যবহারের জন্য প্রাথমিক প্রয়োজন হল অনুমতি। এই সার্ভার-স্তরের অনুমতি আপনাকে সমস্ত সক্রিয় প্রক্রিয়া এবং তাদের সাথে সম্পর্কিত মেট্রিক্স দেখতে দেয়।

এই অনুমতি প্রদানের জন্য, একজন সার্ভার প্রশাসক নিম্নলিখিতগুলি সম্পাদন করতে পারেন:

GRANT VIEW SERVER STATE TO [YourLoginName];

ভিউ সার্ভার স্টেট ছাড়া, অ্যাক্টিভিটি মনিটর খুলতে পারে কিন্তু এর কোনও প্যানে কোনও ডেটা প্রদর্শন করতে পারে না।

২.২.২ ডাটাবেস-স্তরের অনুমতি

ডেটা ফাইল I/O ফলকে তথ্য দেখতে, আপনার অতিরিক্ত অনুমতির প্রয়োজন। বিশেষ করে, আপনার নিম্নলিখিত সমন্বয়গুলির মধ্যে একটি থাকতে হবে:

  • ডেটাবেস তৈরি করুন অনুমতি, অথবা
  • যেকোনো ডেটাবেস পরিবর্তন করুন অনুমতি, অথবা
  • যেকোনো সংজ্ঞা দেখুন অনুমতি

এই অনুমতিগুলি অবশ্যই এর সাথে একত্রিত করতে হবে সার্ভারের অবস্থা দেখুন সম্পূর্ণ অ্যাক্টিভিটি মনিটরের কার্যকারিতার জন্য।

২.২.৩ অনুমতি সমস্যা সমাধান

যদি অ্যাক্টিভিটি মনিটর খোলে কিন্তু কোনো ডেটা না দেখায়, তবে এর সবচেয়ে সাধারণ কারণ হলো পারমিশন সংক্রান্ত সমস্যা। সার্ভার লেভেলে আপনার লগইনকে 'ভিউ সার্ভার স্টেট' (VIEW SERVER STATE) পারমিশন দেওয়া আছে কিনা তা যাচাই করুন। নিম্নলিখিত কমান্ডটি চালিয়ে আপনি আপনার পারমিশন যাচাই করতে পারেন:

SELECT * FROM fn_my_permissions(NULL, 'SERVER');

permission_name কলামে 'VIEW SERVER STATE' খুঁজুন। যদি এটি অনুপস্থিত থাকে, তাহলে এটি মঞ্জুর করার জন্য আপনার ডাটাবেস প্রশাসকের সাথে যোগাযোগ করুন।

২.৩ SSMS-এ অ্যাক্টিভিটি মনিটর কীভাবে খুলবেন

SQL Server ম্যানেজমেন্ট স্টুডিও অ্যাক্টিভিটি মনিটর চালু করার জন্য চারটি ভিন্ন পদ্ধতি প্রদান করে, যা আপনার কর্মপ্রবাহের পছন্দের উপর ভিত্তি করে আপনাকে নমনীয়তা প্রদান করে।

২.৩.১ পদ্ধতি ১: টুলবার থেকে

অ্যাক্টিভিটি মনিটর খোলার দ্রুততম উপায় হল টুলবার আইকন ব্যবহার করা:

  1. আপনার সাথে সংযুক্ত করুন SQL Server উদাহরণ SQL Server ম্যানেজমেন্ট স্টুডিও
  2. স্ট্যান্ডার্ড টুলবারে অ্যাক্টিভিটি মনিটর আইকনটি খুঁজুন (এটি সবুজ প্লে বোতাম সহ একটি বার চার্টের মতো)।
  3. অ্যাক্টিভিটি মনিটর চালু করতে আইকনে ক্লিক করুন।

শুরু SQL Server টুবার আইকন থেকে অ্যাক্টিভিটি মনিটর SQL Server ম্যানেজমেন্ট স্টুডিও

যখন আপনি ইতিমধ্যেই SSMS-এ কাজ করছেন এবং দ্রুত সার্ভারের কার্যকলাপ পরীক্ষা করার প্রয়োজন হয়, তখন এই পদ্ধতিটি দ্রুততম।

২.৩.২ পদ্ধতি ২: অবজেক্ট এক্সপ্লোরার থেকে

আপনি সরাসরি অবজেক্ট এক্সপ্লোরার থেকে অ্যাক্টিভিটি মনিটর চালু করতে পারেন:

  1. অবজেক্ট এক্সপ্লোরারে, সনাক্ত করুন SQL Server আপনি যে উদাহরণটি পর্যবেক্ষণ করতে চান।
  2. ইনস্ট্যান্সের নামের উপর ডান ক্লিক করুন।
  3. নির্বাচন করা ক্রিয়াকলাপ নিরীক্ষক প্রসঙ্গ মেনু থেকে

শুরু SQL Server অবজেক্ট এক্সপ্লোরারে ইনস্ট্যান্সে ডান ক্লিক করে অ্যাক্টিভিটি মনিটর করুন SQL Server ম্যানেজমেন্ট স্টুডিও

একাধিক সার্ভারের সাথে সংযোগ স্থাপনের সময় এই পদ্ধতিটি কার্যকর, কারণ এটি নিশ্চিত করে যে আপনি সঠিক উদাহরণটি পর্যবেক্ষণ করছেন।

২.৩.৩ পদ্ধতি ৩: কীবোর্ড শর্টকাট ব্যবহার করা

কীবোর্ড-কেন্দ্রিক ব্যবহারকারীদের জন্য, SQL Server ম্যানেজমেন্ট স্টুডিও একটি ডেডিকেটেড শর্টকাট প্রদান করে:

  1. নিশ্চিত করুন যে SSMS হল সক্রিয় উইন্ডো এবং আপনি একটি ইনস্ট্যান্সের সাথে সংযুক্ত আছেন।
  2. প্রেস জন্য ctrl + অল্টার + A.
  3. অবজেক্ট এক্সপ্লোরারে বর্তমানে নির্বাচিত ইনস্ট্যান্সের জন্য অ্যাক্টিভিটি মনিটর খুলবে।

মনে রাখবেন যে Activity Monitor আপনার Object Explorer-এ যে সার্ভার ইনস্ট্যান্স নির্বাচন করেছেন তার সাথে সংযুক্ত হবে, তাই এই শর্টকাটটি ব্যবহার করার আগে নিশ্চিত করুন যে আপনি সঠিক ইনস্ট্যান্সটি নির্বাচন করেছেন।

২.৩.৪ পদ্ধতি ৪: অপশন মেনু থেকে (স্টার্টআপ কনফিগারেশন)

আপনি যদি প্রায়শই অ্যাক্টিভিটি মনিটর ব্যবহার করেন, তাহলে অ্যাপ্লিকেশনটি চালু করার সময় এটিকে স্বয়ংক্রিয়ভাবে চালু করার জন্য SSMS কনফিগার করতে পারেন:

  1. In SQL Server ম্যানেজমেন্ট স্টুডিও, নেভিগেট করুন টুলস -> অপশন সমূহ.
  2. বিকল্প সংলাপ বাক্সে, প্রসারিত করুন পরিবেশ, এবং তারপর নির্বাচন করুন প্রারম্ভ.
  3. থেকে শুরুতে ড্রপডাউন তালিকা, নির্বাচন করুন অবজেক্ট এক্সপ্লোরার এবং অ্যাক্টিভিটি মনিটর খুলুন.
  4. নির্বাচন করা OK.

স্টার্টআপ কনফিগারেশন সেট করুন SQL Server অ্যাক্টিভিটি মনিটর ইন SQL Server ম্যানেজমেন্ট স্টুডিও

পরের বার যখন আপনি SSMS চালু করবেন এবং কোনও সার্ভারের সাথে সংযোগ করবেন, তখন Activity Monitor স্বয়ংক্রিয়ভাবে অবজেক্ট এক্সপ্লোরারের পাশাপাশি খুলবে।

৩. অ্যাক্টিভিটি মনিটরের প্যানেলগুলি বোঝা

অ্যাক্টিভিটি মনিটর তথ্যকে পাঁচটি সম্প্রসারণযোগ্য প্যানে বিভক্ত করে, প্রতিটি প্যানেল সার্ভারের কার্যকলাপের উপর একটি ভিন্ন দৃষ্টিভঙ্গি প্রদান করে। কার্যকর সমস্যা সমাধানের জন্য প্রতিটি প্যানেল কী প্রদর্শন করে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ।

৩.১ ওভারভিউ ফলক

ওভারভিউ প্যানে চারটি রিয়েল-টাইম গ্রাফ উপস্থাপন করা হয়েছে যা আপনাকে আপনার স্বাস্থ্যের একটি দ্রুত স্ন্যাপশট দেয় SQL Server এই গ্রাফগুলি একটি কনফিগারযোগ্য বিরতিতে আপডেট হয় এবং এক নজরে অস্বাভাবিক প্যাটার্ন সনাক্ত করতে আপনাকে সাহায্য করে।

ওভারভিউ ফলক SQL Server কার্যকলাপ মনিটর।

৩.১.১% প্রসেসর সময়

এই গ্রাফটি দেখায় যে প্রসেসরটি অ-নিষ্ক্রিয় থ্রেডগুলি সম্পাদন করতে কত সময় ব্যয় করে SQL Server সমস্ত CPU জুড়ে উদাহরণ। মানটি প্রতিনিধিত্ব করে SQL Serverএর প্রসেসরের ব্যবহার, পুরো সার্ভারের CPU ব্যবহার নয়।

যদি আপনি ধারাবাহিকভাবে প্রসেসর টাইম ১০০% বা তার কাছাকাছি দেখতে পান, তাহলে আপনার সার্ভারটি সিপিইউ-বাউন্ড। এটি অদক্ষ কোয়েরি, অনুপস্থিত ইনডেক্স, বা অপর্যাপ্ত হার্ডওয়্যার ক্ষমতার ইঙ্গিত দিতে পারে। কোন কোয়েরিগুলো সবচেয়ে বেশি সিপিইউ ব্যবহার করছে তা শনাক্ত করতে Recent Expensive Queries প্যানেটি ব্যবহার করুন।

৩.১.২ অপেক্ষার কাজ

এই মেট্রিকটি কতগুলি কাজ রিসোর্স প্রকাশের জন্য অপেক্ষা করছে তা প্রদর্শন করে, যা এগিয়ে যাওয়ার আগে। কাজগুলি CPU, I/O, মেমোরি, অথবা লকগুলির জন্য অপেক্ষা করতে পারে।

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

৩.১.৩ ডাটাবেস ইনপুট/আউটপুট (এমবি/সেকেন্ড)

এই গ্রাফটি মেমোরি এবং ডিস্কের মধ্যে ডেটা স্থানান্তরের হার দেখায়। এটি পঠন এবং লেখা উভয়কেই একত্রিত করে, প্রতি সেকেন্ডে মেগাবাইটে পরিমাপ করা হয়।

ডাটাবেস I/O-তে স্পাইকগুলি বড় টেবিল স্ক্যান, অত্যধিক লগিং কার্যকলাপ, বা চেকপয়েন্ট অপারেশন সম্পাদনকারী কোয়েরিগুলি নির্দেশ করতে পারে। ডেটা ফাইল I/O প্যান ডাটাবেস এবং ফাইল অনুসারে I/O কার্যকলাপকে ভেঙে দেয়।

৩.১.৪ ব্যাচ অনুরোধ/সেকেন্ড

এই মেট্রিকটি সংখ্যাটি প্রতিনিধিত্ব করে SQL Server প্রতি সেকেন্ডে দৃষ্টান্ত দ্বারা প্রাপ্ত ব্যাচ। একটি ব্যাচ একটি একক বিবৃতি বা একসাথে জমা দেওয়া একাধিক বিবৃতি হতে পারে।

এই মানটি আপনাকে সার্ভারের সামগ্রিক কার্যকলাপের একটি ধারণা দেয়। স্বাভাবিক ব্যবসায়িক সময়ের মধ্যে ব্যাচ অনুরোধের হঠাৎ হ্রাস অ্যাপ্লিকেশন সংযোগ সমস্যা বা ব্যবহারকারীর মুখোমুখি সমস্যা নির্দেশ করতে পারে।

৩.১.৫ রিফ্রেশ ব্যবধান নির্ধারণ করা

অ্যাক্টিভিটি মনিটর কত ঘন ঘন তার ডেটা আপডেট করবে তা আপনি কাস্টমাইজ করতে পারেন:

  1. ওভারভিউ প্যানের যেকোনো জায়গায় ডান-ক্লিক করুন।
  2. নির্বাচন করা রিফ্রেশ ব্যবধান.
  3. পূর্বনির্ধারিত মান থেকে একটি ব্যবধান নির্বাচন করুন: ১ সেকেন্ড, ৫ সেকেন্ড, ১০ সেকেন্ড (ডিফল্ট), ৩০ সেকেন্ড, ১ মিনিট, অথবা ১ ঘন্টা।

রিফ্রেশ ব্যবধান সেট করুন SQL Server অ্যাক্টিভিটি মনিটরের ওভারভিউ প্যানেল।

রিফ্রেশ ব্যবধান ১০ সেকেন্ডের নিচে সেট করলে আপনার সার্ভারে মনিটরিং ওভারহেড বৃদ্ধি পায়। ভারী লোডের অধীনে থাকা প্রোডাকশন সিস্টেমগুলির জন্য, প্রভাব কমাতে ৩০ সেকেন্ড বা তার বেশি ব্যবধান ব্যবহার করার কথা বিবেচনা করুন।

৩.২ প্রক্রিয়া ফলক

প্রসেসস ফলকটি আপনার চলমান সেশন সম্পর্কে তথ্য প্রদর্শন করে SQL Server উদাহরণস্বরূপ, কে কী করছে তা শনাক্ত করার জন্য এবং ব্লকিং সমস্যাগুলি সনাক্ত করার জন্য এই ফলকটি অপরিহার্য।

প্রক্রিয়া ফলক SQL Server কার্যকলাপ মনিটর।

৩.২.১ প্রক্রিয়া তথ্য বোঝা

প্রসেসস প্যানের প্রতিটি সারি সার্ভারে একটি সক্রিয় সেশনের প্রতিনিধিত্ব করে। প্যানটি সমস্ত ডাটাবেস এবং সমস্ত ব্যবহারকারীর সেশন দেখায়, যা আপনাকে সার্ভারের কার্যকলাপের একটি বিস্তৃত দৃশ্য দেয়।

প্রদর্শিত তথ্যের মধ্যে রয়েছে লগইন নাম, অ্যাপ্লিকেশনের নাম, হোস্টনেম, অ্যাক্সেস করা ডাটাবেস এবং বর্তমান কমান্ড। এটি আপনাকে নির্দিষ্ট ব্যবহারকারী বা অ্যাপ্লিকেশনের সাথে ডাটাবেসের কার্যকলাপের সম্পর্ক স্থাপন করতে সাহায্য করে।

৩.২.২ মূল কলামগুলির ব্যাখ্যা

মূল কলামগুলি বোঝা আপনাকে তথ্য প্রক্রিয়াকরণের কার্যকরভাবে ব্যাখ্যা করতে সাহায্য করে:

  • সেশন আইডি: প্রতিটি সংযোগের জন্য একটি অনন্য শনাক্তকারী। সিস্টেম প্রক্রিয়াগুলি নেতিবাচক সেশন আইডি ব্যবহার করে।
  • ব্যবহারকারীর প্রক্রিয়া: এটি একটি ব্যবহারকারীর সেশন (হ্যাঁ) নাকি একটি সিস্টেম প্রক্রিয়া (না) তা নির্দেশ করে।
  • লগইন করুন: সার্জারির SQL Server লগইন অথবা সেশনের সাথে সম্পর্কিত উইন্ডোজ অ্যাকাউন্ট।
  • তথ্যশালা: সেশনের বর্তমান ডাটাবেস প্রেক্ষাপট।
  • কাজের অবস্থা: সেশনটি বর্তমানে কী করছে তা দেখায় (চলমান, স্থগিত, ঘুমানো, ইত্যাদি)।
  • COMMAND: যে ধরণের কমান্ড কার্যকর করা হচ্ছে (SELECT, INSERT, UPDATE, ইত্যাদি)।
  • আবেদন: সংযোগ তৈরি করা অ্যাপ্লিকেশনের নাম।
  • অপেক্ষা করার সময়: সেশনটি কতক্ষণ ধরে (মিলিসেকেন্ডে) রিসোর্সের জন্য অপেক্ষা করছে।
  • অপেক্ষার ধরণ: সেশনটি যে নির্দিষ্ট ধরণের রিসোর্সের জন্য অপেক্ষা করছে।
  • সিপিইউ সময়: এই সেশনটি সংযুক্ত হওয়ার পর থেকে মোট CPU সময় ব্যয় হয়েছে।
  • মেমরি ব্যবহার: বর্তমানে সেশনে বরাদ্দকৃত মেমরির পরিমাণ (KB তে)।

৩.২.৩ ফিল্টারিং এবং বাছাই প্রক্রিয়া

প্রসেসেস প্যানে শক্তিশালী ফিল্টারিং ক্ষমতা রয়েছে যা আপনাকে প্রাসঙ্গিক সেশনগুলিতে ফোকাস করতে সাহায্য করবে:

  1. যেকোনো কলামের হেডারের ড্রপডাউন তীরটিতে ক্লিক করুন।
  2. ফিল্টারটি সেই কলামের জন্য উপলব্ধ মানগুলি দেখায়, যার মধ্যে রয়েছে সব, ঐ খালি, এবং খালি নয়.
  3. শুধুমাত্র সেই সেশনগুলিতে ডিসপ্লে ফিল্টার করতে নির্দিষ্ট মান নির্বাচন করুন।

প্রক্রিয়াগুলি ফিল্টার করুন SQL Server কার্যকলাপ মনিটর।

উদাহরণস্বরূপ, আপনি ফিল্টার করতে পারেন টাস্ক স্টেট শুধুমাত্র চলমান সেশন দেখানোর জন্য, অথবা ফিল্টার করার জন্য ডেটাবেস একটি নির্দিষ্ট ডাটাবেসের বিরুদ্ধে কার্যকলাপ দেখতে।

আপনি যেকোনো কলামের হেডারে ক্লিক করেও সাজাতে পারেন। ঊর্ধ্বক্রমের জন্য একবার ক্লিক করুন, অবরোহের জন্য দুবার ক্লিক করুন।

প্রক্রিয়াগুলিকে এভাবে সাজান SQL Server কার্যকলাপ মনিটর।

৩.২.৪ ব্লকিং এবং ব্লক করা সেশন সনাক্তকরণ

প্রসেসেস ফলক আপনাকে ব্লকিং পরিস্থিতি সনাক্ত করতে সাহায্য করে যেখানে একটি সেশন অন্যদের এগিয়ে যেতে বাধা দেয়:

  • ব্লক করেছেন: যে সেশনটি এই সেশনটি ব্লক করছে তার সেশন আইডি দেখায়। যদি এই কলামে একটি মান থাকে, তাহলে সেশনটি অন্য একটি সেশন দ্বারা আটকে থাকা একটি লকের জন্য অপেক্ষা করছে।
  • হেড ব্লকার: যদি এই সেশনটি অন্যদের ব্লক করে কিন্তু নিজে ব্লক না করে, তাহলে '1' দেখায়। এটিই ব্লকিং চেইনের মূল কারণ।

ব্লকিং এবং ব্লক করা প্রক্রিয়াগুলি দেখান SQL Server কার্যকলাপ মনিটর।

ব্লকিং সমস্যা তদন্ত করতে, প্রথমে হেড ব্লকার (হেড ব্লকার কলামে '1' দিয়ে চিহ্নিত সেশন) শনাক্ত করুন, তারপর এটি কী করছে তা পরীক্ষা করুন এবং এটি সম্পূর্ণ করতে দেবেন নাকি বন্ধ করবেন তা সিদ্ধান্ত নিন।

৩.২.৫ প্রক্রিয়া ক্রিয়া (হত্যা, বিবরণ, ট্রেস)

অ্যাক্টিভিটি মনিটর আপনাকে পৃথক সেশনে পদক্ষেপ নিতে দেয়:

  1. প্রসেসস প্যানে যেকোনো সেশনে ডান-ক্লিক করুন।
  2. আপনি বেশ কয়েকটি বিকল্প দেখতে পাবেন:
    • বিবরণ: এই সেশনে সম্পাদিত শেষ কমান্ডটি দেখায়।
    • হত্যা প্রক্রিয়া: সেশনটি বন্ধ করে দেয় (সাবধানতার সাথে ব্যবহার করুন)।
    • ট্রেস প্রক্রিয়া SQL Server প্রোফাইলার: উত্ক্ষেপণের SQL Server প্রোফাইলার এবং এই সেশন থেকে শুধুমাত্র কার্যকলাপ দেখানোর জন্য স্বয়ংক্রিয়ভাবে ফিল্টার করে।

প্রক্রিয়াগুলিতে ক্রিয়া সম্পাদন করুন SQL Server কার্যকলাপ মনিটর।

বিস্তারিত বিকল্পটি আপনাকে কমান্ড টেক্সট দেখায়, তবে মনে রাখবেন যে এটি হল গত কমান্ড এক্সিকিউট করা হয়েছে—এটি এখনও চলমান নাও থাকতে পারে। ট্রেস বিকল্পটি বিশেষভাবে কার্যকর যখন আপনাকে একটি সেশন এক্সিকিউট করা কমান্ডের সম্পূর্ণ ক্রম দেখতে হবে।

৩.৩ রিসোর্স ওয়েটস প্যান

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

রিসোর্সটি প্যানে অপেক্ষা করছে SQL Server কার্যকলাপ মনিটর।

৩.৩.১ অপেক্ষার পরিসংখ্যান বোঝা

কখন SQL Server রিসোর্স রিকোয়েস্ট (যেমন লক, সিপিইউ টাইম, অথবা মেমোরি) তাৎক্ষণিকভাবে মঞ্জুর করতে না পারলে, রিকোয়েস্টিং টাস্কটি অপেক্ষার অবস্থায় প্রবেশ করে। অপেক্ষার পরিসংখ্যান এই অপেক্ষার সময়কালগুলি ট্র্যাক করে এবং আপনাকে বুঝতে সাহায্য করে যে সার্ভারটি কাজ করার পরিবর্তে কোথায় অপেক্ষা করে সময় ব্যয় করছে।

রিসোর্স ওয়েটস প্যানটি সিস্টেম ডায়নামিক ম্যানেজমেন্ট ভিউ যেমন sys.dm_os_wait_stats এবং sys.dm_exec_requests থেকে ডেটা সংগ্রহ করে। প্রতিটি রিফ্রেশ ব্যবধানে, এটি বর্তমান এবং পূর্ববর্তী স্ন্যাপশটের মধ্যে পার্থক্য গণনা করে, প্রতিটি ওয়েট টাইপের জন্য জমা হওয়ার হার দেখায়।

৩.৩.২ অপেক্ষার বিভাগ

অ্যাক্টিভিটি মনিটর ব্যাখ্যা সহজ করার জন্য শত শত পৃথক অপেক্ষার ধরণকে বিস্তৃত বিভাগে ভাগ করে:

  • CPU- র: CPU সময় উপলব্ধ হওয়ার জন্য অপেক্ষা করা কাজগুলি।
  • বাফার ল্যাচ: মেমরিতে ডেটা পৃষ্ঠাগুলিতে অ্যাক্সেস রক্ষা করে এমন স্বল্প-মেয়াদী সিঙ্ক্রোনাইজেশন অবজেক্টের জন্য অপেক্ষা করে। এই বিভাগে পৃষ্ঠা ল্যাচ অপেক্ষা (PAGELATCH_*) অন্তর্ভুক্ত রয়েছে।
  • লক: অন্যান্য সেশনের জন্য প্রয়োজনীয় লক ধারণকারী সেশনের কারণে অপেক্ষা।
  • স্মৃতি: বাছাই এবং হ্যাশিংয়ের মতো ক্রিয়াকলাপের জন্য প্রয়োজনীয় মেমরি অনুদানের জন্য অপেক্ষা করে।
  • নেটওয়ার্ক ইনপুট/আউটপুট: ক্লায়েন্টদের কাছে ডেটা পাঠানো বা তাদের কাছ থেকে ডেটা গ্রহণের জন্য অপেক্ষা করে।
  • এসকিউএল সিএলআর: কমন ল্যাঙ্গুয়েজ রানটাইম এক্সিকিউশন সম্পর্কিত অপেক্ষা।

এই গ্রুপিংটি দৃশ্যকে সহজ করে তুললেও, এটি গুরুত্বপূর্ণ বিবরণগুলিকেও অস্পষ্ট করে। উদাহরণস্বরূপ, "বাফার ল্যাচ" PAGELATCH_SH, PAGELATCH_UP, এবং PAGELATCH_EX ওয়েটগুলিকে একত্রিত করতে পারে, যার পারফরম্যান্সের উপর বিভিন্ন প্রভাব রয়েছে।

৩.৩.৩ অপেক্ষার সময় এবং অপেক্ষার কার্যাবলী ব্যাখ্যা করা

রিসোর্স ওয়েটস প্যানে প্রতিটি ওয়েট বিভাগের জন্য দুটি মূল মেট্রিক্স প্রদর্শিত হয়:

  • ক্রমবর্ধমান অপেক্ষার সময় (ms): এই অপেক্ষা বিভাগের জন্য বর্তমান রিফ্রেশ ব্যবধানে মোট মিলিসেকেন্ড জমা হয়েছে।
  • অপেক্ষার কাজ: এই বিভাগে বর্তমানে রিসোর্সের জন্য অপেক্ষা করা কাজের সংখ্যা।

অপেক্ষার সময়ের মানটি বিশেষভাবে আকর্ষণীয়। যদি আপনার ১০ সেকেন্ডের রিফ্রেশ ব্যবধান থাকে এবং একটি বিভাগের জন্য ২০,০০০ মিলিসেকেন্ড অপেক্ষার সময় দেখতে পান, তাহলে এটি একাধিক সময় অপেক্ষার ইঙ্গিত দেয় (২০,০০০ মিলিসেকেন্ড / ১০,০০০ মিলিসেকেন্ড = ব্যবধানের মধ্যে ২টি সময় অপেক্ষার গড়)।

৩.৩.৪ কর্মক্ষমতার বাধা চিহ্নিতকরণ

আপনার সার্ভার কোথায় সবচেয়ে বেশি সময় অপেক্ষা করছে তা শনাক্ত করতে রিসোর্স ওয়েটস পেইনটি ব্যবহার করুন:

  1. রিসোর্স ওয়েটিং প্যানটি প্রসারিত করুন।
  2. সর্বোচ্চ অপেক্ষার সময় সংগ্রহকারী অপেক্ষার বিভাগগুলি পর্যবেক্ষণ করুন।
  3. ক্রমানুসার ক্রমবর্ধমান অপেক্ষার সময় কোন সম্পদগুলো সবচেয়ে সীমাবদ্ধ তা দেখতে

পারফরম্যান্স বটলনেক খুঁজে পেতে রিসোর্স ওয়েটস প্যানে ক্রমবর্ধমান অপেক্ষার সময় অনুসারে সাজান।

হাই বাফার ল্যাচ ওয়েট প্রায়শই মেমরিতে ডেটা পৃষ্ঠাগুলির জন্য বিতর্ক নির্দেশ করে, যা I/O বাধা বা tempdb বিতর্ক নির্দেশ করতে পারে। হাই লক ওয়েট ব্লকিং সমস্যার দিকে ইঙ্গিত করে। হাই মেমরি ওয়েট কোয়েরি অপারেশনের জন্য অপর্যাপ্ত মেমরি অনুদান নির্দেশ করে।

৩.৪ ডেটা ফাইল I/O ফলক

ডেটা ফাইল I/O প্যানটি আপনার সার্ভারের প্রতিটি ডাটাবেস ফাইলের জন্য ডিস্ক অ্যাক্টিভিটি দেখায়, যা আপনাকে I/O বাধা সনাক্ত করতে এবং ডিস্ক ব্যবহারের ধরণগুলি বুঝতে সাহায্য করে।

ডেটা ফাইল I/O প্যানে SQL Server কার্যকলাপ মনিটর।

৩.৪.১ I/O মেট্রিক্স বোঝা

ডেটা ফাইল I/O প্যানে প্রতিটি ডাটাবেস ফাইলের জন্য বেশ কয়েকটি মেট্রিক্স প্রদর্শিত হয়:

  • তথ্যশালা: ডাটাবেসের নাম।
  • ফাইলের ধরন: হয় ডেটা (টেবিল এবং সূচী সহ) অথবা লগ (লেনদেনের লগ)।
  • যৌক্তিক নাম: লজিক্যাল ফাইলের নাম যেমনটি সংজ্ঞায়িত করা হয়েছে SQL Server.
  • মেগাবাইট/সেকেন্ড পড়ুন: এই ফাইল থেকে তথ্য পড়ার হার।
  • এমবি/সেকেন্ড লিখিত: এই ফাইলে ডেটা লেখার হার।
  • প্রতিক্রিয়া সময় (ms): এই ফাইলে I/O ক্রিয়াকলাপের গড় প্রতিক্রিয়া সময়।

এই মেট্রিক্সগুলি ওভারভিউ প্যানের মতো একই ব্যবধানে রিফ্রেশ হয়, যা আপনাকে ডিস্ক কার্যকলাপে রিয়েল-টাইম দৃশ্যমানতা দেয়।

৩.৪.২ I/O বাধা চিহ্নিতকরণ

I/O কর্মক্ষমতা সংক্রান্ত সমস্যাগুলি নির্দেশ করে এমন প্যাটার্নগুলির জন্য লক্ষ্য করুন:

  • উচ্চ প্রতিক্রিয়া সময়: ১৫-২০ মিলিসেকেন্ডের বেশি রেসপন্স টাইম ধীরগতির ডিস্ক সাবসিস্টেম নির্দেশ করে। ৫০ মিলিসেকেন্ডের বেশি রেসপন্স টাইম গুরুতর I/O বাধা নির্দেশ করে।
  • ভারসাম্যহীন লোড: যদি একটি ডেটা ফাইল একই ডাটাবেসের অন্যান্য ডেটা ফাইলের তুলনায় উল্লেখযোগ্যভাবে বেশি I/O হার দেখায়, তাহলে লোড বিতরণের জন্য অতিরিক্ত ফাইল যোগ করে আপনি উপকৃত হতে পারেন।
  • অতিরিক্ত টেম্পডিবি কার্যকলাপ: টেম্পডিবি ফাইলগুলিতে উচ্চ আই/ও রেট প্রায়শই বড় মধ্যবর্তী ফলাফল সেট তৈরি করা বা অদক্ষ কার্যকরকরণ পরিকল্পনা ব্যবহার করে কোয়েরিগুলি নির্দেশ করে।

৩.৪.৩ ডাটাবেস ফাইল বিশ্লেষণ

আপনার ডাটাবেসগুলি কীভাবে ডিস্ক রিসোর্স ব্যবহার করে তা বুঝতে ডেটা ফাইল I/O ফলকটি ব্যবহার করুন:

  1. ডেটা ফাইল I/O ফলকটি প্রসারিত করুন।
  2. ক্রমানুসার মেগাবাইট/সেকেন্ড পঠন or এমবি/সেকেন্ড লিখিত সবচেয়ে সক্রিয় ফাইলগুলো শনাক্ত করতে।
  3. ধারাবাহিকভাবে উচ্চ কার্যকলাপ বা দীর্ঘ প্রতিক্রিয়া সময় সহ কোনও ফাইল লক্ষ্য করুন।
  4. কোন কোন কোয়েরিগুলি I/O লোড চালাচ্ছে তা সনাক্ত করতে Recent Expensive Queries প্যানের সাথে এই তথ্যটি ক্রস-রেফারেন্স করুন।

ডেটা ফাইল আই/ও প্যানে সবচেয়ে সক্রিয় ফাইলগুলি শনাক্ত করতে পঠিত বা লিখিত অনুসারে সাজান।

৩.৫ সাম্প্রতিক ব্যয়বহুল প্রশ্নের ফলক

অ্যাপ্লিকেশন পারফরম্যান্সের সমস্যা সমাধানের জন্য ‘Recent Expensive Queries’ প্যানটি প্রায়শই সবচেয়ে মূল্যবান। এটি সেইসব কোয়েরি দেখায় যেগুলো সার্ভারের উল্লেখযোগ্য রিসোর্স ব্যবহার করছে, যা আপনাকে অপটিমাইজেশনের সুযোগ শনাক্ত করতে সাহায্য করে।

সাম্প্রতিক ব্যয়বহুল প্রশ্নের প্যানে SQL Server কার্যকলাপ মনিটর।

৩.৫.১ কোয়েরি মেট্রিক্স বোঝা

অ্যাক্টিভিটি মনিটর প্রতিটি ব্যয়বহুল প্রশ্নের জন্য বেশ কয়েকটি মেট্রিক্স প্রদর্শন করে:

  • সম্পাদন/মিনিট: শেষ মুহূর্তে কতবার কোয়েরিটি সম্পাদিত হয়েছে।
  • সিপিইউ (মিলিসেকেন্ড/সেকেন্ড): এই কোয়েরিটি প্রতি সেকেন্ডে CPU-র সময় ব্যয় করে।
  • ভৌত পাঠ/সেকেন্ড: এই কোয়েরির জন্য প্রতি সেকেন্ডে ফিজিক্যাল ডিস্ক রিডের সংখ্যা।
  • লজিক্যাল লেখা/সেকেন্ড: প্রতি সেকেন্ডে (বাফার ক্যাশে) লজিক্যাল লেখার সংখ্যা।
  • লজিক্যাল রিড/সেকেন্ড: প্রতি সেকেন্ডে লজিক্যাল রিডের সংখ্যা (বাফার ক্যাশে থেকে)।
  • গড় সময়কাল (মিলিসেকেন্ড): এই কোয়েরির গড় কার্যকর সময়।
  • পরিকল্পনার সংখ্যা: এই কোয়েরির জন্য ক্যাশে থাকা এক্সিকিউশন প্ল্যানের সংখ্যা।

এই মেট্রিক্সগুলি আপনাকে কেবল কোন কোয়েরিগুলি ব্যয়বহুল তা বুঝতে সাহায্য করে না, বরং কেন এগুলো দামি এবং কত ঘন ঘন চলে।

৩.৫.২ বাছাইয়ের বিকল্প

বিভিন্ন ধরণের সমস্যা খুঁজে পেতে আপনি Recent Expensive Queries ফলকটিকে বিভিন্ন মেট্রিক্স অনুসারে সাজাতে পারেন:

  1. মেট্রিক অনুসারে সাজানোর জন্য যেকোনো কলামের হেডারে ক্লিক করুন।
  2. সাধারণ বাছাই কৌশলগুলির মধ্যে রয়েছে:
    • সিপিইউ অনুসারে সাজান: সবচেয়ে বেশি প্রসেসর সময় ব্যবহারকারী কোয়েরিগুলো খুঁজুন।
    • সম্পাদন/মিনিট অনুসারে সাজান: অতিরিক্ত ঘন ঘন আসা প্রশ্নগুলি চিহ্নিত করুন।
    • শারীরিক পাঠ অনুসারে সাজান: যেসব কোয়েরি সবচেয়ে বেশি ডিস্ক I/O ঘটায়, সেগুলো খুঁজুন।
    • গড় সময়কাল অনুসারে সাজান: দীর্ঘস্থায়ী প্রশ্নগুলি খুঁজে বের করুন।

কোনও পারফরম্যান্স সমস্যার সমাধান করার সময়, বিভিন্ন দৃষ্টিকোণ পেতে একাধিক কলাম অনুসারে সাজানোর চেষ্টা করুন। মাঝারি CPU ব্যবহার সহ কিন্তু প্রতি মিনিটে অত্যন্ত উচ্চ এক্সিকিউশন সহ একটি কোয়েরি আপনার আসল সমস্যা হতে পারে।

৩.৫.৩ কোয়েরি টেক্সট দেখা

একটি ব্যয়বহুল কোয়েরির পিছনে প্রকৃত SQL স্টেটমেন্ট দেখতে:

  1. Recent Expensive Queries প্যানে কোয়েরি সারিতে ডান-ক্লিক করুন।
  2. নির্বাচন করা কোয়েরি টেক্সট সম্পাদনা করুন.
    সাম্প্রতিক ব্যয়বহুল প্রশ্নের ফলকে কোয়েরি টেক্সট সম্পাদনা করুন।
  3. সম্পূর্ণ SQL স্টেটমেন্ট প্রদর্শন করে একটি নতুন কোয়েরি উইন্ডো খোলে।
    সাম্প্রতিক ব্যয়বহুল প্রশ্নের প্যানে "কোয়েরি টেক্সট সম্পাদনা করুন" নির্বাচন করার পরে নতুন প্রশ্নের উইন্ডো।

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

৩.৫.৪ বাস্তবায়ন পরিকল্পনা বিশ্লেষণ করা

কার্যকরকরণ পরিকল্পনা আপনাকে দেখাবে কিভাবে SQL Server একটি কোয়েরি কার্যকর করে, যা অনুপস্থিত সূচক বা অনুপযুক্ত যোগদানের ধরণের মতো অদক্ষতা প্রকাশ করে:

  1. Recent Expensive Queries প্যানে কোয়েরি সারিতে ডান-ক্লিক করুন।
  2. নির্বাচন করা এক্সিকিউশন প্ল্যান দেখান.
    সাম্প্রতিক ব্যয়বহুল প্রশ্নের ফলকে কার্যকরকরণ পরিকল্পনা দেখান।
  3. SQL Server ম্যানেজমেন্ট স্টুডিও কোয়েরিটি কীভাবে কার্যকর হয় তার একটি গ্রাফিকাল উপস্থাপনা প্রদর্শন করে।
    একটি নতুন উইন্ডোতে কোয়েরির সম্পাদন পরিকল্পনা।

এমন অপারেশনগুলো খুঁজুন যা কোয়েরি খরচের একটি বড় অংশ ব্যয় করে, পরিসংখ্যান বা ইনডেক্স অনুপস্থিত থাকার সতর্কতা এবং অপ্রত্যাশিত টেবিল স্ক্যান অপারেশনগুলো দেখুন। এগুলো প্রায়শই নির্দেশ করে যে অপ্টিমাইজেশনের প্রচেষ্টা কোথায় কেন্দ্রীভূত করা উচিত।

৩.৫.৫ সমস্যাযুক্ত প্রশ্ন সনাক্তকরণ

সাম্প্রতিক ব্যয়বহুল প্রশ্নাবলীর ফলকে এই প্যাটার্নগুলি লক্ষ্য করুন:

  • অতিরিক্ত মৃত্যুদণ্ড: প্রতি মিনিটে হাজার হাজার বার সম্পাদিত একটি কোয়েরি একটি N+1 কোয়েরি সমস্যা নির্দেশ করতে পারে যেখানে অ্যাপ্লিকেশন কোড একটি লুপের ভিতরে ডাটাবেসকে কল করে।
  • উচ্চ শারীরিক পাঠ: উচ্চ শারীরিক পঠন হারের প্রশ্নগুলি ঘন ঘন ডিস্কে আঘাত করছে, যা ইঙ্গিত করছে যে অনুপস্থিত সূচক বা খারাপভাবে লেখা প্রশ্নগুলি রয়েছে।
  • কম সময়কাল সহ উচ্চ CPU: অনেক দ্রুত কোয়েরি যা একসাথে প্রচুর CPU ব্যবহার করে, সার্ভারের কর্মক্ষমতাকে ঠিক ততটাই প্রভাবিত করতে পারে যতটা ধীর কোয়েরি।
  • একাধিক পরিকল্পনা গণনা: অনেক এক্সিকিউশন প্ল্যান সহ কোয়েরিগুলি প্যারামিটার স্নিফিং সমস্যা বা নন-প্যারামিটারাইজড কোয়েরির কারণে প্ল্যান ক্যাশে ব্লোট হতে পারে।

৪. পারফরম্যান্স সমস্যা সমাধানের জন্য অ্যাক্টিভিটি মনিটর ব্যবহার করা

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

৪.১ অতিরিক্ত কোয়েরি সম্পাদন নির্ণয় করা

সবচেয়ে সাধারণ পারফরম্যান্স সমস্যাগুলোর মধ্যে একটি হলো প্রয়োজনের চেয়ে অনেক বেশি ঘন ঘন কোয়েরি চালানো, যা প্রায়শই অ্যাপ্লিকেশন ডিজাইনের ত্রুটির কারণে ঘটে থাকে।

৪.১.১ বারবার জিজ্ঞাসা করা প্রশ্নগুলি সনাক্ত করা

ঘন ঘন সম্পাদিত কোয়েরিগুলি সনাক্ত করতে:

  1. অ্যাক্টিভিটি মনিটর খুলুন এবং প্রসারিত করুন সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলি পেন।
  2. ক্রমানুসার সম্পাদন/মিনিট (প্রতি মিনিটে মৃত্যুদণ্ড)।
  3. উপরে এমন কোন প্রশ্ন খুঁজুন যেখানে মৃত্যুদণ্ডের সংখ্যা অযৌক্তিকভাবে বেশি বলে মনে হচ্ছে।
  4. সন্দেহভাজন প্রশ্নের উপর ডান-ক্লিক করুন এবং নির্বাচন করুন কোয়েরি টেক্সট সম্পাদনা করুন SQL স্টেটমেন্ট পরীক্ষা করতে।

উদাহরণস্বরূপ, যদি আপনি দেখেন একটি সাধারণ SELECT স্টেটমেন্ট প্রতি মিনিটে ৩৭,০০০ বার এক্সিকিউট হচ্ছে, তবে প্রশ্ন করুন অ্যাপ্লিকেশনটির কি সত্যিই এত ঘন ঘন এই কোয়েরিটি কল করার প্রয়োজন আছে। প্রতি মিনিটে কয়েক হাজার বারের বেশি এক্সিকিউট হওয়া বেশিরভাগ কোয়েরিই তদন্তের দাবি রাখে।

৪.১.২ মূল কারণ বিশ্লেষণ

অতিরিক্ত কোয়েরি এক্সিকিউশন সাধারণত এই সমস্যাগুলির কারণে হয়:

  • N+1 কোয়েরি সমস্যা: অ্যাপ্লিকেশন কোড আইটেমগুলির একটি তালিকা পুনরুদ্ধার করে, তারপর প্রতিটি আইটেমের জন্য সম্পর্কিত ডেটা আনার জন্য একটি পৃথক কোয়েরি কার্যকর করে। এটি N অতিরিক্ত কোয়েরি তৈরি করে যেখানে N হল আইটেমের সংখ্যা।
  • অনুপস্থিত ক্যাশিং: অ্যাপ্লিকেশনটি খুব কম পরিবর্তিত হয় এমন ডেটার জন্য অ্যাপ্লিকেশন মেমরিতে ডেটা ক্যাশ করার পরিবর্তে ডাটাবেস থেকে কোয়েরি করে।
  • পোলিং লুপ: কোড পরিবর্তন বিজ্ঞপ্তি বা বার্তা সারি ব্যবহার করার পরিবর্তে বারবার ডাটাবেসকে রাষ্ট্রীয় পরিবর্তন পরীক্ষা করার জন্য জিজ্ঞাসা করে।
  • ORM অদক্ষতা: সত্তা ফ্রেমওয়ার্ক এবং অনুরূপ সরঞ্জামগুলি কখনও কখনও অদক্ষ কোয়েরি প্যাটার্ন তৈরি করে যখন ডেভেলপাররা বুঝতে পারে না যে তাদের কোড কীভাবে SQL-এ অনুবাদ হয়।

মূল কারণ নির্ধারণ করতে, কোয়েরিটি অ্যাপ্লিকেশন কোডে ফিরে যান। লক্ষ্য করুন আবেদন এবং লগইন যখন কোয়েরিটি কার্যকর হয় তখন প্রসেস প্যানে কলামগুলি। আপনি প্রক্রিয়াটিতে ডান-ক্লিক করে নির্বাচন করতে পারেন ট্রেস প্রক্রিয়া SQL Server প্রোফাইলার কলিং প্যাটার্ন দেখতে।

4.1.3 সমাধান এবং সর্বোত্তম অনুশীলন

একবার আপনি অতিরিক্ত কোয়েরি এক্সিকিউশন শনাক্ত করার পর, এই সমাধানগুলি বিবেচনা করুন:

  • ধির গতির কাজ: একটি লুপে আলাদা আলাদা কোয়েরি সম্পাদন করার পরিবর্তে জয়েন বা IN ক্লজ ব্যবহার করে একটি একক কোয়েরিতে একাধিক আইটেম পুনরুদ্ধার করতে অ্যাপ্লিকেশন কোড পরিবর্তন করুন।
  • ফলাফল ক্যাশিং: ক্যাশে ঘন ঘন অ্যাক্সেস করা হয়, যথাযথ মেয়াদ শেষ হওয়ার সময় সহ অ্যাপ্লিকেশন মেমরিতে ডেটা খুব কমই পরিবর্তন করা হয়।
  • আগ্রহী লোড হচ্ছে: ORM গুলিকে এমনভাবে কনফিগার করুন যাতে আগ্রহী লোডিং কৌশল ব্যবহার করা যায় যা কম, আরও দক্ষ কোয়েরিতে সম্পর্কিত ডেটা আনে।
  • কোয়েরি প্যারামিটারাইজেশন: নিশ্চিত করুন যে কোয়েরিগুলি মান সংযোজনের পরিবর্তে প্যারামিটার ব্যবহার করে, যা প্ল্যান ক্যাশে পুনঃব্যবহার উন্নত করে এবং সংকলন ওভারহেড হ্রাস করে।

৪.২ ব্লকিং সমস্যাগুলি তদন্ত করা

ব্লকিং তখন ঘটে যখন একটি সেশন লক করে রাখে যা অন্য সেশনগুলিকে এগিয়ে যেতে বাধা দেয়। এটি ধীর অ্যাপ্লিকেশন প্রতিক্রিয়া সময় এবং হতাশ ব্যবহারকারীদের দ্বারা প্রকাশ পায়।

৪.২.১ ব্লকিং চেইন সনাক্তকরণ

ব্লকিং সনাক্ত এবং বিশ্লেষণ করতে:

  1. অ্যাক্টিভিটি মনিটর খুলুন এবং প্রসারিত করুন প্রসেস পেন।
  2. মান সহ সেশনগুলি সন্ধান করুন ব্লক করেছে কলাম—এগুলি অন্যান্য সেশন দ্বারা আটকে থাকা লকগুলির জন্য অপেক্ষা করছে।
  3. '1' সহ সেশনগুলি খুঁজুন হেড ব্লকার কলাম—এগুলোই চেইন ব্লক করার মূল কারণ।
  4. মনে রাখবেন সেশন আইডি হেড ব্লকারের।
  5. হেড ব্লকার সেশনে ডান-ক্লিক করুন এবং নির্বাচন করুন বিস্তারিত এটি কোন কমান্ডটি কার্যকর করছে তা দেখার জন্য।

ব্লকিং চেইন বোঝা অত্যন্ত গুরুত্বপূর্ণ। হেড ব্লকার হল সেই সেশন যা আপনাকে তদন্ত করতে হবে, ডাউনস্ট্রিম ব্লক করা সেশনগুলি নয়।

৪.২.২ তালার ধরণ বোঝা

সার্জারির অপেক্ষার ধরণ প্রসেসস প্যানের কলামটি নির্দেশ করে যে কোন ধরণের লক ব্লক করা সেশনের জন্য অপেক্ষা করা হচ্ছে:

  • এলসিকে_এম_এক্স: এক্সক্লুসিভ লক ওয়েট, সাধারণত আপডেট, ডিলিট বা ইনসার্ট অপারেশনের কারণে ঘটে।
  • এলসিকে_এম_এস: শেয়ার্ড লক ওয়েট, সাধারণত SELECT স্টেটমেন্ট এক্সক্লুসিভ লক রিলিজের জন্য অপেক্ষা করে।
  • এলসিকে_এম_ইউ: আপডেট লক ওয়েট, আপডেটের সময় ব্যবহৃত একটি মধ্যবর্তী লক টাইপ।
  • এলসিকে_এম_আইএক্স: পৃষ্ঠা বা সারি-স্তরের লক বিতর্ক নির্দেশ করে, ইন্টেন্ট এক্সক্লুসিভ লক অপেক্ষা।

সার্জারির অপেক্ষার রিসোর্স কলামটি দেখায় যে কোন ডাটাবেস অবজেক্টটি লক করা হচ্ছে, যা আপনাকে বুঝতে সাহায্য করে যে কোন টেবিল বা সূচকটি বিতর্কের সাথে জড়িত।

৪.২.৩ ব্লকিং সমস্যা সমাধান করা

একবার আপনি ব্লকিং সেশন এবং এটি কী করছে তা শনাক্ত করার পরে, আপনার কাছে বেশ কয়েকটি বিকল্প রয়েছে:

  1. সমাপ্তির জন্য অপেক্ষা করুন: যদি হেড ব্লকার এমন একটি বৈধ কোয়েরি চালাচ্ছে যা শীঘ্রই সম্পূর্ণ হবে, তাহলে স্বাভাবিকভাবেই এটি শেষ করতে দেওয়া ভালো হতে পারে।
  2. সেশনটি বন্ধ করুন: যদি হেড ব্লকার আটকে থাকে অথবা এমন কোনও কোয়েরি চালাচ্ছে যা বাতিল করা উচিত:
    • প্রসেসস প্যানে সেশনে ডান ক্লিক করুন।
    • নির্বাচন করা Kill প্রসেস.
    • ডায়ালগ বক্সে ক্রিয়াটি নিশ্চিত করুন।
  3. অপ্টিমাইজ কোয়েরি: যদি ব্লক করার সময় একই প্রশ্ন বারবার আসে, তাহলে তাদের লক করার সময়কাল কমাতে অপ্টিমাইজ করুন।
  4. আইসোলেশন লেভেল সামঞ্জস্য করুন: রিড-হেভি ওয়ার্কলোডে ব্লকিং কমাতে READ COMMITTED SNAPSHOT Isolation ব্যবহার করার কথা বিবেচনা করুন।
  5. সূচক টিউনিং: কোয়েরির গতি বাড়ানোর জন্য সূচী যোগ করুন, যাতে লক ধরে রাখার সময়কাল কম থাকে।

৪.৩ উচ্চ CPU ব্যবহারের বিশ্লেষণ

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

৪.৩.১ CPU-নিবিড় কোয়েরি সনাক্তকরণ

অতিরিক্ত CPU খরচ করে এমন প্রশ্নগুলি খুঁজে পেতে:

  1. খোলা সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলি পেন।
  2. ক্রমানুসার সিপিইউ (মিলিসেকেন্ড/সেকেন্ড) সবচেয়ে বেশি সিপিইউ সময় ব্যবহারকারী কোয়েরিগুলো দেখানোর জন্য।
  3. তালিকার শীর্ষ প্রশ্নগুলি পরীক্ষা করুন।
  4. উচ্চ CPU কোয়েরিতে ডান-ক্লিক করুন এবং নির্বাচন করুন কোয়েরি টেক্সট সম্পাদনা করুন SQL স্টেটমেন্ট দেখতে।
  5. নির্বাচন করা এক্সিকিউশন প্ল্যান দেখান কোয়েরিটি কীভাবে কার্যকর হয় তা বোঝার জন্য।

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

৪.৩.২ কোয়েরি অপ্টিমাইজেশন কৌশল

CPU খরচ কমানোর সাধারণ পদ্ধতিগুলির মধ্যে রয়েছে:

  • অনুপস্থিত সূচী যোগ করুন: টেবিল স্ক্যানের তুলনায় ইনডেক্স অনেক কম CPU ব্যবহার করে। এক্সিকিউশন প্ল্যানে ইনডেক্স সুপারিশ অনুপস্থিত কিনা তা দেখুন।
  • অদক্ষ প্রশ্নগুলি পুনর্লিখন করুন: সেট-ভিত্তিক ক্রিয়াকলাপ দিয়ে কার্সারগুলি প্রতিস্থাপন করুন, WHERE ধারাগুলিতে অপ্রয়োজনীয় ফাংশনগুলি বাদ দিন এবং অপ্রয়োজনীয় জয়েন্টগুলি সরিয়ে দিন।
  • পরিসংখ্যান আপডেট করুন: পুরনো পরিসংখ্যানের কারণ SQL Server অদক্ষ কার্যকরকরণ পরিকল্পনা বেছে নিতে। প্রভাবিত টেবিলগুলিতে আপডেট পরিসংখ্যান চালান।
  • ডেটা ভলিউম কমান: ডেটা আগে ফিল্টার করার জন্য WHERE ক্লজ যোগ করুন, পৃষ্ঠাঙ্কনের জন্য TOP অথবা OFFSET/FETCH ব্যবহার করুন এবং SELECT * এড়িয়ে চলুন।
  • প্যারামিটার স্নিফিং ঠিক করুন: প্যারামিটার স্নিফিং সমস্যা সৃষ্টি করলে OPTION (RECOMPILE), কোয়েরি ইঙ্গিত, অথবা প্ল্যান গাইড ব্যবহার করুন।

৪.৪ স্মৃতি সমস্যা তদন্ত করা

মেমোরির চাপের কারণে কোয়েরিগুলি ডিস্কে ছড়িয়ে পড়তে পারে, যার ফলে কর্মক্ষমতা উল্লেখযোগ্যভাবে হ্রাস পেতে পারে। অ্যাক্টিভিটি মনিটর আপনাকে মেমোরি-ঘন ক্রিয়াকলাপ সনাক্ত করতে সহায়তা করে।

৪.৪.১ মেমোরি মেট্রিক্স বোঝা

সার্জারির মেমরি ব্যবহার প্রসেসস প্যানের কলামটি প্রতিটি সেশনের জন্য বরাদ্দকৃত মেমোরি কিলোবাইটে দেখায়। একটি সেশনের উচ্চ মেমোরি ব্যবহার প্রায়শই নির্দেশ করে:

  • বড় ধরণের বা হ্যাশ অপারেশন যা প্রাথমিকভাবে প্রদত্ত মেমরিতে ফিট করতে পারে না
  • বিশাল ফলাফল সেট পুনরুদ্ধারকারী প্রশ্নগুলি
  • অতিরিক্ত সমান্তরালতা বাস্তবায়ন পরিকল্পনা অপারেটরদের অনেক কপি তৈরি করে
  • CLR সঞ্চিত পদ্ধতি বা ফাংশনে মেমরি লিক

যখন কোয়েরিগুলি পর্যাপ্ত মেমোরি অনুদান পেতে পারে না এবং মেমোরি উপলব্ধ হওয়ার জন্য অপেক্ষা করতে হয়, তখন রিসোর্স ওয়েটস প্যানে মেমোরি ওয়েটস দেখাতে পারে।

৪.৪.২ মেমোরি-ইনটেনসিভ কোয়েরি সনাক্তকরণ

মেমোরি চাপ সৃষ্টিকারী প্রশ্নগুলি খুঁজে বের করতে:

  1. মধ্যে প্রসেস ফলক, অনুসারে সাজান মেমরি ব্যবহার সবচেয়ে বেশি মেমরি ব্যবহার করা সেশনগুলো দেখতে।
  2. উচ্চ মেমোরি ব্যবহার সহ সেশনগুলিতে ডান-ক্লিক করুন এবং নির্বাচন করুন বিস্তারিত তাদের প্রশ্নগুলি দেখার জন্য।
  3. মধ্যে সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলি ফলক, উচ্চ সহ প্রশ্নের জন্য সন্ধান করুন লজিক্যাল রিডস or লজিক্যাল লেখা, কারণ এগুলো প্রায়শই মেমরি ব্যবহারের সাথে সম্পর্কিত।
  4. মেমোরি গ্রান্ট ব্যবহার করে এমন Sort এবং Hash Match অপারেটরগুলির জন্য এক্সিকিউশন প্ল্যান পরীক্ষা করুন।

এক্সিকিউশন প্ল্যানে "মেমোরি গ্রান্ট" সতর্কতা বা স্পিল সতর্কতা দেখানো প্রশ্নগুলি মেমোরি চাপের সমস্যা নির্দেশ করে।

৪.৫ অ্যাপ্লিকেশন কর্মক্ষমতা সমস্যা সনাক্তকরণ

যখন ব্যবহারকারীরা অ্যাপ্লিকেশনের প্রতিক্রিয়ার সময় ধীর বলে রিপোর্ট করেন, তখন অ্যাক্টিভিটি মনিটর আপনাকে ডাটাবেসটি বাধা কিনা তা নির্ধারণ করতে সাহায্য করে।

৪.৫.১ অ্যাপ্লিকেশন সমস্যাগুলির সাথে অ্যাক্টিভিটি মনিটরের সম্পর্ক স্থাপন করা

অ্যাপ্লিকেশনের ধীরগতি তদন্ত করতে:

  1. ব্যবহারকারীরা ঠিক কখন সমস্যার কথা জানিয়েছেন এবং কোন অ্যাপ্লিকেশনগুলি প্রভাবিত হয়েছে তা লক্ষ্য করুন।
  2. অ্যাক্টিভিটি মনিটর খুলুন এবং পরীক্ষা করুন সংক্ষিপ্ত বিবরণ সেই সময়ে রিসোর্স স্পাইকের জন্য প্যান।
  3. মধ্যে প্রসেস ফলক, ফিল্টার করুন আবেদন শুধুমাত্র প্রভাবিত অ্যাপ্লিকেশন থেকে সংযোগগুলি দেখানোর জন্য।
  4. উচ্চ খুঁজুন অপেক্ষা করুন সময় মান, যা ডাটাবেস বিলম্ব নির্দেশ করে।
  5. চেক সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলি উল্লেখযোগ্য সম্পদ গ্রহণকারী অ্যাপ্লিকেশন থেকে প্রশ্নের জন্য প্যানে।

ব্যবহারকারীরা যখন ধীরগতির অভিজ্ঞতা পান, তখন যদি ডাটাবেস কোনও অস্বাভাবিক কার্যকলাপ না দেখায়, তাহলে সম্ভবত সমস্যাটি অ্যাপ্লিকেশন কোড, নেটওয়ার্ক ল্যাটেন্সি বা ক্লায়েন্ট-সাইড পারফরম্যান্সের মধ্যে রয়েছে।

৪.৫.২ অদক্ষ প্রয়োগের ধরণ চিহ্নিতকরণ

অ্যাক্টিভিটি মনিটর অ্যাপ্লিকেশন ডিজাইনে বেশ কিছু অ্যান্টি-প্যাটার্ন প্রকাশ করে:

  • চ্যাটি অ্যাপ্লিকেশন: কম, আরও কার্যকর প্রশ্নের পরিবর্তে অনেক ছোট প্রশ্ন। সাম্প্রতিক ব্যয়বহুল প্রশ্নের উচ্চ সংযোগ সংখ্যা এবং অসংখ্য সহজ প্রশ্নের দ্বারা চিহ্নিত।
  • N+1 প্রশ্ন: একটি কোয়েরির পরে N টি অতিরিক্ত কোয়েরি সম্পর্কিত ডেটার জন্য। প্রতি মিনিটে অত্যন্ত উচ্চ এক্সিকিউশন সহ একটি সাধারণ কোয়েরি হিসাবে দেখানো হয়।
  • বড় ফলাফল সেট: প্রয়োজনের তুলনায় অনেক বেশি ডেটা উদ্ধার করছে এমন অ্যাপ্লিকেশন। উচ্চতর ডেটা খুঁজুন লজিক্যাল রিডস সহজ SELECT * প্রশ্নের সাথে মিলিত।
  • অনুপস্থিত সময়সীমা: যেসব অ্যাপ্লিকেশন কমান্ড টাইমআউট সেট করে না, তারা সংযোগগুলি অনির্দিষ্টকালের জন্য খোলা রাখতে পারে, যা প্রসেস প্যানে দীর্ঘ-চলমান সেশন হিসাবে দৃশ্যমান হয়।

৫. বিকল্প পদ্ধতি: টি-এসকিউএল এর মাধ্যমে অ্যাক্টিভিটি মনিটর ডেটা পাওয়া

যদিও অ্যাক্টিভিটি মনিটর একটি সুবিধাজনক গ্রাফিক্যাল ইন্টারফেস প্রদান করে, কখনও কখনও আপনাকে প্রোগ্রাম্যাটিকভাবে সমতুল্য তথ্য পুনরুদ্ধার করতে হয় অথবা কাস্টম মনিটরিং সমাধান তৈরি করতে হয়।

৫.১ ডায়নামিক ম্যানেজমেন্ট ভিউ (DMV) ব্যবহার করা

SQL Server গতিশীল ব্যবস্থাপনা ভিউয়ের মাধ্যমে কার্যকলাপের তথ্য প্রকাশ করে, যা কার্যকলাপের মনিটর পর্দার আড়ালে অনুসন্ধান করে।

৫.১.১ কার্যকলাপ পর্যবেক্ষণের জন্য মূল DMV

অ্যাক্টিভিটি মনিটরের কার্যকারিতা প্রতিলিপি করার জন্য সবচেয়ে গুরুত্বপূর্ণ ডিএমভিগুলো হলো:

  • sys.dm_exec_requests: CPU, I/O, এবং অপেক্ষার তথ্য ব্যবহার করে বর্তমানে অনুরোধগুলি সম্পাদন করা হচ্ছে তা দেখায়।
  • sys.dm_exec_sessions: এতে সেশন-স্তরের তথ্য যেমন লগইন নাম, হোস্ট নাম এবং প্রোগ্রামের নাম থাকে।
  • sys.dm_os_wait_stats: পুরো উদাহরণের জন্য ক্রমবর্ধমান অপেক্ষার পরিসংখ্যান প্রদান করে।
  • sys.dm_exec_query_stats: ক্যাশে করা প্রশ্নের জন্য সামগ্রিক কর্মক্ষমতা পরিসংখ্যান ধারণ করে।
  • sys.dm_io_virtual_file_stats: ডেটা এবং লগ ফাইলের জন্য I/O পরিসংখ্যান প্রদান করে।
  • sys.dm_exec_sql_text: একটি প্রদত্ত sql_handle অথবা plan_handle এর জন্য SQL টেক্সট উদ্ধার করে।
  • sys.dm_exec_query_plan: একটি ক্যাশেড কোয়েরির জন্য এক্সিকিউশন প্ল্যান ফেরত দেয়।

৫.১.২ প্রক্রিয়া তথ্যের জন্য নমুনা প্রশ্ন

প্রসেসস প্যান কার্যকারিতা প্রতিলিপি করতে, আপনি জিজ্ঞাসা করতে পারেন:

SELECT 
    s.session_id AS [Session ID],
    CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
    s.login_name AS [Login],
    ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), '') AS [Database],
    ISNULL(t.task_state, '') AS [Task State],
    ISNULL(r.command, '') AS [Command],
    r.cpu_time AS [CPU Time],
    r.total_elapsed_time AS [Elapsed Time],
    r.wait_time AS [Wait Time],
    r.wait_type AS [Wait Type],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

৫.১.৩ অপেক্ষা পরিসংখ্যানের জন্য নমুনা প্রশ্ন

রিসোর্স ওয়েটস প্যানের মতো অপেক্ষার পরিসংখ্যান দেখতে:

SELECT TOP 10
    wait_type AS [Wait Type],
    wait_time_ms / 1000.0 AS [Wait Time (sec)],
    waiting_tasks_count AS [Waiting Tasks],
    wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
    AND wait_type NOT LIKE '%IDLE%'
    AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;

৫.২ sp_WhoIsActive ব্যবহার করা

sp_WhoIsActive হল একটি শক্তিশালী কমিউনিটি-নির্মিত সঞ্চিত পদ্ধতি যা একটি একক ফলাফল সেটে অ্যাক্টিভিটি মনিটরের চেয়ে আরও বিস্তারিত তথ্য প্রদান করে।

৫.২.১ sp_WhoIsActive ইনস্টল করা হচ্ছে

sp_WhoIsActive ইনস্টল করতে:

  1. এর থেকে সর্বশেষতম সংস্করণটি ডাউনলোড করুন http://whoisactive.com.
  2. ডাউনলোডটি একটি SQL স্ক্রিপ্ট যাতে পদ্ধতির সংজ্ঞা রয়েছে।
  3. স্ক্রিপ্টটি খুলুন SQL Server ম্যানেজমেন্ট স্টুডিও
  4. আপনার সাথে সংযুক্ত করুন SQL Server উদাহরণ হিসেবে বলা যায়।
  5. মাস্টার ডাটাবেসে পদ্ধতিটি তৈরি করতে স্ক্রিপ্টটি কার্যকর করুন।
  6. উপযুক্ত ব্যবহারকারীদের কার্যকর করার অনুমতি দিন।

যেহেতু sp_WhoIsActive মাস্টারে ইনস্টল করা আছে, তাই এটি যেকোনো ডাটাবেস প্রসঙ্গ থেকে অ্যাক্সেসযোগ্য।

৫.২.২ মৌলিক ব্যবহারের উদাহরণ

sp_WhoIsActive ব্যবহারের সবচেয়ে সহজ উপায় হল:

EXEC sp_WhoIsActive;

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

সেই সময়ের কার্যকলাপ দেখানো ১০-সেকেন্ডের নমুনার জন্য:

EXEC sp_WhoIsActive @delta_interval = 10;

এটি CPU-এর মতো মেট্রিক্সের জন্য ডেল্টা গণনা করে এবং পড়ে, সেই 10 সেকেন্ডের মধ্যে কী ঘটেছিল তা দেখায়।

৫.২.৩ উন্নত পরামিতি

sp_WhoIsActive কাস্টমাইজেশনের জন্য অসংখ্য প্যারামিটার সমর্থন করে:

  • @ফিল্টার: নির্দিষ্ট সেশন, ডাটাবেস, অথবা লগইনগুলিতে ফলাফল ফিল্টার করুন।
  • @ফিল্টার_টাইপ: ফিল্টারটি কীসের জন্য প্রযোজ্য তা নির্দিষ্ট করুন (সেশন, ডাটাবেস, লগইন, ইত্যাদি)।
  • @গেট_প্ল্যান: ফলাফলে কার্যকরকরণ পরিকল্পনা অন্তর্ভুক্ত করুন (১ এ সেট করা)।
  • @গেট_লকস: বিস্তারিত লক তথ্য দেখান (১ এ সেট করা)।
  • @get_transaction_info: লেনদেনের বিবরণ প্রদর্শন করুন (১ এ সেট করা)।
  • @sort_order: বিভিন্ন মেট্রিক্স (CPU, পঠন, সময়কাল, ইত্যাদি) অনুসারে ফলাফল ক্রম করুন।
  • @ডেস্টিনেশন_টেবিল: ঐতিহাসিক ট্র্যাকিংয়ের জন্য একটি টেবিলে ফলাফল সন্নিবেশ করান।

CPU অনুসারে সাজানো পরিকল্পনা দেখানোর উদাহরণ:

EXEC sp_WhoIsActive 
    @get_plans = 1,
    @sort_order = '[CPU] DESC';

৫.৩ সিস্টেম স্টোরেড পদ্ধতি ব্যবহার করা

SQL Server কার্যকলাপ পর্যবেক্ষণের জন্য ঐতিহ্যবাহী সঞ্চিত পদ্ধতি অন্তর্ভুক্ত করে, যদিও তারা DMV বা কার্যকলাপ মনিটরের তুলনায় কম তথ্য প্রদান করে।

৫.৩.১ sp_who এবং sp_who2

sp_who পদ্ধতিটি মৌলিক সেশন তথ্য দেখায়:

EXEC sp_who;

sp_who2 পদ্ধতিটি আরও কিছুটা বিশদ প্রদান করে:

EXEC sp_who2;

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

৫.৩.২ অন্যান্য কার্যকর সিস্টেম পদ্ধতি

পর্যবেক্ষণের জন্য অতিরিক্ত সিস্টেম পদ্ধতিগুলির মধ্যে রয়েছে:

  • এসপি_লক: লকের তথ্য দেখায় (অবঞ্চিত; পরিবর্তে sys.dm_tran_locks ব্যবহার করুন)।
  • sp_monitor: সম্পর্কে পরিসংখ্যান প্রদর্শন করে SQL Server কার্যকলাপ.
  • এসপি_হেল্প: বস্তুর সংজ্ঞা এবং মেটাডেটা দেখায়।
  • ডিবিসিসি এসকিউএলপিআরএফ: লেনদেন লগ স্থান ব্যবহার এবং অপেক্ষা পরিসংখ্যান প্রদর্শন করে।

৫.৪ কাস্টম মনিটরিং স্ক্রিপ্ট তৈরি করা

অ্যাক্টিভিটি মনিটরের বাইরে নির্দিষ্ট পর্যবেক্ষণের প্রয়োজন এমন পরিবেশের জন্য, আপনি DMV ব্যবহার করে কাস্টম সমাধান তৈরি করতে পারেন।

৫.৪.১ সম্পূর্ণ অ্যাক্টিভিটি মনিটর সমতুল্য স্ক্রিপ্ট

এখানে একটি বিশদ স্ক্রিপ্ট দেওয়া হল যা অ্যাক্টিভিটি মনিটরের বেশিরভাগ কার্যকারিতা অনুকরণ করে:

-- Processes Information
SELECT 
    s.session_id AS [Session ID],
    CONVERT(CHAR(1), s.is_user_process) AS [User Process],
    s.login_name AS [Login],
    ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), N'') AS [Database],
    ISNULL(t.task_state, N'') AS [Task State],
    ISNULL(r.command, N'') AS [Command],
    SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
        ((CASE r.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE r.statement_end_offset 
        END - r.statement_start_offset) / 2) + 1) AS [Statement],
    st.text AS [Command Text],
    r.cpu_time AS [CPU Time (ms)],
    r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
    r.wait_time AS [Wait Time (ms)],
    r.wait_type AS [Wait Type],
    r.wait_resource AS [Wait Resource],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    c.client_net_address AS [Net Address],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id 
    AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

-- Recent Expensive Queries
SELECT TOP 20
    qs.execution_count / 
        DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
    qs.total_worker_time / 1000 AS [CPU Time (ms)],
    qs.total_physical_reads AS [Physical Reads],
    qs.total_logical_writes AS [Logical Writes],
    qs.total_logical_reads AS [Logical Reads],
    qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
    SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset 
        END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;

৫.৪.২ SQL এজেন্টের চাকরির মাধ্যমে স্বয়ংক্রিয় পর্যবেক্ষণ

আপনি কাস্টম মনিটরিং স্ক্রিপ্টগুলি ব্যবহার করে সময়সূচী করতে পারেন SQL Server প্রতিনিধি:

  1. পর্যবেক্ষণের ফলাফল সংরক্ষণের জন্য একটি টেবিল তৈরি করুন।
  2. এই টেবিলে ফলাফল সন্নিবেশ করতে আপনার পর্যবেক্ষণ স্ক্রিপ্টটি পরিবর্তন করুন।
  3. In SQL Server ম্যানেজমেন্ট স্টুডিও, প্রসারিত করুন SQL Server প্রতিনিধি অবজেক্ট এক্সপ্লোরারে।
  4. সঠিক পছন্দ জবস এবং নির্বাচন করুন নতুন চাকরি.
  5. নিয়মিত বিরতিতে আপনার মনিটরিং স্ক্রিপ্ট চালানোর জন্য কাজটি কনফিগার করুন।
  6. সংগৃহীত তথ্যের উপর ভিত্তি করে সতর্কতা বা প্রতিবেদন সেট আপ করুন।

এই পদ্ধতিটি ঐতিহাসিক ট্র্যাকিং এবং ট্রেন্ড বিশ্লেষণ সক্ষম করে যা অ্যাক্টিভিটি মনিটর প্রদান করে না।

৬. কার্যকলাপ পর্যবেক্ষণের সীমাবদ্ধতা এবং বিবেচনা

যদিও অ্যাক্টিভিটি মনিটর মূল্যবান, এর সীমাবদ্ধতাগুলি বোঝা আপনাকে এটিকে যথাযথভাবে ব্যবহার করতে এবং প্রয়োজনে অন্যান্য সরঞ্জামের সাথে পরিপূরক করতে সহায়তা করে।

৬.১ অ্যাক্টিভিটি মনিটরের ওভারহেড বোঝা

অ্যাক্টিভিটি মনিটর বিনামূল্যের নয়—এটি তথ্য সংগ্রহ এবং প্রদর্শনের জন্য সার্ভার রিসোর্স ব্যবহার করে। এই ওভারহেড বোঝা আপনাকে এটিকে দায়িত্বের সাথে ব্যবহার করতে সাহায্য করে।

৬.১.১ সার্ভার রিসোর্সের উপর প্রভাব

অ্যাক্টিভিটি মনিটর প্রতিবার রিফ্রেশ করার সময় সিস্টেম DMV-এর বিরুদ্ধে কোয়েরি চালায়। এই কোয়েরিগুলি CPU ব্যবহার করে, লজিক্যাল রিড তৈরি করে এবং সিস্টেম টেবিলে অল্প সময়ের জন্য লক ধরে রাখতে পারে। ব্যস্ত সার্ভারগুলিতে, এই ওভারহেড কর্মক্ষমতাকে প্রভাবিত করতে পারে।

প্রসেস এবং সাম্প্রতিক ব্যয়বহুল কোয়েরি প্যানগুলি বিশেষভাবে ব্যয়বহুল, কারণ তাদের সম্ভাব্য বড় DMV এবং ক্যাশে টেবিল স্ক্যান করতে হয়। হাজার হাজার ক্যাশেড কোয়েরি প্ল্যান সহ সার্ভারগুলিতে, সাম্প্রতিক ব্যয়বহুল কোয়েরিগুলি রিফ্রেশ করতে কয়েক সেকেন্ড সময় লাগতে পারে।

মাইক্রোসফটের ডকুমেন্টেশন সতর্ক করে যে ১০ সেকেন্ডের কম রিফ্রেশ ব্যবধান সার্ভারের কর্মক্ষমতাকে লক্ষণীয়ভাবে প্রভাবিত করতে পারে, বিশেষ করে ইতিমধ্যে লোড হওয়া সিস্টেমগুলিতে।

৬.১.২ ব্যবধানের সেরা অনুশীলনগুলি রিফ্রেশ করুন

আপনার পরিস্থিতির জন্য উপযুক্ত রিফ্রেশ ব্যবধানগুলি বেছে নিন:

  • 1-5 সেকেন্ড: শুধুমাত্র হালকা লোড হওয়া সার্ভারগুলিতে গুরুত্বপূর্ণ সমস্যাগুলির তাৎক্ষণিক সমাধানের জন্য। এই বিরতিতে অ্যাক্টিভিটি মনিটর চালু রাখবেন না।
  • ১০ সেকেন্ড (ডিফল্ট): অধিকাংশ সমস্যা সমাধান এবং সাধারণ পর্যবেক্ষণের জন্য এটি যথেষ্ট।
  • 30-60 সেকেন্ড: ভারী লোডের অধীনে অথবা দীর্ঘ সময় ধরে পর্যবেক্ষণের সময় প্রোডাকশন সার্ভারের জন্য আরও ভালো পছন্দ।
  • শুধুমাত্র ম্যানুয়াল রিফ্রেশ: এমন পরিস্থিতিতে যেখানে আপনি ক্রমাগত ভোটদান ছাড়াই মাঝে মাঝে বর্তমান অবস্থা পরীক্ষা করতে চান।

অনুসন্ধান শেষ হলে সর্বদা অ্যাক্টিভিটি মনিটর বন্ধ করুন। এটিকে একটানা চালু রাখবেন না, বিশেষ করে বিভিন্ন ব্যবহারকারীর একাধিক উদাহরণ।

৬.২ অপেক্ষার ধরণ গ্রুপিং সমস্যা

অ্যাক্টিভিটি মনিটরের অপেক্ষাগুলোকে শ্রেণিবদ্ধ করার পদ্ধতিটি দৃশ্যকে সরল করলেও, এটি গুরুত্বপূর্ণ ডায়াগনস্টিক তথ্যকে অস্পষ্ট করে তুলতে পারে।

৬.২.১ অ্যাক্টিভিটি মনিটর গ্রুপগুলি কীভাবে অপেক্ষা করে

SQL Server শত শত স্বতন্ত্র অপেক্ষার ধরণ ট্র্যাক করে, প্রতিটি একটি নির্দিষ্ট রিসোর্স বা অবস্থা নির্দেশ করে। অ্যাক্টিভিটি মনিটর এগুলিকে "বাফার ল্যাচ," "লক," এবং "মেমোরি" এর মতো বিস্তৃত বিভাগে ভাগ করে।

উদাহরণস্বরূপ, "বাফার ল্যাচ" বিভাগে PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX এবং আরও বেশ কয়েকটি নির্দিষ্ট অপেক্ষার ধরণ অন্তর্ভুক্ত। যদিও এগুলি সবই পৃষ্ঠা অ্যাক্সেসের সাথে সম্পর্কিত, তবে তাদের বিভিন্ন কারণ এবং সমাধান রয়েছে।

মাইক্রোসফট ঠিক কোন ধরণের অপেক্ষার ধরণ কোন বিভাগগুলিতে নির্দেশ করে তা নথিভুক্ত করে না, যার ফলে আপনি আসলে কী দেখছেন তা বোঝা কঠিন হয়ে পড়ে।

৬.২.২ অনুপস্থিত অপেক্ষার ধরণ

অ্যাক্টিভিটি মনিটর সব ধরনের ওয়েট দেখায় না। বিশেষত, এটি প্রায়শই CXPACKET ওয়েটগুলো বাদ দেয়, যা সমান্তরাল কোয়েরি এক্সিকিউশন নির্দেশ করে। CXPACKET ওয়েটগুলো সাধারণ এবং সাধারণত সমস্যাজনক নয়, কিন্তু এগুলোর উপস্থিতি জানা থাকলে তা আপনাকে ওয়ার্কলোডের বৈশিষ্ট্য বুঝতে সাহায্য করে।

যখন অ্যাক্টিভিটি মনিটরে "বাফার ল্যাচ" আপনার টপ ওয়েট হিসেবে দেখানো হয় কিন্তু অন্যান্য টুলগুলিতে CXPACKET-এর প্রাধান্য দেখা যায়, তখন অ্যাক্টিভিটি মনিটরের ফিল্টারিং এবং গ্রুপিং লজিক থেকে এই অসঙ্গতি আসে।

৬.২.৩ নির্দিষ্ট অপেক্ষার ধরণ কেন গুরুত্বপূর্ণ

সমস্যা সমাধানের জন্য নির্দিষ্ট অপেক্ষার ধরণ জানা গুরুত্বপূর্ণ:

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

অ্যাক্টিভিটি মনিটর এই সকলকে "বাফার ল্যাচ" এর অধীনে গোষ্ঠীভুক্ত করে, যা রোগ নির্ণয়কে আরও কঠিন করে তোলে। sp_WhoIsActive এবং DMV কোয়েরির মতো সরঞ্জামগুলি নির্দিষ্ট অপেক্ষার ধরণগুলি দেখায়।

৬.৩ তথ্যের নির্ভুলতা এবং সময়োপযোগীতা

অ্যাক্টিভিটি মনিটর প্রায়-রিয়েল-টাইম ভিউ প্রদান করে, কিন্তু "কাছাকাছি" হল অপারেটিভ শব্দ। এর ডেটা সংগ্রহ পদ্ধতি বোঝা আপনাকে ফলাফল সঠিকভাবে ব্যাখ্যা করতে সাহায্য করে।

৬.৩.১ স্ন্যাপশট বনাম ক্রমাগত পর্যবেক্ষণ

অ্যাক্টিভিটি মনিটর প্রতিটি রিফ্রেশ ব্যবধানে তোলা পয়েন্ট-ইন-টাইম স্ন্যাপশট দেখায়। স্ন্যাপশটের মধ্যে ঘটে যাওয়া ইভেন্টগুলি ক্যাপচার করা হয় না। যদি কোনও কোয়েরি 2 সেকেন্ড ধরে চলে এবং আপনি প্রতি 10 সেকেন্ডে রিফ্রেশ করেন, তাহলে সময়ের উপর নির্ভর করে আপনি এটি একবার দেখতে পারেন, আবার একেবারেই দেখতে নাও পারেন।

এর অর্থ হল অ্যাক্টিভিটি মনিটর দীর্ঘস্থায়ী সমস্যা (দীর্ঘস্থায়ী মিনিট ব্লক করা, ধারাবাহিকভাবে উচ্চ সিপিইউ) খুঁজে বের করার ক্ষেত্রে অসাধারণ, কিন্তু ক্ষণস্থায়ী সমস্যা (সংক্ষিপ্ত অচলাবস্থা, মাঝে মাঝে কোয়েরি স্পাইক) মিস করতে পারে।

৬.৩.২ সমষ্টি এবং নমুনা সংগ্রহ

সাম্প্রতিক ব্যয়বহুল প্রশ্নের ফলকটি কোয়েরি প্ল্যান ক্যাশে প্রবেশ করার পর থেকে একত্রিত ডেটা দেখায়। ভিন্ন প্যারামিটার মান সহ দুটি অভিন্ন কোয়েরি যদি একটি প্ল্যান ভাগ করে নেয় তবে একটি সারি হিসাবে প্রদর্শিত হয়। এই সমষ্টি নির্দিষ্ট প্যারামিটার সংমিশ্রণের (প্যারামিটার স্নিফিং সমস্যা) সমস্যাগুলি আড়াল করতে পারে।

রিসোর্স ওয়েটস প্যানটি স্ন্যাপশটগুলোর তুলনা করে হার গণনা করে। যদি স্ন্যাপশটগুলোর মধ্যে ওয়েট স্ট্যাটিস্টিকস রিসেট হয়ে যায় (যা বিরল কিন্তু সম্ভব), তাহলে গণনা করা হার ভুল হতে পারে।

৬.৪ কখন অ্যাক্টিভিটি মনিটর ব্যবহার করবেন না

অ্যাক্টিভিটি মনিটর প্রতিটি পর্যবেক্ষণের জন্য উপযুক্ত নয়। বিকল্প সরঞ্জামগুলি কখন আরও ভাল পছন্দ তা সনাক্ত করুন।

৬.৪.১ ঐতিহাসিক বিশ্লেষণের প্রয়োজনীয়তা

অ্যাক্টিভিটি মনিটর শুধুমাত্র বর্তমান বা সাম্প্রতিক কার্যকলাপ দেখায়। এটি ঐতিহাসিক তথ্য সংরক্ষণ করে না। যদি আপনার দিন বা সপ্তাহের ট্রেন্ড বিশ্লেষণ করতে হয়, বর্তমান কর্মক্ষমতাকে বেসলাইনের সাথে তুলনা করতে হয়, অথবা কর্মক্ষমতা প্যাটার্নের উপর প্রতিবেদন তৈরি করতে হয়, তাহলে অ্যাক্টিভিটি মনিটর যথেষ্ট নয়।

ঐতিহাসিক বিশ্লেষণের জন্য, ব্যবহার করুন SQL Serverএর অন্তর্নির্মিত পারফরম্যান্স ড্যাশবোর্ড, ফাইল টার্গেটসহ এক্সটেন্ডেড ইভেন্টস, অথবা তৃতীয় পক্ষের মনিটরিং সলিউশন।

৬.৪.২ বিস্তারিত অপেক্ষা পরিসংখ্যানের চাহিদা

যখন আপনার উন্নত টিউনিংয়ের জন্য সুনির্দিষ্ট অপেক্ষার ধরণের তথ্যের প্রয়োজন হয়, তখন অ্যাক্টিভিটি মনিটরের গ্রুপিং এবং ফিল্টারিং এটিকে অপর্যাপ্ত করে তোলে। সরাসরি DMV কোয়েরি ব্যবহার করুন অথবা পরিবর্তে sp_WhoIsActive ব্যবহার করুন।

বিস্তৃত অপেক্ষা পরিসংখ্যান বিশ্লেষণের জন্য, সরাসরি sys.dm_os_wait_stats অনুসন্ধান করুন এবং ম্যানুয়ালি বিনাইন অপেক্ষা ফিল্টার করুন।

৬.৪.৩ উৎপাদন সার্ভারের বিবেচনা

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

উৎপাদন পর্যবেক্ষণের জন্য, মনিটরিং ডাটাবেসে সংরক্ষিত নির্ধারিত DMV স্ন্যাপশটের মতো হালকা বিকল্পগুলি বিবেচনা করুন, অথবা সর্বদা চালু কনফিগারেশনে সেকেন্ডারি প্রতিলিপিগুলি পর্যবেক্ষণ করতে কেবল পঠনযোগ্য রাউটিং ব্যবহার করুন।

৭. অ্যাক্টিভিটি মনিটর ব্যবহারের জন্য সেরা অভ্যাস

সর্বোত্তম অনুশীলনগুলি অনুসরণ করলে আপনি অ্যাক্টিভিটি মনিটর থেকে সর্বাধিক মূল্য পাবেন এবং আপনার সার্ভারের উপর নেতিবাচক প্রভাব কমিয়ে আনবেন।

৭.১ কখন অ্যাক্টিভিটি মনিটর ব্যবহার করবেন

অ্যাক্টিভিটি মনিটর নির্দিষ্ট পরিস্থিতিতে উজ্জ্বল। যখন এর শক্তি আপনার প্রয়োজনের সাথে সামঞ্জস্যপূর্ণ হয় তখন এটি ব্যবহার করুন।

৭.১.১ রিয়েল-টাইম পারফরম্যান্স সমস্যা

ব্যবহারকারীরা যখন বর্তমানে সমস্যার সম্মুখীন হচ্ছেন এবং আপনার সমস্যাটি অবিলম্বে নির্ণয় করা প্রয়োজন, তখন অ্যাক্টিভিটি মনিটর আদর্শ। রিয়েল-টাইম ভিউ আপনাকে এখন কী ঘটছে তা দেখতে সাহায্য করে।

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

৭.১.২ আবেদনের গতি কমানোর তদন্ত

যখন কোনও নির্দিষ্ট অ্যাপ্লিকেশন প্রতিক্রিয়াহীন হয়ে পড়ে, তখন অ্যাক্টিভিটি মনিটর আপনাকে ডাটাবেসের সমস্যাগুলির কারণ কিনা তা নির্ধারণ করতে সাহায্য করে। শুধুমাত্র সেই অ্যাপ্লিকেশনের ডাটাবেসের কার্যকলাপ দেখতে অ্যাপ্লিকেশনের নাম অনুসারে প্রসেস ফলকটি ফিল্টার করুন।

ব্যবহারকারীরা সমস্যা রিপোর্ট করার সময় যদি অ্যাপ্লিকেশনটি কোনও ডাটাবেস কার্যকলাপ না দেখায়, তাহলে সমস্যাটি স্ট্যাকের অন্য কোথাও রয়েছে। যদি আপনি ব্যাপক ব্লকিং বা ব্যয়বহুল কোয়েরি দেখতে পান, তাহলে আপনি আপনার অপরাধীকে খুঁজে পেয়েছেন।

৭.১.৩ দ্রুত স্বাস্থ্য পরীক্ষা

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

এই দ্রুত পরীক্ষাটি কয়েক সেকেন্ড সময় নেয় এবং সমস্যাগুলি গুরুতর হওয়ার আগেই তা প্রকাশ করতে পারে। এটিকে আপনার দৈনন্দিন রুটিনের অংশ করে তুলুন।

৭.২ সর্বোত্তম কনফিগারেশন সেটিংস

অ্যাক্টিভিটি মনিটর যথাযথভাবে কনফিগার করলে এর উপযোগিতা এবং রিসোর্স ফুটপ্রিন্ট উভয়ই উন্নত হয়।

৭.২.১ প্রস্তাবিত রিফ্রেশ ব্যবধান

আপনার রিফ্রেশ ব্যবধানটি আপনার উদ্দেশ্যের সাথে মিলিয়ে নিন:

  • সক্রিয় সমস্যা সমাধান: ১০ সেকেন্ড যুক্তিসঙ্গত ওভারহেডের সাথে ভালো প্রতিক্রিয়াশীলতা প্রদান করে।
  • বর্ধিত পর্যবেক্ষণ: দীর্ঘ পর্যবেক্ষণের সময়কালে ৩০-৬০ সেকেন্ড সার্ভারের প্রভাব কমায়।
  • জটিল সমস্যা নির্ণয়: প্রতি সেকেন্ড গণনা করলে ৫ সেকেন্ড উচ্চ গ্র্যানুলারিটি দেয়, তবে সংক্ষিপ্তভাবে ব্যবহার করুন।
  • নিয়মিত স্বাস্থ্য পরীক্ষা: যখন আপনি সক্রিয়ভাবে দেখছেন না তখন ম্যানুয়াল রিফ্রেশ (১ ঘন্টা ব্যবধানে)।

কাজ শেষ হলে অ্যাক্টিভিটি মনিটর বন্ধ করতে ভুলবেন না। এটিকে দীর্ঘ সময় ধরে সেট করলে এবং এটি ভুলে গেলে সার্ভারের রিসোর্স নষ্ট হয়।

৭.২.২ ফিল্টারিং কৌশল

প্রাসঙ্গিক তথ্যের উপর ফোকাস করতে এবং জ্ঞানীয় চাপ কমাতে ফিল্টার ব্যবহার করুন:

  • প্রক্রিয়াগুলি ফিল্টার করুন ডেটাবেস শুধুমাত্র নির্দিষ্ট ডাটাবেসের বিরুদ্ধে কার্যকলাপ দেখতে।
  • দ্বারা ফিল্টার লগইন নির্দিষ্ট ব্যবহারকারীর কার্যকলাপ ট্র্যাক করতে।
  • দ্বারা ফিল্টার টাস্ক স্টেট = নিষ্ক্রিয় সেশন লুকানোর জন্য দৌড়াচ্ছে।
  • দ্বারা ফিল্টার আবেদন নির্দিষ্ট প্রোগ্রাম থেকে ট্র্যাফিক বিচ্ছিন্ন করতে।
  • শুধুমাত্র নন-ব্লাঙ্ক দেখান ব্লক করেছে শুধুমাত্র অবরুদ্ধ পরিস্থিতি দেখতে।

৭.২.৩ কলাম নির্বাচন এবং বাছাইকরণ

অ্যাক্টিভিটি মনিটরের ডেটা পর্যালোচনা করার জন্য একটি পদ্ধতিগত পদ্ধতি তৈরি করুন:

  1. সংক্ষিপ্ত বিবরণ দিয়ে শুরু করুন: স্পষ্ট স্পাইক বা অসঙ্গতির জন্য গ্রাফগুলি পরীক্ষা করুন।
  2. ব্লক করার প্রক্রিয়াগুলি পরীক্ষা করুন: সেশন আইডি অনুসারে সাজান, তারপর ব্লকড বাই মানগুলি সন্ধান করুন।
  3. পর্যালোচনা রিসোর্স অপেক্ষা করছে: রিসোর্সের বাধাগুলি সনাক্ত করতে ক্রমবর্ধমান অপেক্ষার সময় অনুসারে সাজান।
  4. ব্যয়বহুল প্রশ্ন বিশ্লেষণ করুন: বিভিন্ন ধরণের সমস্যা খুঁজে পেতে বিভিন্ন মেট্রিক্স (CPU, এক্সিকিউশন, রিড) অনুসারে সাজান।
  5. I/O প্যান দিয়ে যাচাই করুন: I/O-নিবিড় কোয়েরিগুলি উচ্চ ডিস্ক কার্যকলাপের সাথে সম্পর্কিত কিনা তা নিশ্চিত করুন।

৭.৩ অন্যান্য সরঞ্জামের সাথে একীকরণ

অ্যাক্টিভিটি মনিটর একটি স্বতন্ত্র সমাধানের পরিবর্তে একটি বৃহত্তর টুলকিটের অংশ হিসেবে সবচেয়ে ভালো কাজ করে।

৭.৩.১ এর সাথে ব্যবহার করা SQL Server প্রোফাইলার

কার্যকলাপ মনিটর এবং SQL Server প্রোফাইলার একে অপরের পরিপূরক। যখন আপনি অ্যাক্টিভিটি মনিটরে একটি সমস্যাযুক্ত সেশন সনাক্ত করেন, তখন এটিতে ডান-ক্লিক করুন এবং নির্বাচন করুন ট্রেস প্রক্রিয়া SQL Server প্রোফাইলার.

এটি প্রোফাইলার চালু করে, যেখানে ফিল্টারগুলি ইতিমধ্যেই কনফিগার করা আছে যা শুধুমাত্র সেই সেশনের কার্যকলাপ ক্যাপচার করার জন্য। আপনি সম্পাদিত বিবৃতি, সময় সংক্রান্ত তথ্য এবং ত্রুটি বার্তাগুলির সম্পূর্ণ ক্রম দেখতে পাবেন—যা অ্যাক্টিভিটি মনিটর প্রদান করে না।

সম্পর্কে আরও জানার জন্য SQL Server প্রোফাইলার ক্ষমতা এবং উন্নত ট্রেসিং কৌশল, আমাদের দেখুন ব্যাপক SQL Server প্রোফাইলার গাইড.

৭.৩.২ বর্ধিত ইভেন্টের সাথে পরিপূরক

এক্সটেন্ডেড ইভেন্টস কম ওভারহেড, বিস্তারিত পর্যবেক্ষণ প্রদান করে যা অ্যাক্টিভিটি মনিটর মিস করা তথ্য ক্যাপচার করে। নির্দিষ্ট ইভেন্টগুলি ট্র্যাক করার জন্য এক্সটেন্ডেড ইভেন্ট সেশন তৈরি করুন যেমন ডেডলক, দীর্ঘস্থায়ী কোয়েরি, বা অতিরিক্ত পুনঃসংকলন।

তাৎক্ষণিক তদন্তের জন্য অ্যাক্টিভিটি মনিটর এবং চলমান পর্যবেক্ষণ এবং ঐতিহাসিক বিশ্লেষণের জন্য এক্সটেন্ডেড ইভেন্ট ব্যবহার করুন। দুটি টুল বিভিন্ন চাহিদা পূরণ করে।

সম্পর্কে আরও জানার জন্য SQL Server বর্ধিত ইভেন্ট ক্ষমতা এবং উন্নত পর্যবেক্ষণ কৌশল, আমাদের দেখুন ব্যাপক SQL Server বর্ধিত ইভেন্ট গাইড.

৮.২ তৃতীয় পক্ষের পর্যবেক্ষণ সমাধান

SolarWinds Database Performance Analyzer, Redgate SQL Monitor, এবং Quest Spotlight-এর মতো বাণিজ্যিক টুলগুলো এমন কিছু বৈশিষ্ট্য প্রদান করে যা Activity Monitor-এ নেই: যেমন অ্যালার্টিং, ঐতিহাসিক প্রবণতা বিশ্লেষণ, ধারণক্ষমতা পরিকল্পনা, এবং স্বয়ংক্রিয় ডায়াগনস্টিকস।

এই সরঞ্জামগুলি অ্যাক্টিভিটি মনিটরে মূল্যবান সংযোজন, প্রতিস্থাপন নয়। অত্যাধুনিক পর্যবেক্ষণ সরঞ্জামগুলি উপলব্ধ থাকা সত্ত্বেও, দ্রুত পরীক্ষা এবং তদন্তের জন্য অ্যাক্টিভিটি মনিটর কার্যকর থাকে।

এড়ানোর জন্য 7.4টি সাধারণ ভুল

অ্যাক্টিভিটি মনিটরের সাধারণ ভুলগুলি বোঝা আপনাকে এটি আরও কার্যকরভাবে ব্যবহার করতে সহায়তা করে।

৭.৪.১ অ্যাক্টিভিটি মনিটরকে ক্রমাগত চালু রাখা

সবচেয়ে সাধারণ ভুলটি হলো অ্যাক্টিভিটি মনিটর চালু করে অনির্দিষ্টকালের জন্য চালু রাখা। এতে সার্ভারের রিসোর্স নষ্ট হয় এবং তেমন কোনো উপকারে আসে না, কারণ আপনি সক্রিয়ভাবে পর্যবেক্ষণ করছেন না।

যখন আপনি সক্রিয়ভাবে এটি ব্যবহার করছেন না তখন অ্যাক্টিভিটি মনিটর বন্ধ করুন। যদি আপনার ক্রমাগত পর্যবেক্ষণের প্রয়োজন হয়, তাহলে নির্ধারিত ডেটা সংগ্রহের মাধ্যমে একটি সঠিক পর্যবেক্ষণ সমাধান বাস্তবায়ন করুন।

৭.৪.২ শুধুমাত্র অ্যাক্টিভিটি মনিটরের উপর অতিরিক্ত নির্ভর করা

অ্যাক্টিভিটি মনিটর সার্ভারের স্বাস্থ্যের উপর একটি দৃষ্টিভঙ্গি প্রদান করে। শুধুমাত্র এর উপর নির্ভর করবেন না। OS-স্তরের মেট্রিক্সের জন্য Windows Performance Monitor, বিস্তারিত ট্র্যাকিংয়ের জন্য Extended Events এবং Query টিউনিংয়ের জন্য Execution Plan বিশ্লেষণের সাথে পরিপূরক।

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

এই সম্পর্কে আরও জানো SQL Server আমাদের মধ্যে কর্মক্ষমতা মনিটর সম্পূর্ণ গাইড.

৭.৪.৩ ঐতিহাসিক প্রবণতা উপেক্ষা করা

অ্যাক্টিভিটি মনিটর বর্তমান অবস্থা দেখায়, কিন্তু পারফরম্যান্স সমস্যাগুলির প্যাটার্ন প্রায়শই সময়ের সাথে সাথে দৃশ্যমান হয়। ঐতিহাসিক তথ্য সংগ্রহ বাস্তবায়ন করুন যাতে আপনি বর্তমান মেট্রিক্সকে বেসলাইনের সাথে তুলনা করতে পারেন এবং প্রবণতা সনাক্ত করতে পারেন।

ঐতিহাসিক প্রেক্ষাপট ছাড়া, আপনি হয়তো বুঝতে পারবেন না যে আজকের "স্বাভাবিক" CPU ব্যবহার গত মাসের বেসলাইনের তুলনায় 30% বেশি, যা ধীরে ধীরে অবনতির ইঙ্গিত দেয়।

৮. অ্যাক্টিভিটি মনিটরের সমস্যা সমাধান

অ্যাক্টিভিটি মনিটর নিজেও মাঝে মাঝে সমস্যার সম্মুখীন হয়। এই সমস্যাগুলি কীভাবে সমাধান করতে হয় তা জানা হতাশা রোধ করে।

৮.১ অ্যাক্টিভিটি মনিটর খুলবে না অথবা কোনও ডেটা প্রদর্শন করবে না

যখন অ্যাক্টিভিটি মনিটর খোলে কিন্তু ফাঁকা প্যানেল দেখায় অথবা একেবারেই খোলে না, তখন বেশ কয়েকটি কারণ দায়ী হতে পারে।

৮.১.১ অনুমতি সংক্রান্ত সমস্যা

অ্যাক্টিভিটি মনিটরের সমস্যার সবচেয়ে সাধারণ কারণ হলো অপর্যাপ্ত অনুমতি। যাচাই ও সমাধান করতে:

  1. আপনার সার্ভার-স্তরের অনুমতিগুলি পরীক্ষা করুন:
    SELECT * FROM fn_my_permissions(NULL, 'SERVER')
    WHERE permission_name = 'VIEW SERVER STATE';
    
  2. যদি কোনও সারি ফিরে না আসে, তাহলে আপনার VIEW SERVER STATE অনুমতি নেই।
  3. সার্ভার প্রশাসককে এটি মঞ্জুর করতে বলুন:
    USE master;
    GRANT VIEW SERVER STATE TO [YourLogin];
    
  4. অনুমতি পাওয়ার পর অ্যাক্টিভিটি মনিটর বন্ধ করুন এবং আবার খুলুন।

৮.১.২ সংস্করণের সামঞ্জস্যের সমস্যা

এর একটি পুরানো সংস্করণ ব্যবহার করে SQL Server ম্যানেজমেন্ট স্টুডিও একটি নতুনের সাথে সংযুক্ত হবে SQL Server সংস্করণটি অ্যাক্টিভিটি মনিটরের ব্যর্থতার কারণ হতে পারে। টুলটি নতুন অপেক্ষার ধরণ বা সিস্টেম ভিউ কলামগুলি বুঝতে নাও পারে।

সর্বদা এমন SSMS সংস্করণ ব্যবহার করুন যা আপনার সাথে মেলে বা তার চেয়ে নতুন SQL Server সংস্করণ। মাইক্রোসফট সর্বশেষ SSMS বিনামূল্যে ডাউনলোড হিসেবে প্রদান করে, যা আলাদা SQL Server নিজেই।

৮.১.৩ ফায়ারওয়াল এবং নেটওয়ার্ক সমস্যা

অ্যাক্টিভিটি মনিটরের সাথে সংযোগ প্রয়োজন SQL Server স্ট্যান্ডার্ড পোর্টে ইনস্ট্যান্স (ডিফল্টরূপে ১৪৩৩)। যদি আপনি অবজেক্ট এক্সপ্লোরারের মাধ্যমে সংযোগ করতে পারেন কিন্তু অ্যাক্টিভিটি মনিটর ব্যর্থ হয়, তাহলে ফায়ারওয়াল নিয়মগুলি নির্দিষ্ট সংযোগগুলিকে ব্লক করতে পারে।

আপনার ক্লায়েন্ট যোগাযোগ করতে পারছেন কিনা তা যাচাই করুন SQL Server সমস্ত প্রয়োজনীয় পোর্টে মেশিন। আপনার ক্লায়েন্ট এবং সার্ভারের মধ্যে উইন্ডোজ ফায়ারওয়াল এবং যেকোনো নেটওয়ার্ক ফায়ারওয়াল উভয়ই পরীক্ষা করুন।

৮.২ অ্যাক্টিভিটি মনিটর স্থায়ীভাবে বিরতি দেওয়া হয়েছে

একটি সাধারণ সমস্যা, বিশেষ করে SQL Server ২০১৯ সালে, অ্যাক্টিভিটি মনিটরটি বিরতিপ্রাপ্ত অবস্থায় খোলা হচ্ছে এবং পুনরায় শুরু করতে অস্বীকৃতি জানাচ্ছে।

৮.২.১ বিরতিপ্রাপ্ত অবস্থা বোঝা

যখন অ্যাক্টিভিটি মনিটর পজ করে, তখন সমস্ত প্যানে "পজড" স্ট্যাটাস দেখায় এবং একটি রিজিউম বোতাম থাকে যা কাজ নাও করতে পারে। এটি আপনাকে সার্ভারের কোনও অ্যাক্টিভিটি দেখতে বাধা দেয়।

বিরতিপ্রাপ্ত অবস্থা সাধারণত ইচ্ছাকৃত বিরতি কর্মের পরিবর্তে অনুমতি সংক্রান্ত সমস্যা, দূরবর্তী সংযোগ সীমাবদ্ধতা, অথবা SSMS সংস্করণ বাগের কারণে ঘটে।

8.2.2 সাধারণ কারণ

নিম্নলিখিত কারণে অ্যাক্টিভিটি মনিটর স্থায়ীভাবে বিরতিপ্রাপ্ত অবস্থায় প্রবেশ করতে পারে:

  • সাম্প্রতিক সময়ে যোগ করা নতুন প্যানে VIEW SERVER STATE অনুমতি অনুপস্থিত SQL Server সংস্করণ
  • দূরবর্তী সংযোগগুলি নিষ্ক্রিয় করা হয়েছে SQL Server উদাহরণ
  • নির্দিষ্ট সিস্টেম প্রশ্নের জন্য প্রমাণীকরণ ব্যর্থতা
  • নির্দিষ্ট SSMS বিল্ডে বাগ, বিশেষ করে 18.0 থেকে 18.3 পর্যন্ত
  • ক্লায়েন্ট এবং সার্ভারের মধ্যে সংযোগ সমস্যা

৮.২.৩ রেজোলিউশনের ধাপ

অ্যাক্টিভিটি মনিটরের পজ করা অবস্থা সংক্রান্ত সমস্যা সমাধানের জন্য:

  1. SSMS আপডেট করুন: ডাউনলোড করুন এবং সর্বশেষ ইনস্টল করুন SQL Server মাইক্রোসফটের ওয়েবসাইট থেকে ম্যানেজমেন্ট স্টুডিও সংস্করণ। পরবর্তী রিলিজগুলিতে অনেক বিরতিপ্রাপ্ত স্টেট বাগ সংশোধন করা হয়েছে।
  2. অনুমতি যাচাই করুন: নিশ্চিত করুন যে আপনার সার্ভার স্টেট দেখুন এবং যেকোনো সংজ্ঞা দেখুন অনুমতি আছে।
  3. রিমোট সংযোগ পরীক্ষা করুন: যাচাই করুন SQL Server উদাহরণ দূরবর্তী সংযোগের অনুমতি দেয়:
    EXEC sp_configure 'remote access';
    

    যদি মান ০ হয়, তাহলে প্রশাসককে এটি সক্রিয় করতে বলুন।

  4. SSMS পুনরায় চালু করুন: কখনও কখনও শুধু সব উইন্ডো বন্ধ করে রিস্টার্ট করলেই হয়। SQL Server ম্যানেজমেন্ট স্টুডিও সমস্যাটি সমাধান করে।
  5. উইন্ডোজ প্রমাণীকরণের সাথে সংযোগ করুন: যদি SQL প্রমাণীকরণ ব্যবহার করেন, তাহলে Windows প্রমাণীকরণ ব্যবহার করে দেখুন, কারণ এটি কখনও কখনও প্রমাণীকরণ-সম্পর্কিত বিরতির সমস্যাগুলিকে এড়িয়ে যায়।

৮.৩ অ্যাক্টিভিটি মনিটর ব্যবহার করার সময় কর্মক্ষমতা সংক্রান্ত সমস্যা

যদি অ্যাক্টিভিটি মনিটর নিজেই ধীর হয়ে যায় বা সার্ভারের কর্মক্ষমতা হ্রাসের কারণ হয়, তাহলে সমন্বয় প্রয়োজন।

৮.৩.১ পর্যবেক্ষণ ওভারহেড হ্রাস করা

অ্যাক্টিভিটি মনিটরের প্রভাব কমাতে:

  1. রিফ্রেশের ব্যবধান ৩০ সেকেন্ড বা ১ মিনিটে বাড়ান।
  2. যেসব প্যান আপনি সক্রিয়ভাবে ব্যবহার করছেন না সেগুলো বন্ধ করুন 'ধরা' বোতামে ক্লিক করে।
  3. যখন প্যানগুলি ধসে পড়ে, তখন অ্যাক্টিভিটি মনিটর তাদের জন্য ডেটা অনুসন্ধান করে না।
  4. একসাথে একাধিক অ্যাক্টিভিটি মনিটর ইন্সট্যান্স চালানো এড়িয়ে চলুন।
  5. সক্রিয়ভাবে সমস্যাগুলি তদন্ত না করলে অ্যাক্টিভিটি মনিটর সম্পূর্ণরূপে বন্ধ করুন।

৮.৩.২ বিকল্প হালকা ওজনের পর্যবেক্ষণ পদ্ধতি

যদি অ্যাক্টিভিটি মনিটর আপনার পরিবেশের জন্য খুব বেশি সম্পদ-নিবিড় হয়, তাহলে বিকল্পগুলি বিবেচনা করুন:

  • সরাসরি DMV গুলি জিজ্ঞাসা করুন: নির্দিষ্ট T-SQL কোয়েরি লিখুন যা শুধুমাত্র আপনার প্রয়োজনীয় তথ্য উদ্ধার করে।
  • sp_WhoIsActive ব্যবহার করুন: এই সঞ্চিত পদ্ধতিটি অত্যন্ত অপ্টিমাইজ করা হয়েছে এবং সাধারণত অ্যাক্টিভিটি মনিটরের তুলনায় কম ওভারহেড থাকে।
  • নমুনা বাস্তবায়ন করুন: SQL এজেন্টের কাজগুলি নির্ধারণ করুন যা নিয়মিত বিরতিতে DMV ডেটার স্ন্যাপশট ক্যাপচার করে, পরবর্তী বিশ্লেষণের জন্য ফলাফলগুলি টেবিলে সংরক্ষণ করে।
  • সেকেন্ডারি রেপ্লিকাগুলি পর্যবেক্ষণ করুন: In সর্বদা প্রাপ্যতা গ্রুপ, প্রাথমিকের পরিবর্তে একটি পঠনযোগ্য মাধ্যমিকের বিরুদ্ধে অ্যাক্টিভিটি মনিটর চালান।

৮.৪ ভুল বা অনুপস্থিত তথ্য

কখনও কখনও অ্যাক্টিভিটি মনিটর এমন তথ্য প্রদর্শন করে যা ভুল বা অসম্পূর্ণ বলে মনে হয়।

৮.৪.১ ডিএমভি ব্যবহার করে তথ্য যাচাই করা

যখন অ্যাক্টিভিটি মনিটরের ফলাফল সন্দেহজনক মনে হয়, তখন সরাসরি অন্তর্নিহিত DMV গুলি জিজ্ঞাসা করে যাচাই করুন। উদাহরণস্বরূপ, যদি Processes প্যানে কোনও ব্লকিং না দেখায় কিন্তু ব্যবহারকারীরা এটি রিপোর্ট করে, তাহলে জিজ্ঞাসা করুন:

SELECT 
    blocking_session_id,
    session_id,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;

যদি এই কোয়েরিতে দেখা যায় যে অ্যাক্টিভিটি মনিটর মিস করা হয়েছে, তাহলে আপনি ডিসপ্লে সমস্যা নিশ্চিত করেছেন।

৮.৪.২ ডেটা রিফ্রেশ টাইমিং বোঝা

মনে রাখবেন যে অ্যাক্টিভিটি মনিটর স্ন্যাপশট দেখায়। রিফ্রেশ ব্যবধানের মধ্যে চলমান একটি কোয়েরি সাম্প্রতিক ব্যয়বহুল কোয়েরিতে প্রদর্শিত হবে না যদি না এর এক্সিকিউশন প্ল্যান ক্যাশে থাকে।

একইভাবে, রিসোর্স ওয়েটস প্যানে অপেক্ষার পরিসংখ্যান শেষ স্ন্যাপশট থেকে সংগ্রহ প্রতিফলিত করে। দ্রুত পরিবর্তনশীল কাজের চাপ প্রতিটি রিফ্রেশে বিভিন্ন প্যাটার্ন দেখাতে পারে।

৯. উন্নত কার্যকলাপ পর্যবেক্ষণ কৌশল

অভিজ্ঞ ডাটাবেস অ্যাডমিনিস্ট্রেটররা সর্বোচ্চ ডায়াগনস্টিক সুবিধা লাভের জন্য অ্যাক্টিভিটি মনিটরকে অত্যাধুনিক উপায়ে ব্যবহার করেন।

৯.১ মূল কারণ বিশ্লেষণের জন্য একাধিক ফলক একত্রিত করা

জটিল কর্মক্ষমতা সমস্যাগুলি বোঝার জন্য একাধিক প্যানে তথ্যের সাথে সম্পর্ক স্থাপন করলে অ্যাক্টিভিটি মনিটরের আসল শক্তি ফুটে ওঠে।

৯.১.১ প্রয়োগের সাথে প্রক্রিয়ার সম্পর্ক স্থাপন

যখন রিসোর্স ওয়েটস পেইনটি কোনও বিভাগে উচ্চ অপেক্ষার সময় দেখায়, তখন কোন সেশনগুলিতে এই অপেক্ষাগুলি চলছে তা সনাক্ত করতে প্রসেসেস পেইনটি ব্যবহার করুন:

  1. অপেক্ষার সময় বেশি (যেমন, "লক") সহ অপেক্ষার বিভাগটি লক্ষ্য করুন।
  2. প্রসেসস ফলকে স্যুইচ করুন।
  3. ক্রমানুসার অপেক্ষার ধরণ তাদের বর্তমান অপেক্ষা অনুসারে সেশনগুলিকে গ্রুপ করতে।
  4. সমস্যাযুক্ত বিভাগে অপেক্ষার ধরণ দেখানো সেশনগুলি সন্ধান করুন।
  5. সেই সেশনগুলির জন্য, পরীক্ষা করুন অপেক্ষার রিসোর্স কোন ডাটাবেস অবজেক্ট জড়িত তা দেখার জন্য কলাম।
  6. ডান ক্লিক করুন এবং নির্বাচন করুন বিস্তারিত কোয়েরি টেক্সট দেখতে।

এই পারস্পরিক সম্পর্ক আপনাকে "আমাদের কাছে লক অপেক্ষা আছে" থেকে "এই নির্দিষ্ট প্রশ্নটি এই টেবিলে লকগুলির জন্য অপেক্ষা করছে" এ যেতে সাহায্য করে।

৯.১.২ ব্যয়বহুল প্রশ্নগুলিকে I/O সমস্যার সাথে সংযুক্ত করা

যখন ডেটা ফাইল I/O প্যানে একটি নির্দিষ্ট ডাটাবেসে উচ্চ ডিস্ক কার্যকলাপ দেখা যায়:

  1. কোন ডাটাবেস ফাইলগুলির পঠন বা লেখার হার বেশি, তা লক্ষ্য করুন।
  2. সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলিতে স্যুইচ করুন।
  3. ক্রমানুসার শারীরিক পাঠ/সেকেন্ড ডিস্ক থেকে প্রচুর পরিমাণে পড়া প্রশ্নগুলি সনাক্ত করতে।
  4. উচ্চ I/O সহ ডাটাবেসের বিরুদ্ধে চলমান কোয়েরিগুলি ফিল্টার করুন বা দৃশ্যত সনাক্ত করুন।
  5. টেবিল স্ক্যান বা অনুপস্থিত সূচকের জন্য অতিরিক্ত I/O সৃষ্টিকারী প্রশ্নের কার্যকরী পরিকল্পনা পরীক্ষা করুন।

এই মাল্টি-পেন বিশ্লেষণ লক্ষণগুলি (উচ্চ ডিস্ক I/O) কে কারণগুলির (নির্দিষ্ট অদক্ষ প্রশ্ন) সাথে সংযুক্ত করে।

৯.২ সক্ষমতা পরিকল্পনার জন্য কার্যকলাপ মনিটর ব্যবহার

যদিও অ্যাক্টিভিটি মনিটর ঐতিহাসিক তথ্য সংরক্ষণ করে না, আপনি ক্ষমতা পরিকল্পনা পর্যবেক্ষণের জন্য কৌশলগতভাবে এটি ব্যবহার করতে পারেন।

৯.২.১ সর্বোচ্চ ব্যবহারের ধরণ চিহ্নিতকরণ

ব্যবহারের ধরণ সনাক্ত করতে দিনের বিভিন্ন সময়ে সার্ভারের কার্যকলাপ পর্যবেক্ষণ করুন:

  1. পরিচিত সর্বোচ্চ ব্যবসায়িক সময়ের মধ্যে অ্যাক্টিভিটি মনিটর খুলুন।
  2. % প্রসেসর টাইম গ্রাফের সর্বোচ্চ মানগুলি লক্ষ্য করুন।
  3. সর্বাধিক অপেক্ষার কাজের সংখ্যা রেকর্ড করুন।
  4. সর্বোচ্চ সময়ে ব্যাচ অনুরোধ/সেকেন্ড পর্যবেক্ষণ করুন।
  5. প্রসেসস ফলকে ব্যস্ততম ডাটাবেসগুলি নথিভুক্ত করুন।
  6. তুলনা করার জন্য অফ-পিক আওয়ারে পুনরাবৃত্তি করুন।

যদি পিক-আওয়ার প্রসেসরের সময় ধারাবাহিকভাবে ৮০% ছাড়িয়ে যায়, তাহলে আপনি CPU ধারণক্ষমতার সীমার কাছাকাছি পৌঁছে যাচ্ছেন। একইভাবে, অপেক্ষার সংখ্যা বৃদ্ধি ক্রমবর্ধমান রিসোর্স বিরোধের ইঙ্গিত দেয়।

৯.২.২ রিসোর্স ট্রেন্ড বিশ্লেষণ

অ্যাক্টিভিটি মনিটর বর্তমান অবস্থা দেখায়, তবে আপনি সময়ের সাথে সাথে গুরুত্বপূর্ণ মেট্রিক্স রেকর্ড করে স্পট-চেক ট্রেন্ডিংয়ের জন্য এটি ব্যবহার করতে পারেন:

  • প্রতিদিন একই সময়ে ওভারভিউ প্যানের স্ক্রিনশট নিন
  • প্রতিটি গ্রাফ থেকে সর্বোচ্চ মান রেকর্ড করুন
  • বৃদ্ধির প্রবণতা সনাক্ত করতে সপ্তাহের পর সপ্তাহ তুলনা করুন
  • গড় প্রসেসর সময় বা I/O হার ধীরে ধীরে বৃদ্ধির দিকে লক্ষ্য রাখুন।

এই ম্যানুয়াল ট্রেন্ডিং আরও পরিশীলিত পর্যবেক্ষণ সমাধানের পরিপূরক এবং ক্ষমতা সম্প্রসারণের ন্যায্যতা প্রমাণ করতে সহায়তা করে।

৯.৩ কর্মক্ষমতার ভিত্তিরেখা নথিভুক্তকরণ

বেসলাইন পারফরম্যান্স মেট্রিক্স স্থাপন করলে আপনি বুঝতে পারবেন কখন পারফরম্যান্সের অবনতি হয়।

৯.৩.১ বেসলাইন মেট্রিক্স ক্যাপচার করা

পরিচিত ভালো পারফরম্যান্সের সময়কালে, অ্যাক্টিভিটি মনিটরের মেট্রিক্স নথিভুক্ত করুন:

  1. স্বাভাবিক ব্যবসায়িক কার্যক্রমের সময় (পিক বা অফ-পিক নয়) অ্যাক্টিভিটি মনিটর খুলুন।
  2. রেকর্ড ওভারভিউ ফলকের মান:
    • সাধারণ % প্রসেসর সময়সীমা
    • গড় অপেক্ষার কাজের সংখ্যা
    • সাধারণ ডাটাবেস I/O হার
    • সাধারণ ব্যাচ অনুরোধ/সেকেন্ড
  3. রিসোর্স ওয়েটস প্যানে সেই ক্যাটাগরিগুলো নোট করুন যেগুলোতে সবচেয়ে বেশি অপেক্ষার সময় দেখা যায়।
  4. Processes ফলকে সাধারণত সক্রিয় প্রক্রিয়ার সংখ্যা নথিভুক্ত করুন।
  5. সাম্প্রতিক ব্যয়বহুল কোয়েরি থেকে প্রতিনিধিত্বমূলক কোয়েরি এক্সিকিউশন মেট্রিক্স রেকর্ড করুন।

কর্মক্ষমতা সমস্যা তদন্ত করার সময় ভবিষ্যতের রেফারেন্সের জন্য এই বেসলাইন ডকুমেন্টেশনটি সংরক্ষণ করুন।

৯.৩.২ বর্তমান বনাম বেসলাইন পারফরম্যান্সের তুলনা

যখন পারফরম্যান্সের সমস্যা দেখা দেয়, তখন আপনার নথিভুক্ত বেসলাইনের সাথে বর্তমান অ্যাক্টিভিটি মনিটরের রিডিং তুলনা করুন:

  • প্রসেসরের সময় কি বেসলাইনের চেয়ে উল্লেখযোগ্যভাবে বেশি? CPU-নিবিড় প্রশ্নের উপর মনোযোগ দিন।
  • অপেক্ষার কাজগুলি কি বেসলাইন স্তরের ২-৩ গুণ বেশি? রিসোর্স অপেক্ষাগুলি অনুসন্ধান করুন।
  • I/O কি যথেষ্ট বেশি? ডেটা ফাইল I/O ফলক এবং ব্যয়বহুল কোয়েরিগুলি পরীক্ষা করুন।
  • পিক আওয়ারে কি ব্যাচ রিকোয়েস্ট বেসলাইনের চেয়ে কম? ব্লকিং বা কানেক্টিভিটির সমস্যা আছে কিনা দেখুন।

এই তুলনা আপনাকে কী পরিবর্তন হয়েছে তা সনাক্ত করতে এবং সমস্যা সমাধানের প্রচেষ্টাগুলিকে যথাযথভাবে ফোকাস করতে সহায়তা করে।

৯.৪ কাস্টম মনিটরিং ওয়ার্কফ্লো তৈরি করা

পুঙ্খানুপুঙ্খ, পুনরাবৃত্তিযোগ্য বিশ্লেষণ নিশ্চিত করার জন্য সাধারণ তদন্ত পরিস্থিতির জন্য পদ্ধতিগত কর্মপ্রবাহ তৈরি করুন।

৯.৪.১ ধাপে ধাপে তদন্ত প্রক্রিয়া

ব্যবহারকারীরা যখন কর্মক্ষমতা সংক্রান্ত সমস্যার কথা জানান, তখন একটি ধারাবাহিক কর্মপ্রবাহ অনুসরণ করুন:

  1. দ্রুত স্বাস্থ্য পরীক্ষা: অ্যাক্টিভিটি মনিটর খুলুন এবং স্পষ্ট অসঙ্গতিগুলির জন্য ওভারভিউ প্যান গ্রাফগুলি স্ক্যান করুন।
  2. ব্লক করা আছে কিনা তা পরীক্ষা করুন: প্রসেস ফলকটি প্রসারিত করুন, ব্লকড বাই কলামে নন-ব্ল্যাঙ্কের জন্য ফিল্টার করুন।
  3. সম্পদের বিরোধ চিহ্নিত করুন: রিসোর্স ওয়েটস প্যানটি অপেক্ষার সময় অনুসারে সাজানো পর্যালোচনা করুন।
  4. ব্যয়বহুল প্রশ্ন খুঁজুন: CPU অনুসারে সাজানো সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলি পরীক্ষা করুন, তারপর এক্সিকিউশন, তারপর রিড।
  5. I/O প্যাটার্নের সাথে সম্পর্কযুক্ত করুন: ডেটা ফাইল I/O প্যান কার্যকলাপের সাথে ব্যয়বহুল প্রশ্নগুলির ক্রস-রেফারেন্স।
  6. নথির ফলাফল: স্ক্রিনশট নিন এবং প্রাসঙ্গিক সেশন আইডি, অপেক্ষার ধরণ এবং কোয়েরির বিবরণ রেকর্ড করুন।
  7. গভীর ডুব: চিহ্নিত সমস্যাগুলির বিস্তারিত তদন্তের জন্য প্রোফাইলার ট্রেস, এক্সিকিউশন প্ল্যান বিশ্লেষণ এবং DMV কোয়েরি ব্যবহার করুন।

৯.৪.২ বর্ধনের মানদণ্ড

কখন সমস্যাগুলি আরও বাড়ানো উচিত এবং তদন্ত চালিয়ে যাওয়া উচিত তার মানদণ্ড স্থাপন করুন:

  • অবিলম্বে আরও জোর দিন: ৫ মিনিটের বেশি সময় ধরে ব্লকিং চেইন, প্রসেসরের সময় ১০০% এর বেশি সময় ধরে, গুরুত্বপূর্ণ সিস্টেম প্রক্রিয়াগুলি স্থগিত অবস্থা দেখাচ্ছে।
  • বিশ্লেষণের সাথে আরও জোর দিন: পুনরাবৃত্ত ব্যয়বহুল কোয়েরিগুলি ৫০% এর বেশি CPU ব্যবহার করে, ধারাবাহিকভাবে উচ্চ I/O প্রতিক্রিয়া সময় ৫০ মিলিসেকেন্ডের বেশি, মেমোরি গ্র্যান্ট বারবার ব্যর্থ হচ্ছে।
  • আরও তদন্ত করুন: অস্থায়ী অপেক্ষা কয়েক মিনিটের মধ্যে সমাধান হয়ে যাচ্ছে, সর্বোত্তম প্ল্যান না থাকা সত্ত্বেও কোয়েরিগুলোর পারফরম্যান্স গ্রহণযোগ্য, সামান্য ব্লকিং ৩০ সেকেন্ডের কম সময় স্থায়ী হয়।

১০. বিভিন্ন ধরণের অ্যাক্টিভিটি মনিটর SQL Server সংস্করণ

অ্যাক্টিভিটি মনিটর বিভিন্ন ক্ষেত্রে বিকশিত হয়েছে SQL Server সংস্করণ, প্রতিটি রিলিজের সাথে বর্ধিতকরণ এবং মাঝে মাঝে নতুন সমস্যা আসে।

১০.১ অ্যাক্টিভিটি মনিটর ইন SQL Server 2008 এবং পরবর্তী

SQL Server ২০০৮ সালে আধুনিক অ্যাক্টিভিটি মনিটর ডিজাইন চালু করা হয়েছিল যা আজও মূলত অপরিবর্তিত রয়েছে।

10.1.1 নতুন বৈশিষ্ট্য প্রবর্তিত SQL Server 2008

সার্জারির SQL Server ২০০৮ সালের অ্যাক্টিভিটি মনিটরের পুনঃডিজাইন উল্লেখযোগ্য উন্নতি এনেছে:

  • ওভারভিউ প্যানে রিয়েল-টাইম চার্ট সহ গ্রাফিক্যাল ড্যাশবোর্ড
  • পুরাতন গ্রিড-কেবল ভিউ প্রতিস্থাপন করে সম্প্রসারণযোগ্য/সংকোচনযোগ্য প্যান ইন্টারফেস
  • সাম্প্রতিক ব্যয়বহুল প্রশ্নের ফলকটি সামগ্রিক প্রশ্নের কর্মক্ষমতা ডেটা দেখাচ্ছে
  • প্রতি-ফাইল ডিস্ক কার্যকলাপ পর্যবেক্ষণের জন্য ডেটা ফাইল I/O ফলক
  • অপেক্ষা শ্রেণীবিভাগ সহ উন্নত রিসোর্স ওয়েটস ফলক
  • সেশন বন্ধ করা এবং প্রোফাইলার চালু করার মতো প্রক্রিয়া ক্রিয়াগুলির জন্য প্রসঙ্গ মেনুতে ডান-ক্লিক করুন।
  • ১ সেকেন্ড থেকে ১ ঘন্টা পর্যন্ত কনফিগারযোগ্য রিফ্রেশ ব্যবধান

এই পরিবর্তনগুলি অ্যাক্টিভিটি মনিটরকে একটি সাধারণ প্রক্রিয়া তালিকা থেকে একটি বিস্তৃত পর্যবেক্ষণ ড্যাশবোর্ডে রূপান্তরিত করেছে।

১০.১.২ থেকে পরিবর্তন SQL Server 2005

SQL Server ২০০৫ সালের অ্যাক্টিভিটি মনিটর অনেক বেশি সীমিত ছিল:

  • টুলবারের পরিবর্তে অবজেক্ট এক্সপ্লোরারের ম্যানেজমেন্ট ফোল্ডারের মাধ্যমে অ্যাক্সেস করা হয়েছে
  • একক গ্রিডে মৌলিক তথ্য সহ প্রক্রিয়া তালিকা দেখানো হচ্ছে
  • কোনও গ্রাফিকাল চার্ট বা একাধিক প্যান নেই
  • কোনও ব্যয়বহুল প্রশ্ন বা I/O পর্যবেক্ষণ নেই
  • সীমিত অপেক্ষা পরিসংখ্যান তথ্য

২০০৮ সালের পুনঃডিজাইন ক্রমবর্ধমান উন্নতির পরিবর্তে সম্পূর্ণ পুনর্কল্পনার প্রতিনিধিত্ব করেছিল।

১০.১ অ্যাক্টিভিটি মনিটর ইন SQL Server 2014/2016

SQL Server ২০১৪ এবং ২০১৬ সালে অ্যাক্টিভিটি মনিটরের অন্তর্নিহিত ডেটা সংগ্রহে ক্রমবর্ধমান উন্নতি করা হয়েছে কিন্তু খুব কম দৃশ্যমান পরিবর্তন হয়েছে।

১০.২.১ উন্নতি এবং বর্ধন

এই সংস্করণগুলির মূল উন্নতিগুলির মধ্যে রয়েছে:

  • হাজার হাজার ক্যাশেড প্ল্যানের মাধ্যমে সার্ভার পর্যবেক্ষণ করার সময় আরও ভালো পারফরম্যান্স
  • প্রসেস ফলকে উন্নত ফিল্টারিং ক্ষমতা
  • অপেক্ষা পরিসংখ্যান একত্রিতকরণের উন্নত নির্ভুলতা
  • বৃহৎ ফলাফল সেটের সাহায্যে কলাম বাছাই এবং ফিল্টারিংয়ের আরও ভালো পরিচালনা
  • আরও দক্ষ DMV কোয়েরি যা মনিটরিং ওভারহেড কমিয়ে আনবে

মূল ইন্টারফেসটি সামঞ্জস্যপূর্ণ ছিল SQL Server ২০০৮, প্রশাসকদের সাথে পরিচিতি বজায় রাখা।

১০.১ অ্যাক্টিভিটি মনিটর ইন SQL Server 2019/2022

সাম্প্রতিক SQL Server সংস্করণগুলি কর্মক্ষমতা এবং স্থিতিশীলতার উপর মনোযোগ দিয়ে অ্যাক্টিভিটি মনিটরের বিবর্তন অব্যাহত রাখে।

১০.৩.১ সর্বশেষ বৈশিষ্ট্য এবং ক্ষমতা

SQL Server ২০১৯ এবং ২০২২ অ্যাক্টিভিটি মনিটরে অন্তর্ভুক্ত রয়েছে:

  • এই সংস্করণগুলিতে নতুন অপেক্ষার ধরণগুলির জন্য সমর্থন চালু করা হয়েছে
  • WPF প্রযুক্তি ব্যবহার করে SSMS-এ উন্নত রেন্ডারিং কর্মক্ষমতা।
  • বিপুল সংখ্যক সক্রিয় সেশনের আরও ভালো পরিচালনা
  • ক্লাউড SQL প্ল্যাটফর্মের সাথে উন্নত সামঞ্জস্যতা
  • আরও সঠিক CPU এবং I/O মেট্রিক্স

১০.৩.২ সাম্প্রতিক সংস্করণগুলিতে জ্ঞাত সমস্যা

SQL Server ২০১৯ সালে বেশ কিছু অ্যাক্টিভিটি মনিটর বাগ দেখা গেছে:

  • স্থায়ীভাবে বিরতিপ্রাপ্ত অবস্থা: অ্যাক্টিভিটি মনিটর প্রায়শই বিরতিহীন অবস্থায় প্রবেশ করে এবং পুনরায় চালু হয় না, বিশেষ করে SSMS 18.0-18.3-এ। পরবর্তী SSMS সংস্করণগুলিতে এটি ঠিক করা হয়েছে।
  • দূরবর্তী সংযোগ ব্যর্থতা: কিছু কনফিগারেশন অ্যাক্টিভিটি মনিটরকে রিমোট ইনস্ট্যান্সে খোলা থেকে বিরত রাখে। সমাধানের মধ্যে রয়েছে নির্দিষ্ট ট্রেস ফ্ল্যাগ সক্ষম করা বা নতুন SSMS বিল্ড ব্যবহার করা।
  • অনুমতি সমস্যা: নতুন সিস্টেম ভিউয়ের জন্য অতিরিক্ত অনুমতির প্রয়োজন হয় যা স্পষ্টভাবে নথিভুক্ত করা হয়নি, যার ফলে VIEW SERVER STATE থাকা সত্ত্বেও ফাঁকা প্রদর্শন দেখা যায়।

কাজ করার সময় সর্বদা সর্বশেষ SSMS সংস্করণ ব্যবহার করুন SQL Server এই সমস্যাগুলি এড়াতে ২০১৯ এবং ২০২২।

১১. ব্যবহারিক ব্যবহারের উদাহরণ এবং ব্যবহারিক ব্যবহার

বাস্তব-বিশ্বের উদাহরণগুলি দেখায় যে সাধারণ সমস্যা সমাধানের পরিস্থিতিতে কীভাবে কার্যকরভাবে অ্যাক্টিভিটি মনিটর প্রয়োগ করা যায়।

১১.১ কেস স্টাডি: একটি ধীর ওয়েব অ্যাপ্লিকেশন নির্ণয় করা

একটি ডেভেলপমেন্ট টিম জানিয়েছে যে তাদের ওয়েব অ্যাপ্লিকেশনটি অগ্রহণযোগ্যভাবে ধীর হয়ে গেছে, পৃষ্ঠা লোড হতে স্বাভাবিক ২-৩ সেকেন্ডের পরিবর্তে ২০-৩০ সেকেন্ড সময় লাগে।

১১.১.১ ওভারভিউ ফলক সহ প্রাথমিক তদন্ত

অ্যাক্টিভিটি মনিটর খুলুন এবং ওভারভিউ ফলকটি পরীক্ষা করুন:

  1. % প্রসেসর টাইম গ্রাফটি 85-95% CPU ব্যবহার দেখায়, যা স্বাভাবিক 30-40% বেসলাইনের চেয়ে উল্লেখযোগ্যভাবে বেশি।
  2. অপেক্ষার কাজগুলি ১০-২০টি কাজের মধ্যে ওঠানামা করে, যেখানে স্বাভাবিক বেসলাইন ০-৩টি।
  3. ডাটাবেস I/O প্রায় ৫০ মেগাবাইট/সেকেন্ডের মাঝারি গতিতে কার্যকলাপ দেখায়।
  4. ব্যাচ রিকোয়েস্ট/সেকেন্ড প্রত্যাশার চেয়ে কম ১০০/সেকেন্ড, যেখানে ব্যবসায়িক সময়ের মধ্যে সাধারণত ৩০০-৪০০/সেকেন্ড থাকে।

এই প্যাটার্নটি সিপিইউ-তে রিসোর্স বিরোধের কারণে থ্রুপুট হ্রাসের ইঙ্গিত দেয়। সার্ভার কঠোর পরিশ্রম করছে কিন্তু অনেক অনুরোধ প্রক্রিয়া করছে না।

১১.১.২ সমস্যাযুক্ত প্রশ্নের সনাক্তকরণ

সাম্প্রতিক ব্যয়বহুল প্রশ্নের ফলকটি প্রসারিত করুন এবং এক্সিকিউশন/মিনিট অনুসারে সাজান:

  1. উপরের কোয়েরিটি প্রতি মিনিটে ১৫,০০০ মৃত্যুদণ্ড দেখায়।
  2. ডান ক্লিক করুন এবং নির্বাচন করুন কোয়েরি টেক্সট সম্পাদনা করুন প্রশ্নটি পরীক্ষা করার জন্য।
  3. কোয়েরিটি হল একটি সাধারণ SELECT স্টেটমেন্ট যা একটি একক ব্যবহারকারীর রেকর্ড পুনরুদ্ধার করে: SELECT * FROM Users WHERE UserId = @UserId.
  4. স্বাভাবিক অ্যাপ্লিকেশন ব্যবহারের জন্য এই কোয়েরিটি প্রতি মিনিটে ১৫,০০০ বার কার্যকর করা উচিত নয়।

কোয়েরিতে ডান-ক্লিক করুন এবং নির্বাচন করুন এক্সিকিউশন প্ল্যান দেখানপ্ল্যানটি Users টেবিলে একটি টেবিল স্ক্যান দেখায় যেখানে UserId কলামে একটি অনুপস্থিত সূচক সম্পর্কে একটি সতর্কতা রয়েছে।

শুধুমাত্র ওয়েব অ্যাপ্লিকেশনের সংযোগগুলি দেখানোর জন্য অ্যাপ্লিকেশন অনুসারে প্রক্রিয়া ফলকটি ফিল্টার করুন। একাধিক সেশনে একই কোয়েরি বারবার চলমান দেখায়।

১১.১.৩ সমাধান এবং যাচাইকরণ

সমস্যাটি দুটি সমস্যার কারণে উদ্ভূত: অতিরিক্ত কোয়েরি এক্সিকিউশন এবং অনুপস্থিত সূচক। সমাধানের ধাপ:

  1. অনুপস্থিত সূচক তৈরি করুন:
    CREATE NONCLUSTERED INDEX IX_Users_UserId 
    ON Users (UserId);
    
  2. ডেভেলপমেন্ট টিমের সাথে যোগাযোগ করুন অতিরিক্ত মৃত্যুদণ্ড কার্যকর করার বিষয়ে। তদন্তে অ্যাপ্লিকেশন কোডে একটি N+1 কোয়েরি সমস্যা দেখা দেয় যেখানে একটি লুপ তালিকার প্রতিটি আইটেমের জন্য ব্যবহারকারীর বিবরণ পুনরুদ্ধার করে।
  3. অ্যাপ্লিকেশনটি পরিবর্তন করুন একটি IN ক্লজ বা টেবিল-মূল্যায়িত প্যারামিটার ব্যবহার করে ব্যবহারকারীর লুকআপগুলিকে একটি একক কোয়েরিতে ব্যাচ করতে।
  4. সংশোধন যাচাই করুন স্থাপনার পরে অ্যাক্টিভিটি মনিটর পর্যবেক্ষণ করে। CPU ব্যবহার 35-40% এ নেমে আসে, প্রতি মিনিটে এক্সিকিউশন কমে 200-300 এ নেমে আসে এবং অ্যাপ্লিকেশন প্রতিক্রিয়া সময় স্বাভাবিক অবস্থায় ফিরে আসে।

১১.২ কেস স্টাডি: ব্লকিং সমস্যা সমাধান করা

ব্যবহারকারীরা জানিয়েছেন যে অর্ডার এন্ট্রি সিস্টেমটি স্বাভাবিক ক্রিয়াকলাপ পুনরায় শুরু করার আগে পর্যায়ক্রমে 30-60 সেকেন্ডের জন্য জমে থাকে।

১১.২.১ ব্লকিং চেইন সনাক্তকরণ

এই ফ্রিজ ইভেন্টগুলির একটির সময় অ্যাক্টিভিটি মনিটর খুলুন এবং প্রসেসস প্যানটি প্রসারিত করুন:

  1. ক্রমানুসার সেশন আইডি সমস্ত সংগঠিত সেশন দেখতে।
  2. একাধিক সেশনে মান দেখান ব্লক করেছে কলাম, সবগুলোই সেশন আইডি ৭৩ এর দিকে নির্দেশ করছে।
  3. ৭৩ নং অধিবেশনে '১' দেখানো হয়েছে হেড ব্লকার কলাম, যা নিশ্চিত করে যে এটিই মূল কারণ।
  4. সার্জারির অপেক্ষার ধরণ ব্লক করা সেশনের জন্য LCK_M_X দেখায়, যা নির্দেশ করে যে তারা এক্সক্লুসিভ লকগুলির জন্য অপেক্ষা করছে।
  5. সার্জারির অপেক্ষার রিসোর্স কলামটি দেখায় যে ব্লকিংটি অর্ডার টেবিলে রয়েছে।

১১.২.২ কারণ বিশ্লেষণ করা

সেশন ৭৩-এ ডান-ক্লিক করুন এবং নির্বাচন করুন বিস্তারিত কমান্ডটি দেখতে:

UPDATE Orders 
SET Status = 'Processing', 
    LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);

এই আপডেটটি একটি ব্যাচ প্রসেসিং কাজের অংশ যা প্রতি ঘন্টায় চলে। পরীক্ষা করা হচ্ছে লগইন কলামটি নিশ্চিত করে যে সেশনটি ব্যাচ প্রসেসিং পরিষেবা অ্যাকাউন্টের অন্তর্গত।

হাজার হাজার অর্ডার প্রক্রিয়াকরণের সময় কোয়েরিটি অর্ডার টেবিলে লক ধরে রাখছে। অপেক্ষা করুন সময় ব্লক করা সেশনের সংখ্যা ক্রমাগত বৃদ্ধি পাচ্ছে, যা নিশ্চিত করে যে এই দীর্ঘমেয়াদী অপারেশনই সমস্যা।

১১.২.৩ সংশোধন বাস্তবায়ন

স্বল্পমেয়াদী সমাধান:

  1. ডকুমেন্ট সেশন ৭৩ এর বিস্তারিত বিবরণ, যার মধ্যে কোয়েরি টেক্সট এবং সময়কাল অন্তর্ভুক্ত।
  2. আপডেটটি স্বাভাবিকভাবেই সম্পন্ন হতে দিন কারণ এটি বৈধ ব্যাচ প্রক্রিয়াকরণ।
  3. সমাপ্তির পরে, অবরুদ্ধ সেশনগুলি পরিষ্কার এবং স্বাভাবিক কার্যক্রম পুনরায় শুরু হয়েছে কিনা তা যাচাই করুন।

দীর্ঘমেয়াদী সমাধান বাস্তবায়িত:

  1. ব্যাচের কাজ পুনঃনির্ধারণ করুন অফ-পিক আওয়ারে চালানোর জন্য (কাজের সময়ের পরিবর্তে ভোর ২টা থেকে ৪টা পর্যন্ত)।
  2. ব্যাচ প্রক্রিয়াকরণ পরিবর্তন করুন একসাথে ১০০টি রেকর্ডের ছোট ব্যাচে অর্ডার আপডেট করা, ব্যাচগুলির মধ্যে লকগুলি মুক্ত করা।
  3. একটি সূচী যোগ করুন আপডেট অপারেশন দ্রুত করার জন্য OrderId কলামে।
  4. SNAPSHOT আইসোলেশন বিবেচনা করুন ব্লকিং প্রভাব কমাতে পঠন ক্রিয়াকলাপের জন্য।

১১.৩ কেস স্টাডি: অতিরিক্ত কোয়েরি সম্পাদন সনাক্তকরণ

ডাটাবেস পর্যবেক্ষণ দেখায় যে গত মাসে CPU ব্যবহার ধীরে ধীরে বৃদ্ধি পেয়েছে, কিন্তু অ্যাপ্লিকেশন কোডে কোনও স্পষ্ট পরিবর্তন ঘটেনি।

১১.৩.১ অস্বাভাবিক মৃত্যুদণ্ডের সংখ্যা চিহ্নিত করা

Activity Monitor খুলুন এবং Recent Expensive Queries প্যানটি পরীক্ষা করুন:

  1. ক্রমানুসার সম্পাদন/মিনিট সবচেয়ে বেশিবার সম্পাদিত কোয়েরিগুলো দেখতে।
  2. উপরের কোয়েরিটি প্রতি মিনিটে ৩৭,০০০টি মৃত্যুদণ্ড দেখায় - অন্য যেকোনো কোয়েরির চেয়ে অনেক বেশি।
  3. ডান ক্লিক করুন এবং নির্বাচন করুন কোয়েরি টেক্সট সম্পাদনা করুন.
  4. কোয়েরিটি পণ্য বিভাগের তথ্য পুনরুদ্ধার করে:
    SELECT CategoryId, CategoryName 
    FROM ProductCategories 
    WHERE CategoryId = @CategoryId;
    
  5. এই সহজ কোয়েরিটি দ্রুত এবং ক্যাশেবল হওয়া উচিত, তবুও এটি প্রতি মিনিটে হাজার হাজার বার কার্যকর হচ্ছে।

১১.৩.২ অ্যাপ্লিকেশন কোডের ট্রেসিং

প্রসেসস ফলকে, এই কোয়েরিটি কার্যকর করার জন্য সেশনগুলি খুঁজুন:

  1. মনে রাখবেন আবেদন কলামে "ProductCatalogService" দেখানো হয়েছে।
  2. এই সেশনগুলির মধ্যে একটিতে ডান-ক্লিক করুন এবং নির্বাচন করুন ট্রেস প্রক্রিয়া SQL Server প্রোফাইলার.
  3. SQL প্রোফাইলার বিভিন্ন CategoryId মান সহ দ্রুত ধারাবাহিকভাবে বারবার কার্যকর হওয়া কোয়েরিটি প্রকাশ করে।
  4. কোড পর্যালোচনার জন্য ProductCatalogService পরিচালনাকারী ডেভেলপমেন্ট টিমের সাথে যোগাযোগ করুন।

কোড পর্যালোচনা সমস্যাটি প্রকাশ করে: সাম্প্রতিক একটি পরিবর্তনের মাধ্যমে পণ্য তালিকা বিভাগ সহ পুনরুদ্ধার করা হয়েছে। ফলাফল সেটের প্রতিটি পণ্যের জন্য (প্রায়শই 1,000+ পণ্য), কোডটি বিভাগের তথ্য আনার জন্য একটি পৃথক ডাটাবেস কল করে - একটি ক্লাসিক N+1 কোয়েরি সমস্যা।

১১.৩.৩ অ্যাপ্লিকেশনটি অপ্টিমাইজ করা

একটি সঠিক সমাধান বাস্তবায়ন করুন:

  1. অ্যাপ্লিকেশন কোয়েরি পরিবর্তন করুন একটি একক ডাটাবেস কলে JOIN পুনরুদ্ধারকারী পণ্য এবং তাদের বিভাগগুলি ব্যবহার করতে:
    SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName
    FROM Products p
    INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId
    WHERE p.Active = 1;
    
  2. আপডেট করা কোডটি স্থাপন করুন এবং অ্যাক্টিভিটি মনিটর মনিটর করুন।
  3. সংশোধন যাচাই করুন: ক্যাটাগরি কোয়েরির জন্য প্রতি মিনিটে এক্সিকিউশন ৩৭,০০০ থেকে কমে ১০০-এর নিচে নেমে আসে এবং সামগ্রিক CPU ব্যবহার ৪০% কমে যায়।
  4. শেখা পাঠটি লিপিবদ্ধ করুন এবং ভবিষ্যতে কোড পরিবর্তনের ক্ষেত্রে একই ধরণের সমস্যা প্রতিরোধ করার জন্য ডেভেলপমেন্ট টিমের সাথে শেয়ার করুন।

১২. সম্ভাব্য ডাটাবেস দুর্নীতি সনাক্ত করুন

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

১২.১ সম্ভাব্য ডাটাবেস দুর্নীতির লক্ষণ

যদি ডাটাবেস দুর্নীতি বিদ্যমান থাকে এবং অ্যাক্সেস করা হচ্ছে, তাহলে আপনি মাঝে মাঝে দেখতে পাবেন:

১. প্রক্রিয়া ফলকে:

  • অস্বাভাবিক অপেক্ষার ধরণ সহ সেশনগুলি স্থগিত অবস্থায় আটকে আছে
  • ত্রুটির অবস্থা দেখানো প্রক্রিয়াগুলি
  • বারবার ব্যর্থ হচ্ছে এমন প্রশ্ন

2. রিসোর্স ওয়েটস প্যানে:

  • অস্বাভাবিক I/O-সম্পর্কিত অপেক্ষার ধরণ যা ডিস্ক সমস্যা নির্দেশ করতে পারে (যদিও এটি লজিক্যাল দুর্নীতির চেয়ে হার্ডওয়্যার সমস্যা নির্দেশ করে বেশি)

৩. সাম্প্রতিক ব্যয়বহুল প্রশ্নগুলিতে:

  • যদি বারবার দূষিত পৃষ্ঠাগুলি পড়ার চেষ্টা করা হয়, তাহলে অস্বাভাবিকভাবে উচ্চ শারীরিক পঠনযোগ্যতা সহ প্রশ্নগুলি

১২.২ DBCC CHECKDB এর সাথে আরও পরীক্ষা করুন

যখন অ্যাক্টিভিটি মনিটরে সম্ভাব্য দুর্নীতির লক্ষণ দেখা যায়, তখন ডাটাবেসের অখণ্ডতা যাচাই করার জন্য আপনার অবিলম্বে DBCC CHECKDB চালানো উচিত। এই কমান্ডটি সমস্ত ডাটাবেস পৃষ্ঠা স্ক্যান করে, চেকসাম যাচাই করে এবং লজিক্যাল সামঞ্জস্য ত্রুটি পরীক্ষা করে।

ডাটাবেস দুর্নীতি পরীক্ষা এবং ঠিক করার জন্য DBCC CHECKDB কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, আমাদের দেখুন DBCC CHECKDB এর বিস্তৃত নির্দেশিকা.

১২.৩ পেশাদার সরঞ্জাম দিয়ে মেরামত

যদি DBCC CHECKDB ডাটাবেস দুর্নীতি নিশ্চিত করে, তাহলে আপনার কাছে মেরামতের জন্য বেশ কয়েকটি বিকল্প রয়েছে:

13. উপসংহার

SQL Server অ্যাক্টিভিটি মনিটর ডাটাবেস অ্যাডমিনিস্ট্রেটরদের জন্য একটি অমূল্য হাতিয়ার হিসেবে দাঁড়িয়ে আছে, যা সার্ভারের কর্মক্ষমতা সম্পর্কে তাৎক্ষণিক অন্তর্দৃষ্টি প্রদান করে এবং দ্রুত এবং কার্যকরভাবে সমস্যাগুলি নির্ণয় করতে সহায়তা করে।

13.1 মূল পয়েন্টের সারাংশ

এই নির্দেশিকা জুড়ে, আমরা অনুসন্ধান করেছি কিভাবে অ্যাক্টিভিটি মনিটর আপনাকে বুঝতে এবং সমস্যা সমাধানে সাহায্য করে SQL Server কর্মক্ষমতা:

  • অ্যাক্টিভিটি মনিটর একটি সংগঠিত, গ্রাফিক্যাল ইন্টারফেসের মাধ্যমে প্রক্রিয়া, অপেক্ষা, কোয়েরি এবং I/O-তে রিয়েল-টাইম দৃশ্যমানতা প্রদান করে।
  • পাঁচটি প্যান—ওভারভিউ, প্রসেস, রিসোর্স ওয়েটস, ডেটা ফাইল I/O, এবং সাম্প্রতিক ব্যয়বহুল কোয়েরি—প্রতিটি সার্ভার কার্যকলাপের উপর অনন্য দৃষ্টিভঙ্গি প্রদান করে।
  • অত্যধিক কোয়েরি এক্সিকিউশন, ব্লকিং চেইন এবং উচ্চ CPU ব্যবহারের মতো সাধারণ সমস্যা সমাধানের পরিস্থিতিগুলি পদ্ধতিগত অ্যাক্টিভিটি মনিটর তদন্তের মাধ্যমে পরিচালনাযোগ্য হয়ে ওঠে।
  • শক্তিশালী হওয়া সত্ত্বেও, অ্যাক্টিভিটি মনিটরের কিছু সীমাবদ্ধতা রয়েছে, যার মধ্যে ঐতিহাসিক ডেটার অভাব, ওয়েট টাইপ গ্রুপিং এবং মনিটরিং ওভারহেড অন্যতম, যা এর উপযোগিতাকে প্রভাবিত করে।
  • DMV কোয়েরি, sp_WhoIsActive, এক্সটেন্ডেড ইভেন্টস এবং সম্ভাব্য তৃতীয় পক্ষের সরঞ্জামগুলির সাথে অ্যাক্টিভিটি মনিটরের পরিপূরক একটি ব্যাপক পর্যবেক্ষণ কৌশল তৈরি করে।
  • রিফ্রেশ ব্যবধানের জন্য সর্বোত্তম অনুশীলন অনুসরণ করা, ব্যবহার না করার সময় অ্যাক্টিভিটি মনিটর বন্ধ করা এবং পারস্পরিক সম্পর্কের জন্য একাধিক প্যান একত্রিত করা এর মান সর্বাধিক করে তোলে এবং প্রভাব কমিয়ে দেয়।

১৩.২ আপনার টুলকিটের অংশ হিসেবে অ্যাক্টিভিটি মনিটর

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

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

অ্যাক্টিভিটি মনিটরকে একটি বৃহত্তর টুলকিটে একীভূত করুন যার মধ্যে রয়েছে এক্সিকিউশন প্ল্যান বিশ্লেষণ, অপেক্ষা পরিসংখ্যান ট্র্যাকিং, ঐতিহাসিক পর্যবেক্ষণ সমাধান এবং কর্মক্ষমতা সর্বোত্তম অনুশীলন। সঠিক সূচীকরণ কৌশল, কোয়েরি অপ্টিমাইজেশন কৌশল এবং ক্ষমতা পরিকল্পনার সাথে এটি ব্যবহার করুন।

১৩.৩ আপনার শেখার যাত্রা চালিয়ে যাওয়া

একজন কার্যকর ডাটাবেস প্রশাসক হওয়ার পথে অ্যাক্টিভিটি মনিটরে দক্ষতা অর্জন করা মাত্র একটি ধাপ। আপনার দক্ষতা বৃদ্ধি করে চালিয়ে যান:

  • বাস্তবায়ন পরিকল্পনা ব্যাখ্যা করতে শেখা এবং অদক্ষ কার্যক্রম সনাক্ত করা
  • বুদ্ধি SQL Server অপেক্ষার পরিসংখ্যান এবং তাদের প্রভাব
  • সূচক নকশা এবং অপ্টিমাইজেশন কৌশল অধ্যয়ন করা
  • এক্সপ্লোরিং SQL Serverএর আর্কিটেকচার এবং এটি কীভাবে কোয়েরি প্রক্রিয়া করে
  • পদ্ধতিগত সমস্যা সমাধান পদ্ধতি অনুশীলন করা
  • বিস্তারিত ট্রেসিংয়ের জন্য বর্ধিত ইভেন্টগুলির সাথে অভিজ্ঞতা তৈরি করা
  • লেনদেন বিচ্ছিন্নতার স্তর এবং তাদের কর্মক্ষমতার প্রভাব বোঝা

অ্যাক্টিভিটি মনিটরের সাথে প্রতিটি পারফরম্যান্স তদন্ত আপনাকে নতুন কিছু শেখায় যে কীভাবে SQL Server অ্যাপ্লিকেশনগুলো কীভাবে কাজ করে এবং ডেটাবেসের সাথে কীভাবে যোগাযোগ করে তা জানুন। আপনার প্রাপ্ত তথ্য নথিভুক্ত করুন, সহকর্মীদের সাথে জ্ঞান ভাগ করে নিন এবং সাধারণ সমস্যার সমাধানের একটি ভান্ডার তৈরি করুন।

13.4 অতিরিক্ত সম্পদ

এই মূল্যবান সম্পদের সাহায্যে আপনার জ্ঞান প্রসারিত করুন:

14. প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)

প্রশ্ন: কি হয় SQL Server কার্যকলাপ মনিটর?

A: SQL Server অ্যাক্টিভিটি মনিটর হল একটি অন্তর্নির্মিত টুল যা SQL Server ম্যানেজমেন্ট স্টুডিও যা একটিতে চলমান প্রক্রিয়া সম্পর্কে রিয়েল-টাইম তথ্য প্রদর্শন করে SQL Server সার্ভার রিসোর্সের উপর উদাহরণ এবং তাদের প্রভাব। এটি পাঁচটি প্যান সহ একটি গ্রাফিক্যাল ড্যাশবোর্ড প্রদান করে যা সার্ভারের কার্যকলাপের বিভিন্ন দিক দেখায় যার মধ্যে রয়েছে প্রসেসরের ব্যবহার, অপেক্ষার কাজ, I/O হার, সক্রিয় সেশন এবং ব্যয়বহুল কোয়েরি।

প্রশ্ন: SSMS-এ অ্যাক্টিভিটি মনিটর কিভাবে খুলবো?

A: আপনি চারটি পদ্ধতি ব্যবহার করে Activity Monitor খুলতে পারেন: (1) SSMS টুলবারে Activity Monitor আইকনে ক্লিক করুন, (2) আপনার SQL Server অবজেক্ট এক্সপ্লোরারে উদাহরণের নাম এবং নির্বাচন করুন ক্রিয়াকলাপ নিরীক্ষক, (3) টিপুন জন্য ctrl + অল্টার + A, অথবা (4) SSMS কে স্বয়ংক্রিয়ভাবে চালু করার জন্য কনফিগার করুন টুলস -> অপশন সমূহ -> পরিবেশ -> প্রারম্ভ.

প্রশ্ন: অ্যাক্টিভিটি মনিটর ব্যবহার করার জন্য আমার কী কী অনুমতির প্রয়োজন?

উ: তোমার দরকার সার্ভারের অবস্থা দেখুন অ্যাক্টিভিটি মনিটরের বেশিরভাগ তথ্য দেখার অনুমতি। ডেটা ফাইল I/O প্যানেলের জন্য, আপনার আরও প্রয়োজন হবে হয় ডেটাবেস তৈরি করুন, যেকোনো ডেটাবেস পরিবর্তন করুন, বা যেকোনো সংজ্ঞা দেখুন অনুমতি। এই অনুমতি ছাড়া, অ্যাক্টিভিটি মনিটর খুলতে পারে কিন্তু ফাঁকা প্যানেল প্রদর্শন করতে পারে।

প্রশ্ন: আমার অ্যাক্টিভিটি মনিটর কেন বিরতি দেওয়া হয়েছে বা কাজ করছে না?

A: অ্যাক্টিভিটি মনিটর সাধারণত অনুমতি সংক্রান্ত সমস্যা, পুরনো SSMS সংস্করণ, অথবা অক্ষম দূরবর্তী সংযোগের কারণে বিরতি দেয়। সমাধানের জন্য: (1) সর্বশেষ SSMS সংস্করণে আপডেট করুন, (2) আপনার VIEW SERVER STATE অনুমতি আছে কিনা তা যাচাই করুন, (3) দূরবর্তী সংযোগগুলি সক্রিয় আছে কিনা তা পরীক্ষা করুন SQL Server উদাহরণস্বরূপ, (4) SSMS পুনরায় চালু করুন, এবং (5) প্রযোজ্য হলে SQL প্রমাণীকরণের পরিবর্তে Windows প্রমাণীকরণের মাধ্যমে সংযোগ করার চেষ্টা করুন।

প্রশ্ন: Activity Monitor এবং sp_WhoIsActive এর মধ্যে পার্থক্য কী?

A: Activity Monitor হল SSMS-এ তৈরি একটি গ্রাফিক্যাল টুল যা বিভিন্ন পর্যবেক্ষণের দিকগুলির জন্য সংগঠিত প্যান প্রদান করে। sp_WhoIsActive হল একটি বিনামূল্যের কমিউনিটি-তৈরি সঞ্চিত পদ্ধতি যা Activity Monitor-এর তুলনায় আরও নির্দিষ্ট অপেক্ষার ধরণ, ব্লকিং বিবরণ এবং কাস্টমাইজেশন বিকল্প সহ একটি একক ফলাফল সেটে বিস্তারিত সেশন তথ্য প্রদান করে। Activity Monitor ভিজ্যুয়াল অন্বেষণের জন্য ভালো, যেখানে sp_WhoIsActive স্ক্রিপ্টেড পর্যবেক্ষণে উৎকৃষ্ট এবং আরও বিস্তারিত তথ্য প্রদান করে।

প্রশ্ন: অ্যাক্টিভিটি মনিটর কি সার্ভারের কর্মক্ষমতাকে প্রভাবিত করে?

উত্তর: হ্যাঁ, অ্যাক্টিভিটি মনিটরের পরিমাপযোগ্য ওভারহেড থাকে কারণ এটি প্রতিটি রিফ্রেশ ব্যবধানে সিস্টেম DMV গুলিকে জিজ্ঞাসা করে। কম রিফ্রেশ হারের সাথে প্রভাব বৃদ্ধি পায়—মাইক্রোসফ্ট সতর্ক করে যে 10 সেকেন্ডের কম ব্যবধান সার্ভারের কর্মক্ষমতাকে প্রভাবিত করতে পারে। সক্রিয়ভাবে ব্যবহার না করার সময় সর্বদা অ্যাক্টিভিটি মনিটর বন্ধ করুন এবং ভারী লোডের অধীনে প্রোডাকশন সার্ভারগুলিতে 30-60 সেকেন্ড রিফ্রেশ ব্যবধান বিবেচনা করুন।

প্রশ্ন: আমি কি T-SQL ব্যবহার করে অ্যাক্টিভিটি মনিটরের ডেটা পেতে পারি?

উত্তর: হ্যাঁ, অ্যাক্টিভিটি মনিটর সিস্টেমের গতিশীল ব্যবস্থাপনা ভিউ যেমন sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats, এবং sys.dm_exec_query_stats সম্পর্কে প্রশ্ন করে। আপনি T-SQL ব্যবহার করে সরাসরি এই DMV গুলিকে জিজ্ঞাসা করতে পারেন যাতে প্রোগ্রাম্যাটিকভাবে সমতুল্য তথ্য পুনরুদ্ধার করা যায়, যা কাস্টম মনিটরিং স্ক্রিপ্ট এবং স্বয়ংক্রিয় ডেটা সংগ্রহ সক্ষম করে।

প্রশ্ন: ডিফল্ট রিফ্রেশ ব্যবধান কত?

A: ডিফল্ট রিফ্রেশ ব্যবধান হল 10 সেকেন্ড। আপনি ওভারভিউ প্যানের যেকোনো জায়গায় ডান-ক্লিক করে, নির্বাচন করে এটি পরিবর্তন করতে পারেন রিফ্রেশ ব্যবধান, এবং পূর্বনির্ধারিত বিকল্পগুলি থেকে বেছে নেওয়া: ১ সেকেন্ড, ৫ সেকেন্ড, ১০ সেকেন্ড, ৩০ সেকেন্ড, ১ মিনিট, অথবা ১ ঘন্টা। কম ব্যবধানে রিয়েল-টাইম ভিউ বেশি পাওয়া যায় কিন্তু পর্যবেক্ষণের ওভারহেড বৃদ্ধি পায়।

প্রশ্ন: SSMS চালু হওয়ার সাথে সাথে আমি কীভাবে স্বয়ংক্রিয়ভাবে অ্যাক্টিভিটি মনিটর খুলতে পারি?

A: SSMS বিকল্পগুলির মাধ্যমে স্বয়ংক্রিয় লঞ্চ কনফিগার করুন: নেভিগেট করুন টুলস -> অপশন সমূহ -> পরিবেশ -> প্রারম্ভ, তারপর নির্বাচন করুন অবজেক্ট এক্সপ্লোরার এবং অ্যাক্টিভিটি মনিটর খুলুন থেকে শুরুতে ড্রপডাউন। SSMS-এ সার্ভারের সাথে সংযোগ স্থাপনের সময় অ্যাক্টিভিটি মনিটর স্বয়ংক্রিয়ভাবে খুলবে।

প্রশ্ন: অ্যাক্টিভিটি মনিটরের সীমাবদ্ধতাগুলি কী কী?

A: মূল সীমাবদ্ধতাগুলির মধ্যে রয়েছে: (1) কোনও ঐতিহাসিক ডেটা স্টোরেজ বা ট্রেন্ডিং ক্ষমতা নেই, (2) অপেক্ষার ধরণগুলি নির্দিষ্টভাবে দেখানোর পরিবর্তে বিভাগগুলিতে গোষ্ঠীভুক্ত করা হয়েছে, (3) CXPACKET এর মতো কিছু অপেক্ষার ধরণ প্রদর্শিত নাও হতে পারে, (4) পয়েন্ট-ইন-টাইম স্ন্যাপশটগুলি ক্ষণস্থায়ী সমস্যাগুলি মিস করতে পারে, (5) ওভারহেড পর্যবেক্ষণ ব্যস্ত সার্ভারগুলিকে প্রভাবিত করতে পারে, (6) সক্রিয় পর্যবেক্ষণের জন্য কোনও সতর্কতা ব্যবস্থা নেই, এবং (7) একাধিক জুড়ে ডেটা একত্রিত করা যাবে না SQL Server এই প্রয়োজনে, এক্সটেন্ডেড ইভেন্ট, ডেটা সংগ্রহ সেট, অথবা থার্ড-পার্টি মনিটরিং টুলের সাথে অ্যাক্টিভিটি মনিটর সম্পূরক করুন।


লেখক সম্পর্কে

ইউয়ান সেং একজন সিনিয়র ডাটাবেস অ্যাডমিনিস্ট্রেটর (DBA) যার ১০ বছরেরও বেশি অভিজ্ঞতা রয়েছে SQL Server পরিবেশ এবং এন্টারপ্রাইজ ডাটাবেস ব্যবস্থাপনা। তিনি আর্থিক পরিষেবা, স্বাস্থ্যসেবা এবং উৎপাদন সংস্থা জুড়ে শত শত ডাটাবেস পুনরুদ্ধারের পরিস্থিতি সফলভাবে সমাধান করেছেন।

ইউয়ান বিশেষজ্ঞ SQL Server ডাটাবেস পুনরুদ্ধার, উচ্চ প্রাপ্যতা সমাধান, এবং কর্মক্ষমতা অপ্টিমাইজেশন। তার ব্যাপক বাস্তব অভিজ্ঞতার মধ্যে রয়েছে মাল্টি-টেরাবাইট ডাটাবেস পরিচালনা, সর্বদা অন অ্যাভাইলেবিলিটি গ্রুপ বাস্তবায়ন এবং মিশন-সমালোচনামূলক ব্যবসায়িক সিস্টেমের জন্য স্বয়ংক্রিয় ব্যাকআপ এবং পুনরুদ্ধার কৌশল তৈরি করা।

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

সম্পর্কে প্রশ্ন আছে SQL Server পুনরুদ্ধারের প্রয়োজন নাকি অতিরিক্ত ডাটাবেস সমস্যা সমাধানের নির্দেশিকা প্রয়োজন? ইউয়ান স্বাগত জানায়? প্রতিক্রিয়া এবং পরামর্শ এই প্রযুক্তিগত সম্পদ উন্নত করার জন্য।

এখন শেয়ার: