PDA

View Full Version : سوال: میزان بارگذاری دیتابیس



Hamed_Shafiei
سه شنبه 28 تیر 1390, 02:42 صبح
سلام

فرض کنید یک دیتابیس خیلی بزرگی هست که لود شدنش ممکنه کمی طول بکشه. راهی هست بشه مثلا تو یک BackgroundWorker میزان لود شدن اونو فهمید؟

ممنون

Hamed_Shafiei
چهارشنبه 29 تیر 1390, 02:22 صبح
کسی نیست که جواب ما رو بده؟

ParsaNM
چهارشنبه 29 تیر 1390, 02:43 صبح
دوست عزيز اگر از کامپوننتهاي مثل devexpress و يا کامپوننتهاي مشابه استفاده کني معمولا تو تمام کنترلهاي مربوط به ديتا از يک پنل لود استفاده ميکنن ...!

k1csharpdeveloper
چهارشنبه 29 تیر 1390, 02:53 صبح
من نظرم اینه که یا از کامپوننت پروگرسبار devcomponentاستفاده کن توی progressbarکه پراپرتی اونو داره و یا خودت یه progressbar استاندارد بذار و کدشو بنویس

hadisadaghatmehr
پنج شنبه 30 تیر 1390, 00:46 صبح
دوست عزيز backgroung worker يه رويداد داره به نام progress changed كه تو اون مي توني مثلا به مقدار progress bar ات به اندازه پيشرفت لود شدن اضافه كني

AMIBCT
پنج شنبه 30 تیر 1390, 10:04 صبح
منظور شما رو از Load متوجه نمی‌شم

اگه منظورتون اینه که اطلاعات از پایگاه داده در یه شیء مثل Grid بارگزاری بشن و شما متوجه درصد انجام کار بشید،
مشکل از شکل برنامه‌نویسی شما هست

اگه اطلاعات اونقدر زیاده که کاربر برای خونده شدنش باید منتظر بمونه
نباید همه رو با هم بازگزاری کنید

برای پر کردن Grid باید از مدل Virtual استفاده کنید
یعنی فقط بخشی از اطلاعات که داره نمایش داده می‌شه از بانک دریافت می‌شه

Farshid007
پنج شنبه 30 تیر 1390, 14:07 عصر
خوب حالا گیریم که دیتا ی ما روی هاست هستش حجمش هم زیاد نیست این موقع چطور باید میزان لود شده رو تو پروسس بار نشون داد؟؟؟؟

علیرضا حسن زاده
پنج شنبه 30 تیر 1390, 20:41 عصر
برای این کار اگه با DataReader کار کنید و رکورد ها رو یکی یکی دریافت کنید می تونید تعداد رکورد های دریافت شده رو به کاربر نشون بدین
اگه قبل از شروع کار DataReader تعدا رکوردهایی رو هم که قرار هست با Select Count دریافت کنید می تونید به صورت درصدی هم اطلاعات دریافت شده رو نشون بدین
تو سایت های دیگه هم این روش پیشنهاد شده، من خودم هم برای دریافت اطلاعات زیاد یا اطلاعاتی که قراره از سرور بگیرم از این روش استفاده می کنم سرعتش هم نسبت به Fill کردن با تیبل آداپتور به نظرم بیشتره چون دیگه کاری به دیتاست ندارم در صورت نیاز دیتاست رو پر می کنم وگرنه با لیست کار می کنم(البته برای افزایش سرعت لود)

ولی اینکه یه دیتاست رو با متد Fill دیتا تیبل Load کنی نمی دونم چه جوریه البته تاجایی که می دونم همین متد هم در نهایت از همون DataReader برای دریافت رکوردها استفاده می کنه ولی نمیدونم Eventی داره که در هر بار دریافت رکورد اجرا بشه یا نه

Hamed_Shafiei
سه شنبه 04 مرداد 1390, 14:32 عصر
سلام
ممنون از جوابهای شما
ببخشید من مسافرت بودم و سر نزدم.

منظورم اینه که چجوری میشه درصد پیشرفت بارگذاری یک دیتابیس رو فهمید؟

یک سوال دیگه هم دارم اگه کسی جواب بده ممنون میشم:
چطوری میشه یک کنترل تو رویداد do_Work یک BackgroundWorker تعریف کرد؟ کاری که میخوام انجام بدم اینه که تو یک گرید با استفاده از چند تا تابع مثلا 100 تا Row و 10000 تا Column تعریف کنم. بعد هم دکمه بین اونها بذارم. تست که کردم یک کمی طول میکشه و میخواستم با BackgroundWoker این کار رو انجام بدم ولی گیر میداد. لطف کنید راهنمایی کنیدD:

AMIBCT
سه شنبه 04 مرداد 1390, 22:18 عصر
همیشه نمی‌تونید درصد انجام کار رو تشخیص بدید

پایگاه داده پرس‌وجو‌ها رو همون زمانی که به مشتری می‌فرسته، پردازش می‌کنه
و در خیلی از پرس‌وجوها تعداد نهایی نتایج مشخص نیست
و بنابراین درصد انجام کار هم قابل محاسبه نیست

علیرضا حسن زاده
پنج شنبه 06 مرداد 1390, 20:27 عصر
با همون روشی که گفتم می تونی انجام بدی برای درصد هم می تونی همون کوئری که قراره اجرا بشه رو یه بار ازش Count رو Select کنی و تعداد سطر هار و بدست بیاری اونوقت می تونی بر اساس تعداد رکوردهایی که بعدا میگیری در صد رو حساب کنی ولی معمولا یه سربار اضافی میشه