PDA

View Full Version : query time



FastCode
جمعه 25 دی 1388, 10:58 صبح
من توی برنامم تمام دیتابیس رو cache میکنم توی یه سری کلاس.بعد تمام foreign key ها رو اعمال میکنم.
منظورم اینه که یه کلاس مثل فاکتور فروش یه array از کالاهای فاکتور ,یه reference به مشتری ,یه reference به ویزیتور و یه reference به خروجی داره.
~30 تا table دارم.
به نظر شما این عددها خوبند یا نه؟
140735 : RowCount
00:00:01.1860000 : time
CPU = 5 GigaHertz
memory : 30MB
کسی تا حالا کاری شبیه این انجام داده؟
یه ست دیگه(unreal test data):
RowCount : 558271
time : 00:00:04.6500000
CPU = 5 GigaHertz
memory : 120MB

mehdi.mousavi
دوشنبه 28 دی 1388, 14:58 عصر
من توی برنامم تمام دیتابیس رو cache میکنم توی یه سری کلاس.بعد تمام foreign key ها رو اعمال میکنم. منظورم اینه که یه کلاس مثل فاکتور فروش یه array از کالاهای فاکتور ,یه reference به مشتری ,یه reference به ویزیتور و یه reference به خروجی داره.
~30 تا table دارم.

سلام.
به چه دلیل 30 تا جدول رو Cache می کنید؟ شما باید برای هر کاری که انجام میدید، Cache جداگانه ای داشته باشید. هر Cache، برای خودش Dependency های خودش رو داره و ... شاید عملیات روی 5 تا جدول بیشتر از 25 جدول دیگه باشه، در نتیجه اون 25 جدول بیجهت توی RAM آورده شدن و ... تو این جور مواقع، معمولا از Lazy Loading استفاده میشه، یعنی تا وقتی به داده ای نیاز نیست، اصلا به اون داده دست زده نمیشه.

موفق باشید.

FastCode
دوشنبه 28 دی 1388, 16:05 عصر
از lazy loading استفاده کردم.
ولی این عددها بدون lazyloading هستند.
در ضمن اینها اطلاعات 8 ماه هستند و فکر نمیکنم که برای ram مشکلی ایجاد بکنه.
در ضمن این کد کاملا" دقیق طراحی شده وتمام dependency ها درست هستند.
فقط میخوام یه سری عدد دیگه ببینم تا با اینها مقایسه کنم.

mehdi.mousavi
دوشنبه 28 دی 1388, 16:20 عصر
از lazy loading استفاده کردم. ولی این عددها بدون lazyloading هستند.

متوجه نمیشم. اگر اینکارو کرده اید، پس چرا میگید 30 تا جدول رو Cache میکنم. اگر اینکارو نکرده اید، خوب این اعداد و ارقام برای چیه؟ میخواهید کارایی RDBMS رو محک بزنید؟ اصلا متوجه سوال نمیشم. لطفا بیشتر توضیح بدید.

FastCode
سه شنبه 29 دی 1388, 00:32 صبح
دقیقا".
میخوام ببینم قدرت برنامم چقدره.
و این اعداد و ارقام رو با دستکاری توی lazyloading توی DAL ایجاد کردم تا ببینم این 40000 خط کدی که نوشتم خوبه یا نه.
شما تا به حال چنین کاری کردید؟
در ضمن DAL من چیزهایی مثل User Defined Unique Key , شبکه و از همه مهمتر Update بدون select رو ساپورت میکنه.

sia_2007
سه شنبه 29 دی 1388, 09:23 صبح
میتونی با Data Generator ؛ دیتا وارد سیستمت کنی
چون منطقا شما باید برای 5 سال دیتا رو حساب کنید نه هشت ماه

sia_2007
سه شنبه 29 دی 1388, 09:24 صبح
update بدون select چیه و مزایاش چیه ؟

FastCode
سه شنبه 29 دی 1388, 09:37 صبح
اون unreal test data که نوشتم برای 3-4 سال هست.
و update بدون select یعنی وقتی شما یه سطر توی یه تیبل insert یا update میکنی 100 تا کاربر دیگه ای که دارند با دیتابیس کار میکند مجبور نشوند که همه ی دیتابیس رو از sqlserver دانلود بکنند(ΔRow از کلاینت به سرور و از اونجا به همه ی کلاینت ها Broadcast میشه.).
درضمن وقتی از lazy loading استفاده میکنم سرعت تقریبا" 10 برابر وقتی هست که این کار رو نمی کنم.
در ضمن تا موقعی که این برنامه بخواد overload بشه خیلی مونده.(وقت دارم.)
خواهش میکنم statistics بزارید برای مقایسه.

این هم نمودار rowcount به زمان:
http://www.wolframalpha.com/input/?i=plot(x+*+log(2+,+x)/2300000,{x,0,5000000})
پاورقی : 23000000 == free frequency of one core
42768