# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) >  میزان استفاده از CPU  و Ram  توسط SQL

## ly.comeng

با سلام
من روی یکی از سرورهایی که اس کیو ال دارم و رم سرور 64 گیگ هست به محض اجرای سرویس اس کیو ال 63 و خورده ای از رم رو بعد حداکثر 10 دقیقه اس کیو ال اشغال میکنه
یکی از دوستانم گفت اس کیو ال این کار رو انجام میده تا رم کم نیاره
آیا این منطقیه؟
اشکال در طراحی دیتابیس نداره؟
چه دلیلی میتونه داشته باشه؟
ممنون

----------


## حمیدرضاصادقیان

سلام.
خیر اینکار منطقی نیست و احتمالا یک کار عجیب غریبی داره این وسط رخ میده.
با راه اندازی Data Collector به راحتی میتونید ببینید چه اتفاقی داره میافته. 
یاقبل از اون با استفاده از activity Monitor میتونید وضعیت فعلی سرور رو ببینید و وضعیت Query های فعلی رو بررسی کنید.

----------


## in_chand_nafar

> من روی یکی از سرورهایی که اس کیو ال دارم و رم سرور 64 گیگ هست به محض اجرای سرویس اس کیو ال 63 و خورده ای از رم رو بعد حداکثر 10 دقیقه اس کیو ال اشغال میکنه


مقدار اشغال RAM بستگی به تعداد کاربر و حجم بانک های اطلاعات اون سرور دارد.فقط این رو بگم که SQL تا اونجایی که بتونه از RAM استفاده می کند و این موضوع طبیعی است چون دیتا و.. را کش می کند یعنی اگر دیتا بیس شما 50 گیگابایت باشه و کاربرها به نوعی به طرق مختلف با جداول اون درگیر بشن کل Pageها و... مربوط به اون جدول بسته به نیاز در حافظه لود میشه و در حافظه باقی می ماند (برای افزایش سرعت دسترسی) و هر موقع SQL حافظه کم بیاره دیتاهایی که اولویت اونها پایین است از حافظه بیرون میاندازه تا دیتا های جدید رو بیاره (مثلا یکی از فرایندهایی که این کار رو انجام میدهد LazyWrite است)
اگر می خواهید حافظه SQL را محدود کنید می توانید از تنظیمات Min Memory و Max Memory استفاده کنید.

در ضمن برای اینکه بخش های حافظه مربوط به SQL را مشاهده کنید می توانید از دستور 
DBCC MemoryStatus
GO
استفاده کنید  و ظرفیت قسمت های مختلف حافظه را مشاده کنید بزرگترین قسمت Buffer Pool است. همچنین خروجی این دستور بیش از 800 قسمت است (بسته به نسخه SQL متفاوت است) و هر قسمت بخش های از حافظه است که در اختیار SQL است.
اما اگر بخواهید بدونید CPU چرا عامل مصرفش بیشتر می توانید برای شروع از Activity Monitor و Profiler و Data Collector  و Extended Event استفاده کنید تا در خواست هایی که CPU زیادی را مصرف می کنند پیدا و  اونها را بهینه کنید (مثلا استفاده از ایندکس و...)

به این دوتا تا پادکست صوتی که درباره Profiler است گوش کنید

*چگونه با استفاده از SQL Profiler کارایی بانک اطلاعاتی را افزایش دهیم؟ (قسمت اول)*

*چگونه با استفاده از SQL Profiler کارایی بانک اطلاعاتی را افزایش دهیم؟ (قسمت دوم)*

----------

