PDA

View Full Version : سوال: مدت زمان load داده ها



searchman
سه شنبه 15 تیر 1389, 00:55 صبح
سلام خدمت دوستان
در برنامه اي كه از ajax,js,php و بانك myaql استفاده مي كنه، جستجويي انجام مي شه كه هزاران ركورد (حدودا 60000) رو بر مي گردونه (كه به تعدادشون هر روز اضافه مي شه). اما مسئله اينجاست كه براي load شدن داده ها زمان مصرفي بسيار بيشتر از نسخه تحت ويندوز هست كه با دلفي نوشته شده. query هاي زده شده در هر دو برنامه هم يكي هست. به نظر شما مشكل كار كجاست؟ مشكل از XML نيست؟ و اصلا راه حل جايگزيني وجود داره؟
جلوتر ممنون از راهنماييتون!

mehdi.mousavi
چهارشنبه 23 تیر 1389, 20:16 عصر
سلام خدمت دوستان در برنامه اي كه از ajax,js,php و بانك myaql استفاده مي كنه، جستجويي انجام مي شه كه هزاران ركورد (حدودا 60000) رو بر مي گردونه (كه به تعدادشون هر روز اضافه مي شه). اما مسئله اينجاست كه براي load شدن داده ها زمان مصرفي بسيار بيشتر از نسخه تحت ويندوز هست كه با دلفي نوشته شده. query هاي زده شده در هر دو برنامه هم يكي هست. به نظر شما مشكل كار كجاست؟ مشكل از XML نيست؟ و اصلا راه حل جايگزيني وجود داره؟ جلوتر ممنون از راهنماييتون!

سلام.
شما باید با استفاده از نرم افزارهای Profiler، خودتون این مساله رو ردیابی کرده و رفع کنید. با اطلاعاتی که شما دادید، هرگز نمیشه در مورد برنامه شما صحبت کرد... حداقل مکانیزم های مورد استفاده در هر دو solution رو میگفتید تا بیشتر با کاری که انجام داده اید آشنا بشیم...

موفق باشید.

searchman
یک شنبه 24 مرداد 1389, 23:04 عصر
سلام
اول پوزش بابت اين تاخير
بعد مي شه در مورد اين نرم افزار هاي profiler كمي توضيح بديد و اينكه از كجا مي شه گيرشون آورد؟
خوب بگزاريد يك مثال بزنم. combo يي هست كه با هزاران مقدار و در زمان load فرم، پر مي شه. در نسخه شبكه اين load شدن شايد 2-3 دقيقه طول بكشه، در حالي كه تحت ويندوز به ثانيه هم نمي كشه.
و همانجوري كه قبلا هم گفتم در نسخه شبكه به روال معمول، درخواست رو با ajax به سرور مي فرستم و پس از واكشي، دوباره با ajax براي كاربر ارسال و option‌ ها ست مي شه.
اگه نياز هست بگيد تا نمونه كد بگزارم.
بازم ممنون!

mehdi.mousavi
دوشنبه 25 مرداد 1389, 21:20 عصر
سلام در نسخه شبكه اين load شدن شايد 2-3 دقيقه طول بكشه، در حالي كه تحت ويندوز به ثانيه هم نمي كشه.

سلام.
برنامه PHP شما، کنار MySql هستش؟ در واقع میخوام ابتدا مرزبندی اجزاء نرم افزاری موجود در سیستم شما رو بدونم. از طرف دیگه، 60000 رکورد رو چرا بر میگردونید؟ کاربر نهایتا بتونه با 50 تاش همزمان کار کنه، چه نیازی هست مابقی رو Touch کنید؟ لطفا قدری بیشتر در مورد سناریوی پیاده سازی شده توضیح بدید.

موفق باشید.

searchman
دوشنبه 25 مرداد 1389, 21:38 عصر
بله. برنامه و mySQL روي يك سرور هستند اگه منظورتون همينه.
اين تعداد ركورد در حالتي واكشي مي شن كه كاربر بخواد مثلا همه فعاليت هايي رو كه به تمام افرادي كه در تمام پروژه ها، اختصاص داده شده رو مشاهده كنه! (البته مثلا يكي از پروژه ها به تنهايي 6000 فعاليت ثبت شده داره)
و اين قابليتي كه تاكيد شده وجود داشته باشه!

mehdi.mousavi
دوشنبه 25 مرداد 1389, 22:00 عصر
بله. برنامه و mySQL روي يك سرور هستند اگه منظورتون همينه. اين تعداد ركورد در حالتي واكشي مي شن كه كاربر بخواد مثلا همه فعاليت هايي رو كه به تمام افرادي كه در تمام پروژه ها، اختصاص داده شده رو مشاهده كنه! (البته مثلا يكي از پروژه ها به تنهايي 6000 فعاليت ثبت شده داره) و اين قابليتي كه تاكيد شده وجود داشته باشه!

سلام.
ببینید. شما باید اطلاعات رو صفحه بندی کنید. کاربر، تو بهترین حالت، میتونه با یک یا چند تا رکورد محدود کار کنه. شما 60000 رکورد رو Load میکنید که شاید کاربر بخواد 2-3 تاشو بررسی کنه؟ خوب این کار صحیحی نیست. در واقع شما باید بطور مثال 50 تای اول رو Load کنید، بعد کلید Next ای داشته باشید، که در صورت نیاز، Next رو بزنه و 50 رکورد بعدی رو ببینه. و الا اگر این سیستم شما، 4 تا کاربر فعال داشته باشه، بار بسیار زیادی روی سرور خواهد گذاشت. از طرف دیگه، باید ببینید این 60000 رکورد چه حجم HTML تولید میکنه. اگر این حجم زیاد باشه، طبیعی هستش که سرعت انتقال اطلاعات از سرور به Client پایین باشه و ...

موفق باشید.

searchman
سه شنبه 26 مرداد 1389, 00:14 صبح
اول اينكه ممنونم از پيگيريتون


ببینید. شما باید اطلاعات رو صفحه بندی کنید. کاربر، تو بهترین حالت، میتونه با یک یا چند تا رکورد محدود کار کنه. شما 60000 رکورد رو Load میکنید که شاید کاربر بخواد 2-3 تاشو بررسی کنه؟ خوب این کار صحیحی نیست.

وقتي شما با كارفرمايي طرف هستيد كه همه جوره خودش رو صاحب نظر مي دونه و جوري وانمود مي كنه كه كارايي كل برنامه وابسته به همين اتفاقه، شما جاي من چي كار مي كنيد؟:ناراحت:


در واقع شما باید بطور مثال 50 تای اول رو Load کنید، بعد کلید Next ای داشته باشید، که در صورت نیاز، Next رو بزنه و 50 رکورد بعدی رو ببینه. و الا اگر این سیستم شما، 4 تا کاربر فعال داشته باشه، بار بسیار زیادی روی سرور خواهد گذاشت.
دقيقا همين كار براي گزارش گيري از خروجي فرم مربوطه انجام مي شه. اما براي ست كردن combo كار ديگه اي به نظرم نمي ياد.


از طرف دیگه، باید ببینید این 60000 رکورد چه حجم HTML تولید میکنه. اگر این حجم زیاد باشه، طبیعی هستش که سرعت انتقال اطلاعات از سرور به Client پایین باشه و ...

توي يك حلقه تنها id و value ي option ها ست مي شه.
يعني مشكل از اينجاست؟
و اصولا توي زبان هاي ديگه (مثل دلفي) مگه مشابه همين اتفاق نمي افته؟
و بحث قدرت mysql,xml منتفي؟
تشكر!

mehdi.mousavi
چهارشنبه 27 مرداد 1389, 15:00 عصر
توي يك حلقه تنها id و value ي option ها ست مي شه. يعني مشكل از اينجاست؟ و اصولا توي زبان هاي ديگه (مثل دلفي) مگه مشابه همين اتفاق نمي افته؟ و بحث قدرت mysql,xml منتفي؟ تشكر!

سلام.
فرض کنیم هر یک آیتم اینطور نمایش داده بشه:

<option value="1">Option1</option>

یعنی هر آیتم 34 بایت نیاز داشته باشه. 60000 رکورد داریم، پس میشه:

60000x34=2040000bytes = 1992KB ~= 2MB

یعنی Page شما هیچ چیز Element دیگه ای هم نداشته باشه، حداقل 2 مگابایت اطلاعات باید از سمت سرور به Client (با هر بار دیدن صفحه توسط Visitor) ارسال بشه. خوب، حالا یه خط 56Kbps (یا حتی ADSL با سرعتهای به مراتب بالاتر) رو در نظر بگیرید... محاسبه کنید ببینید تو بهترین حالت چقدر طول میکشه تا این صفحه به دست Client برسه. طبیعی هستش سرعت بسیار پایین خواهد بود (صرف نظر از زمان Render شدن صفحه). گمان میکنم این مساله برای کارفرما تشریح بشه، خودش متوجه بشه ازتون چی خواسته و حرفتون رو قبول کنه.

موفق باشید.