ورود

View Full Version : مقایسه stored procedure و query



Kamyar.Kimiyabeigi
شنبه 01 مرداد 1384, 08:20 صبح
یک سوال در زمینه مقایسه stored procedure و query . سرعت کدومشون بهتره منظورم اینه که اگر در یک جای برنامه بخوایم یک script رو اجرا کنیم که هم بشه با query اجرا کرد و هم بشه با stored procedure کدومشون بهتره از لحاظ سرعت و چیزهای دیگه

unknown
شنبه 01 مرداد 1384, 09:08 صبح
سلام دوست عزیز استفاده از sp سرعت کار تو را بالا میبره البته باید توجه داشته باشی که در sql server اگر sp
در DB همیشه وجود داشته باشه مدیریت حافظه sql server به مشکل میخوره و احتمالا کند میشه ولی اگر در موقع لزوم sp شود و سپس حذف شود بهترین بازدهی رو دارید

Kamyar.Kimiyabeigi
شنبه 01 مرداد 1384, 09:15 صبح
در موقع لزوم sp شود و سپس حذف شود بهترین بازدهی رو دارید

یعنی هر موقع که خواستم sp رو runtime بسازم و زمانی که کارم باهاش تموم شد drop بکنمش؟

titbasoft
شنبه 01 مرداد 1384, 12:03 عصر
stored procedure همیشه و در هر شرایطی (99.9%) نسبت به ساختن query برتری داره و البته علت اون هم precompile بودن execution-plan اون هست.
برای اطلاعات بیشتر به :
BOL > SQL Server Achitecture > database architecture > logical database component > stored procedure
مراجعه فرمائید.
فکر کنم جناب ثباتی مطالب ارزنده تری بیان کنند.

AminSobati
یک شنبه 02 مرداد 1384, 00:03 صبح
زمانی که یک Query در SP قرار میگیره، برای بار اول اجرا شاید کمی کندتر باشه و دلیلش اینه که باید Compile بشه و براش Exec Plan بدست بیاد. ولی در دفعات بعدی اجرا، Exec Plan بدون درنگ مورد استفاده قرار میگیره.
Compile شدن برای ad-hoc Query یا همون Queryهای خارج از SP هم رخ میده ولی اگر Cache مورد نیاز باشه، Plan پاک میشه و جای خودش رو به سایر اطلاعات میده. لذا در دفعه بعدی اجرا باید دوباره Plan براش بدست بیاد. اما در مورد SP، این Plan روی دیسک ذخیره شده و هر وقت مورد نیاز باشه سریع بازیابی میشه.
فقط به یاد داشته باشید اگر اطلاعات زیاد ویرایش میشن و حجم اطلاعات شما رو به افزایش هست، تقریبا هفته ای یکبار از sp_recompile استفاده کنیم. چون Planهای ثبت شده برای SP ممکنه نابهینه بشن(در مقابل تغییر حجم اطلاعات). sp_recompile باعث میشه اولین بار بعد از صدور این دستور، SP مجددا Recompile بشه و بهینه ترین Plan بدست بیاد.

unknown
یک شنبه 02 مرداد 1384, 08:24 صبح
بله کامیار جان

من به تجربه این رو فهمیدم که اگر sp ها حذف شوند و دوباره ایجاد شوند خیلی کاراتر میشوند البته همان جور که آقای ثباتی فرمودند در صورتی که db,و حجم کار با اون خیلی زیاد باشه

AminSobati
دوشنبه 03 مرداد 1384, 16:36 عصر
دوست عزیزم
حذف SP و ساختن اون باعث افزایش سرعت نمیشه. تنها توجیهی که میشه کرد این هست که Planهای شما قدیمی شده باشند و با ساخت مجدد SPها باعث بشین Recompile صورت بگیره تا بهینه ترین Plan بدست بیاد. این کار توسط SP_Recompile هم قابل انجامه و منطقی نیست که شما هر چند وقت یکبار SPها رو از اول بسازین. فرض کنین یک بانک داره به طور 24 ساعته از طریق SQL Server به کاربرها سرویس میده. در این حالت عدم وجود حتی یک SP برای 1 ثانیه هم معضل خواهد بود. پس همیشه از SP_Recompile استفاده کنین.

m-khorsandi
دوشنبه 03 مرداد 1384, 17:11 عصر
آقای ثباتی عزیز در مورد Ad-hoc Query صحبت کردین، امکان داره در مورد Ad-hoc یه مقدار بیشتر توضیح
بدین؟
(با عرض معذرت شاید خیلی به این موضوع ربطی نداشته باشه)

AminSobati
دوشنبه 03 مرداد 1384, 21:00 عصر
Ad-hoc Query یعنی Queryهایی که خارج از SP قرار دارن و به طور مستقیم به SQL Server ارسال میشن.