در مقالهی مانیتورینگ Microsoft SQL Server به صورت اجمالی به معرفی پایگاه داده ی SQL Server پرداخته شد. در ادامه در این مقاله و مقالات بعدی به بررسی برخی شاخصها و عوامل تأثیرگذار بر کارایی SQL Server پرداخته خواهد شد.
بدون شک SQL Server یکی از سیستمهای مدیریت پایگاه داده بسیار محبوب است که در بسیاری از سازمانها استفاده میشود. با توجه به اینکه با به کارگیری SQL Server در یک سیستم بسیاری از عملکردها به آن وابسته خواهد شد، بروز مشکلات و افت کارایی آن بر کارایی کل سیستم تاثیر خواهد گذاشت. بنابراین لازم است عوامل مختلفی که باعث کاهش کارایی و عملکرد SQL server میشوند شناسایی شوند. اصطلاحا به این موارد bottlenecks گفته میشود. شناسایی bottleneck ها و جلوگیری از بروز شرایطی که باعث کاهش عملکرد سیستم شود بسیار ضروری است. به عنوان مثال یکی از bottleneck ها در SQL Server این است که تعداد زیادی کاربر به صورت همزمان به منابع مشترک دسترسی داشته باشند در این صورت ممکن است سرعت پاسخگویی سرور به شدت پایین بیاید. همچنین حافظه مصرفی میتواند یکی دیگر از bottleneck های SQL Server باشد به این صورت که در صورت کمبود حافظه، کارایی سیستم به شدت پایین خواهد آمد که یکی از بارزترین نشانههای آن پایین آمدن سرعت اجرای کوئریها میباشد. هر کدام از این bottleneck ها میتواند با نشانههایی (Symptoms) خود را در سیستم بروز دهد که با شناختن آن نشانهها میتوان عوامل مشکلزا را شناخت و از رخداد آنها جلوگیری نمود و به طور کلی کارایی سیستم را بهبود داد. دلایل مختلفی برای وجود bottleneck ها و کاهش کارایی سیستم وجود دارد. برای مثال میتوان به موارد زیر اشاره نمود:
· تخصیص نادرست/ناکافی منابع
· کامپوننتهایی که نیاز به بروزرسانی دارند
· منابعی که مشکلی در عملکرد آنها وجود دارد
· منابعی با تنظیمات نادرست
در جدول 1 برخی از bottleneck های SQL Server بررسی شده است.
جدول 1: معرفی چند مورد از bottleneck های SQL Server
Bottleneck ها |
تاثیر بر روی SQL Server |
نشانه های Bottleneck |
حافظه مصرفی (Memory Usage) |
حافظه میتواند یکی از bottleneck های مهم در SQL Server باشد. در صورتی که حافظه به میزان نیاز تخصیص داده نشود کارایی سرور میتواند به شدت کاهش داشته باشد. در آن صورت برای دسترسی به داده مورد نظر باید به جای حافظه از دیسک استفاده شود. با توجه به سرعت پایین دسترسی به دیسک نسبت به حافظه کارایی و سرعت به شدت پایین خواهد آمد. |
در زمان مواجه شدن با کمبود حافظه ممکن است پیامهایی همچون out of memory را مشاهده نمایید. از سایر نشانههای کمبود حافظه میتوان به موارد زیر اشاره نمود. · سرعت بسیار پایین اجرای کوئریها · کاهش کوئریهای فعال · نرخ پایین دسترسی به حافظه Cache · نرخ بالا استفاده از دستورات I/O (Higher I/O Usage) · سرعت پایین سیستم (Slow System) · طول عمر کم صفحات حافظه (Low Page Life Expectancy) |
بهرهوری پردازنده (CPU Utilization) |
بهرهوری پردازنده میزان استفاده از پردازنده در یک بازه زمانی مشخص را تعیین میکند. مقدار نرمال و طبیعی برای استفاده از پردازنده به طور معمول حدود 40 الی 50 درصد زمان آن است. این مقدار اجازه میدهد زمانهایی که درخواستهایی به طور ناگهانی برای پردازنده ایجاد میشود. قابلیت تخصیص پردازنده وجود داشته باشد. بهرهوری بیش از حد 80 یا 90 درصد در بازههای طولانی نشاندهنده افت کارایی سیستم خواهد بود. و در چنین زمانهایی درخواستها وکوئریها باید منتظر باشند تا ظرفیت پردازنده برای پردازش آنها خالی شود. لازم است بررسی شود علت استفاده زیاد از پردازنده چیست و به آن رسیدگی شود. مثلا ممکن است کوئریهای SQL Server نیاز به tune کردن داشته باشند یا پردازنده پاسخگوی نیاز نیست و باید آپگرید شود. |
از نشانههای بهرهوری بالا پردازنده این است که پردازنده در بسیاری از زمانها توسط SQL Server مشغول به کار است اما throughput آن به طور کلی پایین میباشد. همچنین کند شدن سرعت پردازش کوئریها میتواند یکی دیگر از نشانهها باشد. |
ورودی/خروجی دیسک (Disk Input/Output- I/O) |
دستورات ورودی/خروجی برای دسترسی به دیسک و اجرای عملیات خواندن و نوشتن از دیسک استفاده میشود. دسترسی به حافظه دیسک نیز از طریق کانالهای ارتباطی صورت میگیرد که این کانالها ظرفیت مشخصی دارند. با توجه به ظرفیت محدود پذیرش درخواستها در دیسک، زمانی که تعداد درخواستها برای دسترسی به دیسک زیاد میشود به دلیل ظرفیت محدود کانالهای ارتباطی، یک bottleneck رخ خواهد داد. در این حالت سرعت پاسخدهی دیسک به درخواستها بسیار کند خواهد شد. |
از نشانههای کاهش کارایی به دلیل دسترسیها به دیسک میتوان به موارد زیر اشاره نمود: · زمان پاسخ بالا در درخواستهای دیسک · شمارندههای بالا دیسک برای مدت طولانی |
اتصالات کاربران (User Connections) |
درخواست همزمان تعداد زیادی کاربر برای اتصال به SQL Server میتواند منجر به کاهش کارایی سرور شود و یکی از bottleneck ها در SQL Server میباشد. ظرفیت حافظه و سرعت و ظرفیت پردازنده میتواند بر روی این bottleneck تاثیرگذار باشد. |
از نشانههای این مورد نیز میتوان به کاهش سرعت پاسخدهی به درخواست های کاربران و پاسخ به کوئریها اشاره نمود. |