با سلام
در مورد کاربرد store perocdure ها بحث های زیادی مطرح شده اینکه سرعت را بالا میبرد امنیت را و ....
ایا برای هر دستور ساده sp نوشتن توصیه شده است؟
عده ای بر این باور هستند که sp را باید برای کارهای محاسباتی در دیتا بیس نوشت و بس و عدهای دیگر معتقدند sp در هر حال یک مزیت هست برای هر عملی روی دیتا بیس sp مفید است
به هر حال بحث فنی روی این موضوع جالب به نظر میرسد
با تشکر
(۰۶-اردیبهشت-۱۳۸۸, ۱۸:۵۰:۱۴)saed2006 نوشته است: [ -> ]با سلام
در مورد کاربرد store perocdure ها بحث های زیادی مطرح شده اینکه سرعت را بالا میبرد امنیت را و ....
امنیتی که میگن به خاطر این هست که اطلاعات به صورت پارامتر بهش ارسال میشه اگه مون پارامتر رو هم چک نکنین میشه یه کارهایی کرد
لزوما استفاده از sp دلیل بر بالا بدن سرعت نیست مثلا
در داخل يك SP بهتر است به جاي اينكه داخل آن از دو دستور Select استفاده كرد، هركدام را در داخل يك SP قرار داده و آنرا به هنگام نياز اجرا كنيم دليل استفاده از كد زير چيست و نسبت به كد بالا چه مزيتي دارد؟در داخل هر sp فقط يك Query ميتواند در داخل cache SQL قرار ميگيرد . و چون در داخل SP اول دو query هستند هر دفعه كه اين SP اجرا شود مجدد SP كامپايل خواهد شد و همين سرعت آنرا خواهد گرفت
نقل قول: ایا برای هر دستور ساده sp نوشتن توصیه شده است؟
خیر
نقل قول: عده ای بر این باور هستند که sp را باید برای کارهای محاسباتی در دیتا بیس نوشت و بس و عدهای دیگر معتقدند sp در هر حال یک مزیت هست برای هر عملی روی دیتا بیس sp مفید است
sp بشتر برای کارهایی که رکوردی رو برمیگردونه مناسبه مثل select ها و معولا برای یه insert توصیه نمیشه چون نیازی به ایجاد یک record set نیست
نقل قول: sp بشتر برای کارهایی که رکوردی رو برمیگردونه مناسبه مثل select ها و معولا برای یه insert توصیه نمیشه چون نیازی به ایجاد یک record set نیست
اولا ما راجع به یک زبان خاص مثل vb یا هر چیز دیگر صحبت نمیکنیم بحث روی استفاده از یک روش روی هر زبانی هست دوما نمیتوان گفت sp نوشتن برای insert کار درستی نیست به جهت انکه به هر حال یک روش بهینه هست ولو در Insert
بنابر این شما معایب استفاده از sp برای عمل insert رو باید بر شمارید تا موضع روشن شود
با تشکر
(۰۷-اردیبهشت-۱۳۸۸, ۱۰:۴۷:۱۹)saed2006 نوشته است: [ -> ]اولا ما راجع به یک زبان خاص مثل vb یا هر چیز دیگر صحبت نمیکنیم
منم حرفی از زبان خاص نزدم
نقل قول: بحث روی استفاده از یک روش روی هر زبانی هست دوما نمیتوان گفت sp نوشتن برای insert کار درستی نیست به جهت انکه به هر حال یک روش بهینه هست ولو در Insert
شما چطور میگین یه sp بهینه تره؟
این بهینه سازی رو شمای کد نویس انجام میدین
در ضمن پست من رو خوب بخونین تا متوجه بشین که sp به خودی خود بهینه نیست بلکه طراحش اونو بهینه میکنه
(همون استفاده از sp تو در تو به جای یک sp طولانی)
در حالت شبکه استفاده از sp به خاطر اینکه فقط پارامترها به سرور ارسال میشن سرعت بالاتری دارن
نقل قول: هینه سازی رو شمای کد نویس انجام میدین
در ضمن پست من رو خوب بخونین تا متوجه بشین که sp به خودی خود بهینه نیست بلکه طراحش اونو بهینه میکنه
به این دلیل میگن sp بهینه است که برای بار اول که اجرا میشه خود sql اونو compile میکنه در صورتی که در dynamic query اینگونه نیست .
sql پارامتر های مختلف در sp رو cache میکنه و متناظر با اون جواب هاب مرتبط پاس میده در sql 2005 با استفاده از sp_executesql این عمل انجام داد .
با استفاده از sp میتوان کنترل شبکه را کنترل کرد .
در sp چیزی به اسم sql injection نداریم و نخواهیم داشت (دلیل امنیتی).
هر بار microsft بخواد جایی از sql بهینه کنه اولین جا شک نکنید sp هاشه چون بیشترین مورد استفاده رو داره .
در هر صورت استفاده از Sp مزیت میباشد و به برنامه نویس هم هیچ ربطی نداره البته نوع نوشتن هم مهمه .
فقط به نطر من در مورد کارهای محاسباتی سنگین باید مراقب بود یادمه در پروژه لیزینگ کارآفرین به قدری محاسبات پیچیده داست یک report که sp اون یه چیزی در حد 500 خط شده بود و از تمام table ها مقادیر باید میاورد و یه سری محاسبات سود و زیانی میکرد .
و اگر 10 کاربر همزمان این گزارش فراخونی میکردن server میخوابید برای حل این مشکل مجبور شدم محاسبات به سمت client ها آوردم تا مشکل حل شه همون کاری که بانک مرکزی مجبور شد برای دستگاه های ATM بکنه . در کل sp همیشه مزیته .