PDA

View Full Version : lock شدن دیتا بیس (Sql 2000)



dell816
چهارشنبه 19 خرداد 1389, 23:46 عصر
با سلام مجدد خدمت استاد عزیز(جناب آقای ثباتی):

2 سوال دارم :

سوال اول:
من یک دیتابیس دارم که وقتی تعداد کاربران آن زیاد میشوند و مشغول گزارشگیری میشوند
( 40-50کاربر همزمان ) در بعضی مواقع Lock میشود و من مجبور میشوم روی پروسس مریوطه بروم و آنرا kill کنم.
از کجا بفهمم مشکلم از کجاست ؟ آیا اشکال از کوئری ها میباشد.؟

سوال دوم:
وقتی task manager را باز میکنم میبینم در هنگام کار با دیتا بیس cpu به سقف میچسبد
از کجا باید چک کنم مشکل از کدام کوئری است و چگونه باید آنرا برطرف کنم.؟

AminSobati
جمعه 21 خرداد 1389, 13:55 عصر
سلام دوست عزیزم،
معمولا Update یا Deleteهای که براشون ایندکس مناسبی نداره و منجر به Table Scan میشن این مشکل رو بوجود میارن. چون در طول Table Scan جدول بصورت انحصاری در اختیار اون کاربر قرار میگیره. باید با Profiler این قبیل دستورات که طول میشکند رو استخراج کنین و براش ایندکس مناسب بسازین.
اگر این کار رو انجام بدین به احتمال زیاد مشکل CPU Usage هم حل خواهد شد

dell816
جمعه 21 خرداد 1389, 22:50 عصر
خیلی ممنون،
ولی میشه بیشتر راهنمایی کنید که در قسمت پروفایلر چه قسمتهایی را باید add کنم تا بدانم
مشکل از کدام کوئری میباشد.؟

مورد بعدی میشه بفرمایید اگر مثلا من شرطی داشته باشم بدین صورت where order=1 and ordertype=2 and date='1389/01/01
برای ساخت ایندکس ترتیب فیلدها به چه صورت میباشد؟

AminSobati
شنبه 22 خرداد 1389, 12:56 عصر
در Profiler میتونین با SP Completed و TSQL Completed و RPC Completed اطلاعات اولیه رو جمع آوری کنین.
برای ایندکس، فیلدی که تنوع مقادیرش بیشتره اول بیارین. بعنوان مثال فیلدی مثل "جنسیت" تنوعش بسیار کمه ولی فیلدی مثل PK اصلا تکرار نداره و بهترین تنوع رو داراست