PDA

View Full Version : حجم data ي بالا دردات نت



jafari31
یک شنبه 22 شهریور 1388, 14:33 عصر
سلام
من تو برنامم يك كوئري دارم كه حاصلش يك ميليون ركورده.اگر اين حجم data از data base وارد شبكه بشه شبكه بسيار كند خواهد شد حالا اگر چندين كاربر با هم وارد بشن واين كوئري رو run كنن وضع بدتر هم ميشه.قراره حاصل اين كوئري scroll بشه.از چه راه كاري بايد استفاده كنم تا سرعت قابل قبولي داشته باشم وهم بتونم كل data set رو scroll كنم.
(اين كاررو قبلا با دلفي انجام دادم حالا همين كاررو بايد با C#‎‎.Net انجام بدم.)
از دوستاني كه زحمت ميكشن جواب ميدن ممنونم.

sh2007
پنج شنبه 26 شهریور 1388, 09:20 صبح
با سلام
چه نيزي داري كه همه اطلاعات رو فراخواني كني بهتره از اين ترفند استفاده كني كه مثلا 100 تا اول اطلاعات روفراخواني كني

mohammadi4net
جمعه 27 شهریور 1388, 01:16 صبح
این کار کاملا اشتباه ست هیچ دلیل منطقی وجود نداره که یک میلیون رکود فراخوانی بشه.
چکاری می خواهید انجام بدین تا دوستان روش ها ی بهینه رو به شما معرفی کنند.

mn_zandy63
جمعه 27 شهریور 1388, 08:52 صبح
این کار کاملا اشتباه ست هیچ دلیل منطقی وجود نداره که یک میلیون رکود فراخوانی بشه.
چکاری می خواهید انجام بدین تا دوستان روش ها ی بهینه رو به شما معرفی کنند.

ایشون توضیح داده اند که میخوای مثلا توی یک گرید نمایش بدن رکوردها رو و قابلیت scroll شدن داشته باشه.
مثلا کاربر بتونه به رکورد 1,000,000 م در همون لحظه دسترسی داشته باشه.

من فکر میکنم ساده ترین راه از نظر برنامه نویسی پیاده سازی مدل صفحه بندی باشه.
و پر دردسرش مثلا یه چیزی تو مایه های کاری که Yahoo Mail میکنه، وقتی لازم باشه رکورد های مورد نظرت load شه.

jafari31
شنبه 28 شهریور 1388, 14:15 عصر
من فکر میکنم ساده ترین راه از نظر برنامه نویسی پیاده سازی مدل صفحه بندی باشه.


ازدوستاني كه زحمت كشيدن و پاسخ دادن ممنونم.
من هم دقيقا منظورم همين بود كه اين حجم data يك دفعه از server به client منتقل نشه و به صورت صفحه به صفحه منتقل بشه.ولي نمي دونم با ADO.Net چه طور بايد اين كاررو انجام بدم.ممنون ميشم اگه بيشتر توضيح بدين.

mn_zandy63
سه شنبه 31 شهریور 1388, 00:36 صبح
روش های زیادی برای اینکار وجود داره، که صد در صد خودت بلدی.
اما اینجا اگه دوستان موافق باشند میتونیم در مورد خاص شما روی کاراییشون بحث شه، ما هم بشینیم یه چیزی یاد بگیریم. :لبخندساده:

ایمان اختیاری
سه شنبه 31 شهریور 1388, 08:04 صبح
( با اجازه ی اساتید ) خب به نظر من یه کاری می شه کرد ... می شه مثلا ده هزارتا ده هزارتا اطلاعات رو توی یه فایلی ریخت و بعدش این فایلا رو به کلاینت انتقال بدی .. این جوری پهنای باند شبکه هم زیاد هدر نمی ره ..وقتی اولین فایل رسید کلاینت اونو می خونه و توی دیتاگرید نشون می ده بعدش که رسید به آخرش فایل بعدی ... شاید این کار کرد .. البته فرمت فایل به نظرم بهتره xml باشه ..اون جوری دردسرش کمتره ..

mn_zandy63
سه شنبه 31 شهریور 1388, 08:59 صبح
خب البته خود این 10 هزار تا یا هزارتا هزارتا جدا کردن بحث داره چطوری خوندنش از SQL (بحث کاراییش)
و دیگه اینکه اصلا میشه هزار تا هزار تا خونده نشه، هر صفحه نهایتا چند تا رکورد داره، همون تعداد خونده شه، چه کاریه؟ :متفکر:
میتونیم روی بحث Cache شدن اطلاعات رسیده هم بحث کنیم.

برای شروع هم ساده ترین روش های صفحه بندی یکی با استفاده از ROW_NUMBER هست که دیگه فکر کنم همه بلد باشند.
یک راه دیگه هم اینه که اگه فیلدی داشته باشی که عددی باشه و به عنوان ردیف بشه ازش استفاده کرد هم میشه با یه شرط روی همون صفحه بندی رو داشت.

دوستان نظر بدن.

k_m
چهارشنبه 01 مهر 1388, 14:30 عصر
سلام
یک نگاه به این لینک بنداز. دقیقا همونیه که شما می خواستی:چشمک:
http://sqlserver2008.persianblog.ir/post/37/:تشویق:

mn_zandy63
چهارشنبه 01 مهر 1388, 23:37 عصر
سلام
یک نگاه به این لینک بنداز. دقیقا همونیه که شما می خواستی:چشمک:
http://sqlserver2008.persianblog.ir/post/37/:تشویق:

در بخشی از تابعی که در این پست هست، نوشته شده:
--Insert the rows from tblItems into the temp. table
INSERT INTO #TempItems (Name, Price)
SELECT Name,Price FROM tblItem ORDER BY Price

آیا این به این معنی نیست، که کل رکوردها از جدول tblItem خونده شده و ریخته شده توی جدول موقت؟
در این صورت آیا این به معنی خونده شدن کل رکوردها برای هر بار اجرای این تابع نیست؟ پس چه فرقی کرد؟
یا جدول های موقت با ساز و کار خاصی در این مورد عمل میکنند که من اطلاع ندارم؟ :متفکر: