PDA

View Full Version : سوال: مشکل کندی یک query در بار اول اجرا



S_O_S1982
جمعه 07 اسفند 1388, 11:28 صبح
سلام دوستان

در یک اداره ، که سرورشون windows2003 هست ، دیتابیس هم Sqlserver 2000 ، وقتی کلاینتها برای بار اول برنامه رو اجرا می کنن ، یک Query در حدود 20 ثانیه طول می کشه تا داده ها رو از یک چدول با 4 صد هزار رکورد ( تقریبی ) استخراج کنه ، این کندی فقط در بار اول مشاهده می شه و دفعات بعد از بین میره و به حدود 2-3 ثانیه می رسه ، من با index tuning wizard سیکوال 2000 هم ، ایندکس ها رو دوباره تعریف کردم اما مشکل حل نشد
به نظر شما این کندی برای دفعه ی اول برای چیه؟ و چجوری این مشکل رو حل کنم

ممنون

majjjj
شنبه 08 اسفند 1388, 07:30 صبح
این بخاطر این هست که شما خودت رو به سرور معرفی میکنی و تا سرور یوزر پسورد شمار وچک کنه طول میکشه اما کویری که دفعات بعد اجرا میکنی سریعتر میشه چون یوزر شما به سرور معرفی شده البته در مورد سرور های قدرتمند این فاصله زمانی خیلی کمه و کمتر احساس میشه همچنین پهناد باند هم روی این سرعت تاثیر میذاره

S_O_S1982
شنبه 08 اسفند 1388, 13:40 عصر
این بخاطر این هست که شما خودت رو به سرور معرفی میکنی و تا سرور یوزر پسورد شمار وچک کنه طول میکشه اما کویری که دفعات بعد اجرا میکنی سریعتر میشه چون یوزر شما به سرور معرفی شده البته در مورد سرور های قدرتمند این فاصله زمانی خیلی کمه و کمتر احساس میشه همچنین پهناد باند هم روی این سرعت تاثیر میذاره


سلام
به نظر من خیلی باید فاجعه باشه که وقتی بخوای با Sa به دیتابیس وصل بشی ، این همه زمان طولانی باشه
اما ببینید ، من وقتی برنامه رو می بندم و باز دوباره وصل می شم به دیتابیس ، همون کوئری رو اجرا می کنم ، سریع انجام میشه ، در واقع میشه گفت هر بار که کامپیوتر خاموش و روشن میشه ، اون کوئری زمان اجراش طولانی میشه ،
من فکر کنم یه چیزی برای دفعه ی اول میره تو cach که دفعه های بعدی مستیقیم از cach می خونه و سریع اجرا میشه

majjjj
یک شنبه 09 اسفند 1388, 12:38 عصر
این ربطی نداره که یوزر شما چی باشه یا حداقل اینقدری که مد نظر شما هست نباید باشه
دوتا چیز رو چک کنید برنامتون رو روی یک سیستم دیگه هم چک کن
یک بانک دیگه اگه روی سرور داری ببین سرعت اتصال به اون چجوره؟

ASKaffash
دوشنبه 10 اسفند 1388, 10:28 صبح
سلام دوستان

در یک اداره ، که سرورشون windows2003 هست ، دیتابیس هم Sqlserver 2000 ، وقتی کلاینتها برای بار اول برنامه رو اجرا می کنن ، یک Query در حدود 20 ثانیه طول می کشه تا داده ها رو از یک چدول با 4 صد هزار رکورد ( تقریبی ) استخراج کنه ، این کندی فقط در بار اول مشاهده می شه و دفعات بعد از بین میره و به حدود 2-3 ثانیه می رسه ، من با index tuning wizard سیکوال 2000 هم ، ایندکس ها رو دوباره تعریف کردم اما مشکل حل نشد
به نظر شما این کندی برای دفعه ی اول برای چیه؟ و چجوری این مشکل رو حل کنم

ممنون
سلام
اگر اولین بار تند است ولی دفع بعد دقیقا همان کوئری تند است بخاطر اینستکه از cach استفاده میکند اگر دفعه دوم یکم دستور عوض شود باز هم باید کند باشد

Pouyan_PDM
دوشنبه 10 اسفند 1388, 15:30 عصر
تو sql server یه چیزی هست به اسم Plan Cash که بهش proc cash هم میگن .وقتی بار اول یه query میخود اجرا شه براش Execution Plan توسط Query Optimizer درست میشه که به engin میگه چه طوری query اجرا کنه.این Execution Plan تو proc cash ذخیره میشه دفعه ی بعدی برای اجرای query نیازی به ایجاد این Execution Plan نیست و از proc cash استفاده میشه.ضمننا فقط این دلیل بهبود سرعت نیست خود داده ها هم میان داخل Data Cash و باعث میشه دوباره از hard خونده نشن.