PDA

View Full Version : کندی sql server



taghavi
دوشنبه 03 اسفند 1383, 11:10 صبح
سلام دوستان
ما یک بانک اطلاعاتی با sql server داریم که اطلاعات داخل او بسیار زیاد می باشد. این بانک در بعضی از موارد بسیار کند می شود بدون اینکه تنظیماتی در ان دقایق در سیستم تعریف شده باشند. در مواقعی که سیستم کند می شود cpu usege سرور مربوط به sql server به نزدیکای 100 می رسد.
من میخواستم بدونم با اینکه برای فقط دیتا بیس یک سرور قوی در نظر گرفته شده است به چه علت سیستم در بعضی از موارد کند می شود؟

Vahid_Nasiri
دوشنبه 03 اسفند 1383, 12:52 عصر
ما هم جدیدا دچار همین مشکل (شبیه به این مشکل) شده ایم. عکس ضمیمه شده.
اس کیوال سرور کل شبکه رو قطع می کنه. (در تصویر واضح است)

منتظر راهنمایی های ارزنده جناب ثباتی هستم :oops:

hmm
دوشنبه 03 اسفند 1383, 15:36 عصر
آیا در لیست پروسس ها ccupdate هست یا خیر این پروسس یه کرم هست که ترافیک شبکه رو به شدت بالا میبره

taghavi
دوشنبه 03 اسفند 1383, 16:30 عصر
نه خیر - پروسس ccupdate در لیست پروسسها نمی باشد

titbasoft
دوشنبه 03 اسفند 1383, 17:00 عصر
ابتدا از sp_lock استفاده کنید تا منابع lock شده را بدست آورید سپس با استفاده از sp_who ببینید که کدام process ها lock را نگه داشته اند!

البته گمان کنم این مساله دلایل زیادی می تواند داشته باشد. لطفا بیشتر توضیح دهید . مثلا اینکه بیشتر چه مواقعی این اتفاق می افتد؟ مثلا هر صبح!
و یا اینکه index هاتون رو چطوری تعریف کردید؟ :wink:

AminSobati
دوشنبه 03 اسفند 1383, 22:04 عصر
دوستان عزیزم،
بحث افزایش حجم اطلاعات و کند شدن بانک اطلاعاتی(مثلا SQL Server) بحث روز است و تقریبا 70 درصد کارهای مشاوره من با شرکتها فقط همین موضوع رو در بر گرفته. در کشور ما هم دیتابیسها دارند پا به سن میگذارن و حجیم میشن...
معمولا بهینه سازی SQL Server در دو قدم اجرا میشه: اول پیدا کردن مشکل Performance و دوم راه حل برطرف کردن اون.
متاسفانه این Topic بسیار گسترده ای هستش و ارائه راه حل در چند سطر امکان پذیر نیست، اما در حد توان، تجربیاتی که در این زمینه کسب کردم در اختیار دوستان قرار میدم:
برای پیدا کردن اشکال، این موارد باید بررسی بشن:
- آیا این سرور، فقط در اختیار SQL Server قرار گرفته یا نرم افزارهای مهم دیگری هم روی اون نصب شدند؟
- از Performance Monitor برای رویت وضعیت Avg. Disk Queue Length و Disk Time و Processor Time و Context Switches/Sec و Pages/Sec و Available Bytes و Processor Queue Length استفاده کنید
- بعد از تشخیص اینکه کدامیک از سه عنصر Memory, Disk و CPU تحت فشار بیشتری هستند، Counterهای دقیقتری از اون عنصر رو Monitor کنین تا شما رو به اصل اشکال نزدیکتر کنه.
- نکته مهم اینکه، اگر Disk در حال فعالیت بیشتری باشه، الزاما افزایش تعداد Disk راه چاره نیست چون ضعف Memory ممکنه بار بیشتری(Paging) به Disk تحمیل کنه. همچنین بالا بودن CPU:Privileged Time میتونه نشان دهنده ضعف Disk باشه.
- از Profiler برای پیدا کردن اشکال در خود SQL Server استفاده کنین. بهتره نتیجه در جدول ذخیره بشه و روی Duration مرتب بشه تا طولانی ترین Process ها مشخص بشن.
- از وجود Indexهای کارآمد و مفید اطمینان پیدا کنین. هر ایندکسی به Query کمک نخواهد کرد.
- Execution Plan مربوط به هر Query رو بررسی کنین. وجود Hash Join در الگوریتم میتونه یک ضعف مهم به شمار بیاد و میبایست با ساختن ایندکس مناسب، اون رو به Nested Loop یا Merge Join تبدیل کرد.
- Index Tuning Wizard به هیچ وجه جایگزین تحلیلی که مغز انسان قادره انجام بده نمیشه و بهش اکتفا نکنین
- حتی المقدور، UDF های استفاده شده در قسمت Where یک Query رو، تبدیل به View کنین.
- تا جای ممکن باید سعی کرد تا ساختاری استفاده بشه که به Outer Join نیاز نداشته باشه. چون Outer Join باعث میشه SQL Server به ناچار از الگوریتمهایی استفاده کنه که چندین برابر کندتر از Inner Join هستند.
ولی معمولا بعد از پایان طراحی دیتابیس، کمتر برنامه نویسها شانس این رو دارند که Outer رو به Inner تبدیل کنند چون قسمتهای زیادی از Code به ویرایش نیاز پیدا میکنه و احتمال بروز باگهای جدید هست. اما در بدو طراحی، این کار به خوبی امکان پذیره.
- بوسیله DBCC SHOWCONTIG وضعیت پیوستگی(Fragmentation) داخلیه دیتابیس رو بررسی کنید.

متاسفانه این مطالب بسیار کلی هستند و تشریح اونها به کتاب تبدیل میشه! امیدوارم هر چه زودتر بتونیم اولین سمینار SQL Server Performance Tuning رو برگزار کنیم چون دوستان زیادی منتظر هستند.
باز اگر جزییات بیشتری از مشکلات مطرح شده در این Topic شرح داده بشه، بهتر میشه کمک کرد.
موفق باشید

M.GhanaatPisheh
دوشنبه 03 اسفند 1383, 22:40 عصر
امیدوارم هر چه زودتر بتونیم اولین سمینار SQL Server Performance Tuning رو برگزار کنیم چون دوستان زیادی منتظر هستند
دوست عزیزم ما هم بی صبرانه منتظر هستیم از تجربیات گرانبهای شما استفاده کنیم.

hr110
شنبه 08 اسفند 1383, 16:12 عصر
این امکان Performance Monitor در نسخه های خاصی از اس کیو ال است یا همه انها دارند؟؟

hmm
شنبه 08 اسفند 1383, 16:54 عصر
بهر حال ping باید جواب بده و ربطی به کندی sqlserver نداره

Vahid_Nasiri
شنبه 08 اسفند 1383, 17:13 عصر
این امکان Performance Monitor در نسخه های خاصی از اس کیو ال است یا همه انها دارند؟؟

Administrative tools -> performance -> ctrl+I = ADD

AminSobati
دوشنبه 24 اسفند 1383, 11:44 صبح
البته میبایست در موقع نصب SQL Server، گزینه Performance Counters رو انتخاب کنین تا Counterهای مربوط به SQL Server هم اضافه بشه