PDA

View Full Version : سوال: کند شدن یکبار SQL Server 2005?



SYNDROME
دوشنبه 06 دی 1389, 07:17 صبح
با سلام
من دز SQL Server 2005 Developer با Service Pack 2استفاده می کنم.
مشخصات کامپیوتر : RAM 2 و CPU 2 core 1.73
زمانی که از برنامه Query را به SQL Server می فرستم در 2 ثانیه اجرا می شود.این دستور به شکل زیر است

Select *
From Tbl_Test
Where ID = 12

و تعداد رکوردها حدوداً 5000 است.
کس دیگری از sQL استفاده نمی کند.
ولی بعضی مواقع که این دستور را اجرا می کنم به یکباره 15 ثانیه طول می کشد واگر دوباره اجرا کنم در 2 ثانیه اجرا می شود.
این حالت ممکن است در روز چند بار اتفاق بیافتد.
لبته یک نکته دیگر را هم اضافه کنم.
من این برنامه را در یک Server با RAM 12 و 8 عدد CPU هم تست کردم که البته آنجا 20 کاربر با آن کار می کنند و دستورات زیادی را اجرا می کنند که در بعضی مواقع این مشکل برای آنها هم ایجاد می شود.
اگر امکان دارد من را راهنمایی کند
با تشکر فراوان

حمیدرضاصادقیان
دوشنبه 06 دی 1389, 08:06 صبح
سلام.
در این جدول کلید اصلی دارید؟؟
Execution Plan رو قرار بدید.

SYNDROME
دوشنبه 06 دی 1389, 08:20 صبح
با سلام
در جدول فوق PK وجود دارد.
اگر مشکل از Index گذاری ها باشد باید همیشه کند باشد.
ولی دستور فوق یک بار عالی و یگ بار بد اجرا می شود.
نتوانستم فایل را Attach کنم چون فیلها را موقع Attach به من نمایش نمی دهد.
با تشکر از توجه شما

حمیدرضاصادقیان
دوشنبه 06 دی 1389, 08:25 صبح
سلام.
خوب ببینید چندتا مسئله مطرح هست.
شما این دستور رو در قالب یک SP بسازید و اجرا کنید.
اگر دستور شما برای اولین بار طول میده خوب Plan اونو داره میسازه.البته نباید اینقدر طول بکشه.
به همین خاطر عرض کردم که Execution plan رو قرار بدید.
شما روی فیلد ID ایندکس دارید؟ آیا از فیلدهای محاسباتی در جدول استفاده کردید؟

sajjadrazmi
دوشنبه 06 دی 1389, 11:52 صبح
سلام
موقعی که شما دستور sqlای رو برای اولین بار اجرا می کنید، چون از قبل هیچ داده ای در حافظه موقت خود sql وجود نداره، مجبوره داده ها را از data fileها واکشی کنه. موقعی که خروجی رو نشون میده، یه کپی از اون رو هم در حافظه یا بافر خودش نگه می داره. دفعه بعد که شما همان دستور رو اجرا می کنید، چون این بار داده ها در حافظه هستند، دیگه نیازی به مراجعه به data fileها نیست(از داده های موجود در حافظه برای برگردوندن نتیجه استفاده می کند) در نتیجه سرعت بالا خواهد بود.

SYNDROME
دوشنبه 06 دی 1389, 12:21 عصر
با سلام
با تشکر از دوستان
جدول من دارای فیلد محاسباتی نیست.
این که گفتید دفعه اول کند است من قبول دارم.
ولی این اتفاق به یکباره در بین کار می افتد و در ضمن اختلاف سرعت واکشی Datafile و بافر وجود دارد در حد 2 ثانیه نه به یکبار در 15 ثانیه اون هم یک دستور ساده بدون هیچ Join و محاسبه ای.
با تشکر