PDA

View Full Version : asynchronous data access



antisocial
یک شنبه 16 فروردین 1388, 15:08 عصر
با سلام
فرض کنید ما 7 میلیون رکورد تو یه بانک داریم و فقط کانت اون رو گرفتن 4 ثانیه طول میکشه چه برسه نشون دادنش.من از دوستان شنیدم با سی شارپ راهی وجود داره که میشه دو تا سلکت رو با هم انجام داد که سرعت برنامه بره بالا.اسمشم تا اونجایی که یادمه ترید یا تریت یا غیره بود.آیا کسی در این مورد میتونه منو راهنمایی کنه.چطور میشه اینکار رو انجام داد؟
با تشکر
:متفکر:

rnm123
یک شنبه 16 فروردین 1388, 19:01 عصر
دوست عزیز اینکه چند تا سلکت با هم همزمان انجام شوند دقیقا اطلاعی ندارم ام مبحث ترد یا همان نخ مبحث کاملا جدا و به درد بخوری است که اتفاقا بنده در همین راستا از دوستان خواستم تا میز گفتگویی در این زمینه تشکیل دهیم تا بتوانیم از امکانات این کلاس به خوبی استفاده نمائیم اما متاسفاه ظاهرا اطلاعات در مورد این کلاس در ایران کم است و کمتر کسی در زمینه بطور گسترده کار کرده کرد . به هر حال اگر این موضوع ( یا معادل آن بکگراند ورکر-- backgroundWorker( را در تالار سرچ کنی کم و بیش مطالبی میتوانی پیدا کنی و بامفاهیم اولیه آن میتوانی آشنا شوی.

Microsoft.net
یک شنبه 16 فروردین 1388, 19:22 عصر
با سلام
فرض کنید ما 7 میلیون رکورد تو یه بانک داریم و فقط کانت اون رو گرفتن 4 ثانیه طول میکشه چه برسه نشون دادنش.من از دوستان شنیدم با سی شارپ راهی وجود داره که میشه دو تا سلکت رو با هم انجام داد که سرعت برنامه بره بالا.اسمشم تا اونجایی که یادمه ترید یا تریت یا غیره بود.آیا کسی در این مورد میتونه منو راهنمایی کنه.چطور میشه اینکار رو انجام داد؟
با تشکر
:متفکر:

ببین عزیز Thread یا نخ کاری که میکنه اینه که یک Process اصلی رو به چند نخ (Child هم بهش میگن) میشکنه و اجرای اونها رو اصطلاحا همزمان میکنه ، منظورم از اصطلاحا یعنی اینه که شما اینجوری تصور میکنی ولی در واقع برای یک سیستم تک پردازنده تاثیر چندانی در سرعت نمی کنه و در اکثر مواقع سرعت اجرا هم کم می شه .
در مورد سوالی که شما کردی این قضیه هیچ کمکی به شما نمی کنه ! چرا ؟ چون select شما داره توسط dbms جواب داده میشه و شما توی نحوه جواب دادنش نمی تونی دخل و تصرفی داشته باشی بلکه فقط می تونی توی نحوه نمایشش به کاربر مانور بدی لذا اگه 100 تا Thread هم درست کنی و Count بگیری بازم همون زمان و بلکن بیشتر (به علت هم زمانی دستورات) زمان خواهد برد . در هر صورت باید بیشتر سعی کنی ساختار بانک اطلاعاتیتو بهینه کنی و در درجه دوم Query هاتو بصورت بهینه در بیاری ، وگرنه نخ در این مورد هیچ کمکی بهت نمی کنه و فقط سورس کدت کمی پیچیده میشه !

Sajjad.Aghapour
یک شنبه 16 فروردین 1388, 22:00 عصر
جناب Microsoft.Net جواب شما را دادن.اما یه چیز دیگه:
اولا:


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

دوست عزیز بهتر نیست از زدن همچین حرف هایی پرهیز کنید.عدم استقبال از تاپیک شما به معنی نداشتن اطلاعات در این مورد نیست......

دوما:
استفاده از Thread به معنی سریع تر شدن کد نیست.در این مورد هم چون داده های شما زیاد هست شما می تونی به روش ASynchronous(غیرهمزمانی) از فریز شدن یا هنگ کردن فرمت در زمان لود داده ها جلوگیری کنی.....
موفق باشید..

antisocial
یک شنبه 16 فروردین 1388, 22:09 عصر
دوست عزیز من از دوستان روش کامل کار رو خواستم نه یک کلمه ای که تا به حال نشنیدم.اگر وقت کردید بیشتر توضیح بدید.
در ضمن مشکل من هنگ کردن یا هنگ نکردن نیست من میخوام سرعت کار دو برابر و یا بیشتر بشه.آیا چنین چیزی ممکنه از همون روشی که ذکر کردید.
با تشکر

davood110
یک شنبه 16 فروردین 1388, 22:35 عصر
سلام
ببين دوست عزيز بستگي داره تو اين اطلاعات را مي خواهي چيكار كني و مثلا اگه مي خواي تو يه جدول نشون بدي بايد خواندن اطلاعات به صورت كلي در ابتداي جستجو نباشه مثل خود SQLSERVER ببين وقتي كه تو يه جدول كه مثلا 7 ميليون ركورد داره را توي enterprize بازش مي كني چقدر طول مي كشه ؛ نسبتا همون موقع انجام مي شه چون SQL به اندازه اي كه مي خواد توي جدول نشون بده بازيابي اطلاعات مي كنه و وقتي شما Scroll را پايين مياري دوباره بازياب انجام ميشهو اين ترفندها يه كمي پيچيده است واي بسيار مفيده (يا مثلا جدولت را صفحه بندي كن)
همانطور كه گفتم بستگي داره مي خواي اطلاعات را چه استفاده اي بكني؟

Mahdi.Kiani
دوشنبه 17 فروردین 1388, 01:20 صبح
با سلام
فرض کنید ما 7 میلیون رکورد تو یه بانک داریم و فقط کانت اون رو گرفتن 4 ثانیه طول میکشه چه برسه نشون دادنش.
:متفکر:

در چه سناریویی لازمه که 7 میلیون رکورد با هم نشون داده شوند؟

پ و:
عنوان تاپیک به "asynchronous data access" تغییر کرد./

antisocial
دوشنبه 17 فروردین 1388, 18:33 عصر
آیا شما تا به حال چیزی به نام لاگ گیری در مراکز دولتی شنیده اید؟
آیا با سطوح دولتی کار کرده اید؟(بانک اوراکل)
اگر شما به همچین سناریویی برخورد نکرده اید.نگویید همچین سناریوی موجود نیست آقای مدیر
این تعداد دقیق رکورد های وقایع ثبت شده هست.
6234678
زمانی که ما این تعداد رو میخوایم توی دیتا گرید نشون بدیم و یا چاپ کنیم نیاز به پیجینگ پیدا میکنیم و اگر اطلاع داشته باشید قید کلید اصلی توی اوراکل مثل SQL خود به خود سورت نمیشه پس در نتیجه شما مجبورین با فرمان Order by موقع سلکت کردن رکوردا رو به صورت 100 تا 100 نشان و مرتب نشون بدید پس سورت کردن شما زمان زیادی رو خواهد گرفت
و اینطور که به نظر میاد هیچ راهی نداره باید کاربران منتظر بمونند !

Microsoft.net
دوشنبه 17 فروردین 1388, 23:23 عصر
آیا شما تا به حال چیزی به نام لاگ گیری در مراکز دولتی شنیده اید؟
آیا با سطوح دولتی کار کرده اید؟(بانک اوراکل)
اگر شما به همچین سناریویی برخورد نکرده اید.نگویید همچین سناریوی موجود نیست آقای مدیر
این تعداد دقیق رکورد های وقایع ثبت شده هست.
6234678
زمانی که ما این تعداد رو میخوایم توی دیتا گرید نشون بدیم و یا چاپ کنیم نیاز به پیجینگ پیدا میکنیم و اگر اطلاع داشته باشید قید کلید اصلی توی اوراکل مثل SQL خود به خود سورت نمیشه پس در نتیجه شما مجبورین با فرمان Order by موقع سلکت کردن رکوردا رو به صورت 100 تا 100 نشان و مرتب نشون بدید پس سورت کردن شما زمان زیادی رو خواهد گرفت
و اینطور که به نظر میاد هیچ راهی نداره باید کاربران منتظر بمونند !

ببخشید که ما سوادمون در حد زیر دیپلم هست و از تکنیک های فوق فنی شرکت های دولتی اطلاع نداریم
سوالی واسه من پیش اومده که چاپ این 7 میلیون رکورد که احتمالا اندازه یک خونه کاغذ می خواد به چه دردی می خوره ؟ فرض هم که چاپ کردی به ترتیب کلید ، کی می خواد اینا رو برسی کنه ؟! چیزی که ما شنیدیم و باهاش کار کردیم در سیستم های لاگ این بوده که خروجی لاگ باید بر طبق نیاز باشه یعنی مثلا در تاریخ فلان در ساعت فلان چه کاربری به چه دیتایی دسترسی داشته یا اونو تغییر داده نه اینکه 7 میلیون رکورد رو چاپ کنی رو کاغذ !

antisocial
سه شنبه 18 فروردین 1388, 21:54 عصر
آقای مدیر بنده قصد جسارت نداشتم .فقط احساس کردم که شما میخواید به من بگید که این تاپیک رو از روی بیکاری و یا از روی سرگرمی فرستادید.وگرنه من مبتدی هستم. من شرمندتون هستم.
در ضمن این برنامه برنامه ای هست که حدود 40 کاربر هم زمان باهاش کار میکنن.حالا حساب کنید ما حتی اگه گزارش یک روز رو بخوایم حتی نگاه کنیم اصلا چاپم نکنیم حدود 100 هزار تا میشه یعنی یه هفته چقدر میشه؟(اینارو یه نفر بررسی نمیکنه چندین نفر اینکار رو میکنن)
من حتی برای صفحه بندی هم دچار مشکل شدم چه برسه چاپ! به هر حال شرمنده اگر باعث ناراحتی شدم.من کم تجربه هستم. :خجالت: :خجالت: