PDA

View Full Version : حرفه ای: طریقه محاسبه سربارهای تحمیلی به سیستم؟



حسین شهریاری
جمعه 21 بهمن 1390, 12:51 عصر
با سلام!

چطوری میشه به صورت علمی و مستند ثابت کرد سربارهای تحمیلی مثلا در روش Linq به مراتب از روشهای دیگه کمتر هست؟

ممنون

mobasherian
جمعه 21 بهمن 1390, 13:21 عصر
واقعا سرعت linq بالاتره یا این که خودمون مستقیم از C# کوئری بزنیم ؟؟؟؟

in_chand_nafar
جمعه 21 بهمن 1390, 15:38 عصر
دوست عزيز زدن كوئري با هر تكنولوژي يه سمت قضيه است
يكي از پارامترهاي مهم در ارزيابي اين است كه با هر تكنيكي كار مي كنيد بايد ببيند SQL و يا هر DB Engine چقدر طول ميكشه كه كوئري را اجرا كنه Cost اجرا شدن كوئري در سمت بانك اطلاعاتي چقدر است آيا كوئري شما كش شده و يا خير
LINQ2SQL و‌ EF هر دو كوئري هايشان را به شكل Dynamic TSQL به سمت بانك اطلاعاتي ميدن كه اين باعث ميشه كوئري شما كش بشه و اگر يه سري تنظيمات بابت Ad-Hoc Query در سمت بانك اطلاعاتي انجام بده SQL بهينه مي تونه در مقابل اين نوع كوئري ها رفتار بكنه
در ضمن اگر با روش ADO.NET‌كار كنيد خوب كوئري شما اينبار AD-hoc Query‌محظ است و توي كش شدن دردسرهاي خودش را داره
يه حسن ديگه هم كه EF ,LINQ‌داره اين كه شما كد نويسي تون راحت است و.... (حوصله و وقت ندارم كه زياد در مورد خوبي هاي اون بنويسم)


AD-hoc Query : كوئري كه خارج از SP‌است اين نوع كوئري ها قابليت كش شدن درست و حسابي ندارند
Select * from t1 where a=1 -اين كوئري يك بار كش ميشه در سمت SQL
Select * from t1 where a=2 -اين كوئري يك بار كش ميشه در سمت SQL
Select * from t1 where a=3 -اين كوئري يك بار كش ميشه در سمت SQL
هر سه اينها سمت بانك اطلاعاتي جداگانه كش ميشن تا يه بنده خدايي دوباره يكي از اونها را با همون سينتكس حتي با رعايت حروف كوچك و بزرگ بنويسه تا بشه از كش اونها استفاده كرد
اما زماني كه كوئري بره داخل SP و يا مثل EF و LINQ‌به شكل داينامينك SQL باشه اون موقه
Select * from t1 where a=?
اون چيزي كه بالا مشاهده ميكني كش شده و صرفا پارامترهاي شما به اون پاس داده ميشن
پيشنهادم اين كه موضوع خودتون رو به سمت تالار SQL‌منتقل كنيد تا اونجا بچه هاي DB‌كار موضوع رو بشكافند و...
موفق باشيد