یک مشکل بزرگ در مورد Jobهای زمان بندی شده این است که آنها اغلب Jobهای batch یا دسته ای هستند که هنگام اجرا مقدار قابل توجهی از منابع را مصرف می کنند. مشکل دیگر این است که این جاب ها معمولاً در ساعات غیرفعالی مانند شب ها یا آخر هفته ها اجرا می شوند، بنابراین هیچ فردی برای نظارت بر میزان کارکرد منابع جاب وجود ندارد. بدون حضور در اطراف برای نظارت بر فعالیت جاب، تعیین اینکه آیا جابها به طور موثر وعملکردی خوب اجرا می شوند یا خیر، دشوار است. همچنین، هنگامی که جاب های دستهای برای اولین بار اجرا میشوند، اغلب با دادههای کمتری انجام میشوند، بنابراین نیاز به منابع زیادی نیست، اما با گذشت زمان پایگاه داده رشد میکند و اغلب بار این فرآیندهای دستهای افزایش مییابد. بنابراین چگونه می توانید میزان کارکرد منابع جاب را در حالی که آنجا نیستید نظارت کنید؟
ساده ترین و کم هزینه ترین روش استفاده از ابزارهای داخلی است که ویندوز و SQL Server ارائه می دهند. این ابزارها Performance Monitor و Trace هستند. هر دوی این ابزارها به شما این امکان را میدهند که مجموعهای از اشیاء از پیش تعریفشده ایجاد کنید و سپس این دستورات را از یک خط فرمان اجرا کنید. احتمالاً اکثر افراد قبلاً با این ابزارها و نحوه استفاده از این ابزارها از رابط کاربری گرافیکی آشنا هستند، اما برای هر دوی این ابزارها میتوان فرآیند جمعآوری خودکار را انجام داد و بنابراین میتوان دادهها را بی وقفه جمعآوری کرد. علاوه بر این، از آنجایی که این فرآیندها می توانند در صورت نیاز شروع و متوقف شوند، نیازی به جمع آوری داده ها از زمان خروج از محل کار تا زمان بازگشت نیست. بیایید نگاهی به نحوه خودکارسازی فرآیند جمعآوری دادهها برای هر دو Performance Monitor و Trace بیندازیم.
Performance Monitor
برای Performance Monitor، ابتدا باید یک Counter Log راه اندازی کنید. این را می توان با استفاده از خط فرمان یا با استفاده از رابط کاربری گرافیکی performance monitor انجام داد. برای این مثال، راه اندازی یک Counter Log از طریق رابط کاربری گرافیکی را بررسی می کنیم.
اولین کاری که باید انجام دهید این است که Performance Monitor را راه اندازی کنید. این برنامه را میتوانید در بخش Administrator Tools در کنترل پنل ویندوز پیدا کنید یا میتوانید با تایپ کردن “perfmon” و کلیک روی OK، آن را از طریق Run اجرا کنید. در زیر Performance Log and Alerts گزینه Counter Logs را انتخاب کنید و برای انتخاب New Log Settings کلیک راست کنید. اولین کاری که باید انجام دهید این است که یک نام به Counter Log بدهید.
پس از ارائه یک نام، باید کانترها یا اشیایی که باید جمع آوری شوند را اضافه کنید. چندین نکته دیگر در اینترنت در مورد اینکه چه کانترهایی باید جمع آوری شود وجود دارد، بنابراین به این نکته نخواهیم پرداخت.
پس از انتخاب کانترها، باید نوع Log File را تنظیم کنید. این را می توان به همان شکلی که هست رها کرد یا می توانید Configure را برای تغییر گزینه ها انتخاب کنید. صفحه Configure در زیر نشان داده شده است.
در نهایت، باید Schedule را تنظیم کنید. از آنجایی که ما این کار را از خط فرمان شروع و متوقف می کنیم، می توانیم تمام تنظیمات را به صورت دستی (Manual) تنظیم کنیم. پس از اتمام کار روی OK کلیک کنید و Counter Log شما ذخیره می شود.
برای شروع و توقف این مجموعه جدید از کانترها به نام SQLCcounters، می توانیم دستورات زیر را از خط فرمان ویندوز، از یک batch job یا از یک job step در یک job SQL Server اجرا کنیم. برای این ما از ابزار ویندوزی Logman در خط فرمان استفاده کردیم:
برای شروع
logman Start sqlcounters
برای متوقف کردن
logman stop sqlcounters
پس از شروع و توقف جمع آوری داده ها، فایلی مانند C:\PerfLogs\SQLCounters_000001.blg ایجاد می کند. سپس این فایل را می توان با ابزار Performance Monitor باز کرد تا داده های کانترهایی را که به تازگی جمع آوری کرده اید مشاهده کنید.
اگر دوباره دستورات را اجرا کنید، یک فایل جدید به نام C:\PerfLogs\SQLCounters_000002.blg ایجاد می شود، بنابراین فایل اول بازنویسی نمی شود.
Trace
برای Trace باید یک Trace سمت سرور راه اندازی کنید تا رویدادهای SQL Server را که می خواهید ضبط کنید جمع آوری کنید. اینکار را میتوانید توسط Profiler انجام دهید.
هنگامی که تعریف trace تنظیم شد، می توانید از دستورات زیر برای شروع، توقف و بستن و حذف tarce سمت سرور استفاده کنید.
Task | Command | Notes |
To find traceid | SELECT * FROM :: fn_trace_getinfo(default) | با این کار لیستی از تمام traceهایی که روی سرور اجرا می شوند به شما ارائه می شود. |
To start a trace | sp_trace_setstatus traceid, 1 | TraceId مقدار ردیابی خواهد بود |
To stop a trace | sp_trace_setstatus traceid, 0 | TraceId مقدار ردیابی خواهد بود |
To close and delete a trace | sp_trace_setstatus traceid, 0 | برای حذف باید ابتدا trace را متوقف کنید و سپس می توانید trace را حذف کنید. با این کار فایل trace نوشته شده بسته می شود. |
اگر trace دارای traceID = 1 بود، می توانید دستورات زیر را صادر کنید.
برای شروع
EXEC sp_trace_setstatus 1,1
برای متوقف کردن
EXEC sp_trace_setstatus 1,0
EXEC sp_trace_setstatus 1,2
همه اش را بگذار کنار هم
فرض کنید جابی به نام LoadProductionData داریم که یک پروسیجر به نام spLoadProductionData را اجرا می کند. برای جمعآوری performance و trace دادهها برای این جاب، میتوانیم استپ های اضافی را برای شروع این فرآیندها قبل از فرآیند و سپس متوقف کردن آنها پس از فرآیند تنظیم کنیم.
قبل از اینکه وارد استپ های جاب شویم، فرض می کنیم موارد زیر قبلا ایجاد شده اند.
- پرسوسیجر spLoadProductionData وجود دارد
- Peformance counter log به نام “sqlcounters” راه اندازی شده است
- یک پروسیجر به نام “spStartTrace” که دارای تنظیمات trace سمت سرور ما است راه اندازی شده است. این پروسیجر یک پارامتر به نام filename@ را می گیرد که برای نام فایل های trace استفاده می شود. مسیر پیش فرض “C:\perflogs” است.
Job Step | Command | Command Type | Purpose |
1 | spStartTrace ‘LoadProductionData’ | T-SQL | Trace سمت سرور را بایک نام فایل خروجی زیر آغاز میکند: c:\perflogs\LoadProductionData.trc |
2 | logman update sqlcounters -o c:\perflogs\LoadProductionData | CmdExec | این نام فایل خروجی را برای کانترهای پرفورمنس تغییر می دهد به c:\perflogs\LoadProductionData. |
3 | logman start sqlcounters | CmdExec | با این استپ، کار مجموعه کانتر پرفورمنس شروع می شود. |
4 | EXEC spLoadProductionData | T-SQL | این استپ جاب عادی ما برای بارگیری داده ها یا هر کاری است که جاب انجام می دهد. |
5 | DECLARE @traceID int SELECT @traceID=traceID FROM :: fn_trace_getinfo(default) EXEC sp_trace_setstatus @traceID, 0 EXEC sp_trace_setstatus @traceID, 2 | T-SQL | این استپ مشخص می کند که کدام ردیابی برای فرآیند LoadProductionData تنظیم شده است. TraceID را دریافت می کند و متوقف می شود و سپس trace را می بندد، بنابراین می توانید نتایج را ببینید. |
6 | logman stop sqlcounters | CmdExec | این استپ مجموعه کانتر پرفورمنس را متوقف می کند. |
هنگامی که جاب اجرا شد و کامل شد، حداقل دو فایل ایجاد می شود که یکی برای کانترهای performance و دیگری برای ردیابی و Trace است. سپس این فایلها را میتوان با استفاده از Performance Monitor یا Profiler بارگیری کرد تا بتوانید نتایج جاب را ببینید.
نظر بگذارید