PDA

View Full Version : لود حجم بالای از اطلاعات



jamal_ch
یک شنبه 25 مرداد 1394, 17:00 عصر
سلام و عرض ادب خدمت همه اساتید عزیز
من میخوام حجم زیادی از اطلاعات رو تو یک گرید ویو نشون بدم با نحوه بایند کردن اینا مشکل ندارم با استفاده از ObjectDataSource داده ها رو به گرید ویو بایند کردم
ولی وقتی اطلاعات در حال بایند شدن هست صفحه قفل میشه (مرورگر برای چند دقیقه not responding میده)
من میخوام وقتی داده ها در حال لود شدن هستند صفحه قفل نشه و در پس زمینه ادمه بده

malloc
یک شنبه 25 مرداد 1394, 18:24 عصر
ajax باید بزنی ....

jamal_ch
دوشنبه 26 مرداد 1394, 08:04 صبح
سلام ممنون که جواب دادین
اگه منظوزتون اینه که تو update panel بزارم ,و از اسکریپت منیجر استفاده کنم اینکار رو انجام دادم اما بازم مرورگر هنگ میکنه
واینوحتی تو یک صفحه خالی که هیچ کدی نداره فقط یک gridview وبک ObjectDataSource داره تست گرفتم بازم همون مشکل رو داره

malloc
دوشنبه 26 مرداد 1394, 08:43 صبح
نه منظورم اینه که از دستور .ajax توی جی کووری استفاده کنید و تابع webmethod رو فراخونی کنید تا پروژه هنگ نکنه

jamal_ch
دوشنبه 26 مرداد 1394, 10:29 صبح
میشه راهنمایی کنید چون تا حالا استفاده نکردم البته از وب متد استفاده کردم( webmethod )
اگه میشه نمونه کد بزارید ممنون میشم یک صفحه ویک objectdatasourc و گریدویو با استفاده از همین روشی که مگید بایند کنید

loti88
دوشنبه 26 مرداد 1394, 12:12 عصر
دوست عزیز شما از sqldataReader استفاده میکنین یا sqldataadapter ?
برای اینکه حجم اطلاعات یکجا select نشه معمولا از sqldataReader استفاده میکنن تا سرور هنگ نکنه و رم سرور پر نشه
تفاوتش رو هم اگه لازمه بگم؟!

jamal_ch
دوشنبه 26 مرداد 1394, 13:19 عصر
دوست عزیز شما از sqldataReader استفاده میکنین یا sqldataadapter ?
برای اینکه حجم اطلاعات یکجا select نشه معمولا از sqldataReader استفاده میکنن تا سرور هنگ نکنه و رم سرور پر نشه
تفاوتش رو هم اگه لازمه بگم؟!

تمام روش هایی که شما میگی من تست کردم بازم صفحه هنگ میکنه

loti88
دوشنبه 26 مرداد 1394, 14:46 عصر
برادر تو SqldataReader نباید همچین قضیه پیش بیاد چون به صورت Row به Row میره اطلاعات رو میخونه و میاره واست!
اگه مشکل باز حل نمیشه از جای دیگست ما تو شرکت رکورد میلیونی رو لود میکنیم مشکلی پیش نمیاد چجوری واسه شما این قضیه پیش اومده.

malloc
دوشنبه 26 مرداد 1394, 15:11 عصر
برادر تو SqldataReader نباید همچین قضیه پیش بیاد چون به صورت Row به Row میره اطلاعات رو میخونه و میاره واست!
اگه مشکل باز حل نمیشه از جای دیگست ما تو شرکت رکورد میلیونی رو لود میکنیم مشکلی پیش نمیاد چجوری واسه شما این قضیه پیش اومده.
یه سوال برادر شما رکورد میلیونی رو لود میکنی که چی بشه ؟؟؟ مثلا با یک میلیون رکورد میخوای چیکار کنی ؟؟ اصلا مگه داریم ؟؟؟

داریم جدولی که صدها میلیون رکورد داشته باشه ... اما هرگز اینا همه با هم لود نمیشه ..... بیشتر حد منطقی لود کردن 1000-2000 تا رکورد هست ..... و قطعا باید سلکتتون فیلتر داشته باشه ....


اینی هم که میگید sqldatareader خط به خط میره و میاره درسته و باید جواب بده ..... اما باز هم امکانش هست که توی سیستم دوستمون جواب نده چون همون ریدر که شما میگی خط به خط از اطلاعات لود شده روی رم میخونه والا که به ازای هر خط نمیره سمت سرور .... مشکل اصلی الان اون سلکته هست.....

در هر صورت من فرضیم اینه که اگه شما ایجکس استفاده کنی مشکلت حل میشه..... شرمنده منم خیلی وقته با گرید کار نکردم حوصلم نکشید برم سمتشو یه مثال درست کنم ....


ضمنا شما مگه میخوای چندتا رکورد لود کنی که انقد هنگ میکنه ؟

jamal_ch
دوشنبه 26 مرداد 1394, 16:18 عصر
یه سوال برادر شما رکورد میلیونی رو لود میکنی که چی بشه ؟؟؟ مثلا با یک میلیون رکورد میخوای چیکار کنی ؟؟ اصلا مگه داریم ؟؟؟

داریم جدولی که صدها میلیون رکورد داشته باشه ... اما هرگز اینا همه با هم لود نمیشه ..... بیشتر حد منطقی لود کردن 1000-2000 تا رکورد هست ..... و قطعا باید سلکتتون فیلتر داشته باشه ....


اینی هم که میگید sqldatareader خط به خط میره و میاره درسته و باید جواب بده ..... اما باز هم امکانش هست که توی سیستم دوستمون جواب نده چون همون ریدر که شما میگی خط به خط از اطلاعات لود شده روی رم میخونه والا که به ازای هر خط نمیره سمت سرور .... مشکل اصلی الان اون سلکته هست.....

در هر صورت من فرضیم اینه که اگه شما ایجکس استفاده کنی مشکلت حل میشه..... شرمنده منم خیلی وقته با گرید کار نکردم حوصلم نکشید برم سمتشو یه مثال درست کنم ....


ضمنا شما مگه میخوای چندتا رکورد لود کنی که انقد هنگ میکنه ؟

من یک سایت درست کردم که تعداد ماشین رو که موقعیتش رو از gps گرفتم جاشونو تو google map نشون میدم
این موقعیت ها تو جدول ذخیره میشه و کاربر وقتی با نام کاربری خودش وارد میشه لیست ماشین هاش میاد و جاشونو میبینه
مشکلم از اونجایی شروع شد که یکی از کاربران تو یوزرش 1400 تا ماشین داره
من برای نشون دادن جای ماشین ها یک حلقه با جاوا اسکریپت کردم و اطلاعات رو از gridview میخونه و مارکر ها رو تو نقشه نشون میده


تو حالت لوکال هاست با ie که انجام میدم
این پیغام رو میده localhost is not responding due to a long running script
اول اومدم تمام مشکلات رو برسی کردم یعنی تمام کدها رو چک کردم
به این نتیجه رسیدم که مشکل مال لود کردنه اطلاعات هست و با گذاشتن یک گرید تنها بدون هیچ کدی دقیقا دیدم همین مشکل پیش اومد
تعداد رکورد هام حدود 1400 تا که تعداد زیادی فیلد حدودا 30 تا برای هر رکورد لود میشه حجمشو که گرفتم حدودا 300 کیلو شد است الیته با استفاده از paging میشه به راحتی این مشکل رو حل کرد
ولی اینجا تو این پروژه طوری هست که نمیخوام استفاده کنم
خوندن از دیتابیس هم حدود 6 ثانیه بیشتر طول نمیکشه ولی مشکل زمانی است که این اطلاعات باید به گرید ویو بایند کنم
امیدوارم خوب توضیح داده باشم

jamal_ch
دوشنبه 26 مرداد 1394, 16:42 عصر
برادر تو SqldataReader نباید همچین قضیه پیش بیاد چون به صورت Row به Row میره اطلاعات رو میخونه و میاره واست!
اگه مشکل باز حل نمیشه از جای دیگست ما تو شرکت رکورد میلیونی رو لود میکنیم مشکلی پیش نمیاد چجوری واسه شما این قضیه پیش اومده.
سلام
این کدها منه ببین مشکلش چیه با همون روش شما عزیز که میگی میلونی load میکنید ؟؟؟؟
چون بازم مرورگر فریز میشه!

string query = "SELECT * FROM V_OnlineCarWithGroups WHERE (V_OnlineCarWithGroups.GroupId ='61_')";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = Connection_String._StrConnection;
// System.Configuration.ConfigurationManager.Connecti onStrings("ConnectionString").ConnectionString
SqlCommand command = new SqlCommand(query);

connection.Open();
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnect ion);
GridView2.DataSource = reader;
GridView2.DataBind();

jamal_ch
سه شنبه 27 مرداد 1394, 11:38 صبح
کسی دیگه نظری نداره؟

loti88
سه شنبه 27 مرداد 1394, 14:18 عصر
عرض به حضور دوس گرامی تو سامانه ای که نوشتیم کاربر نیاز به یه گزارش گیری کلی از کشور داره که نزدیک به 700هزار رکورد لود میشه و داخل Disk ذخیره میشه حالا به دلایلی.
درباره قضیه که فرمودین شما اگه از SqldataAdapter استفاده کنین امکان هنگ شدن سرور بسیار بالاست(البته با حجم دیتای بالا) چون تقریبا سعی میکنه از کل فضای رم استفاده کنه.
اما در Reader به دلیل اینکه حجم اطلاعات رو ،یکجا select نمیکنه رم زیادی از سرور استفاده نمیشه(منطقی هم است)
درمورد بحث ایجکس هم که فرمودین بالاخره تو لایه DAL باز قضیه مربوط میشه به نوع درخواست از دیتابیس .فرق آنچنانی نمیکنه.چون مشکل دوست عزیزمون اینکه وقتی اطلاعات داره لود میشه هنگ میکنه.اصولا از ایجکس برای ارسال حجم بالایی از اطلاعات که دیتاش مهم نیست استفاده میشه.

loti88
سه شنبه 27 مرداد 1394, 14:30 عصر
دوست عزیز شما یه تست بزن راهی که میگم رو:
شما همه اطلاعاتی که میخوای select بشه رو از data base بگیر بریز توی DataTable بدون اینکه تو GridView بایند کنی. چک بکن ببین همه رکوردها میاد یا نه ؟!
بزار یه نتیجه بگیریم.اگه همه رکورد ها اومد مشخص میشه که مشکل شما select اطلاعات نیست و مشکل بایند کردن حجم بالای اطلاعات در Grid هست که اگه لازم باشه فوقش میایم اطلاعات رو با حجم پایین و به صورت مرحله ای بایند میکنیم تو گرید ویو. چک کن نتیجه رو بگو .
یه کوئری هم تو خود دیتابیس بزن ببین چقدر طول میکشه select دیتاها اینم بگو مرسی

jamal_ch
سه شنبه 27 مرداد 1394, 15:34 عصر
سلام
من قبلا همه تستی هایی که شما میگید گرفتم اول خود کوری رو تو sql تست گرفتم که 2 ثانیه طول میکشه
بعد لود دیتا رو که به نتیجه زیر رسیدم
لود دیتا ها فقط 6 تا 10 ثانیه طول میکشه
بعد اومدم که بایند کنم به دیدم زمان گیر است
حالا اگه لطف کنید بگید چطور داده ها رو مرحله به مرحله بایند کنیم
در ضمن یوزی که 1400 تا ماشین داره (وزارت کشور ستادمدیریت حمل ونقل سوخت) است و اینم یک پروژه بزرگه و گرنه افراد حقیقی بیشترینشون 200 تا ماشین بیشتر ندارن

loti88
چهارشنبه 28 مرداد 1394, 10:57 صبح
سلام
من قبلا همه تستی هایی که شما میگید گرفتم اول خود کوری رو تو sql تست گرفتم که 2 ثانیه طول میکشه
بعد لود دیتا رو که به نتیجه زیر رسیدم
لود دیتا ها فقط 6 تا 10 ثانیه طول میکشه
بعد اومدم که بایند کنم به دیدم زمان گیر است
حالا اگه لطف کنید بگید چطور داده ها رو مرحله به مرحله بایند کنیم
در ضمن یوزی که 1400 تا ماشین داره (وزارت کشور ستادمدیریت حمل ونقل سوخت) است و اینم یک پروژه بزرگه و گرنه افراد حقیقی بیشترینشون 200 تا ماشین بیشتر ندارن


ساده ترین راه برای اینکه همه رکورد ها همزمان بایند نشن اینکه شما AllowPaging رو فعال کنی در GridView و PageSize رو هم بزار مثلا رو 10
ببین قضیه چی میشه؟
اگه اینم نشد تایمر میزاریم ... نگران نباش حل میکنیم کاری نیست که حل نشه.

مثال:
"asp:GridViewID="grid"runat="server"CellPadding="3"GridLines="Vertical" AllowPaging="True" Font-Size="Small>
PageSize="10">

jamal_ch
چهارشنبه 28 مرداد 1394, 11:09 صبح
ساده ترین راه برای اینکه همه رکورد ها همزمان بایند نشن اینکه شما AllowPaging رو فعال کنی در GridView و PageSize رو هم بزار مثلا رو 10
ببین قضیه چی میشه؟
اگه اینم نشد تایمر میزاریم ... نگران نباش حل میکنیم کاری نیست که حل نشه.

مثال:
"asp:GridViewID="grid"runat="server"CellPadding="3"GridLines="Vertical" AllowPaging="True" Font-Size="Small>
PageSize="10">


تو تایپیک های بالا توضیح دادم که میشه از paging استفاده کرد و گفتم اینجا طوری هست که نمیخوام از این خاصیت استفاده کنم در صورت امکان

jamal_ch
شنبه 31 مرداد 1394, 08:08 صبح
سلام
کسی دیگه نظری نداره؟

Mag-Mag
شنبه 31 مرداد 1394, 14:50 عصر
اطلاعات رو چرا حتما میخوای توی gridview نشون بدی؟
خودت به صورت table نشون بده
مثلا :


string RetStr = "<table>";
string query = "SELECT * FROM V_OnlineCarWithGroups WHERE (V_OnlineCarWithGroups.GroupId ='61_')";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConnectionString;
// System.Configuration.ConfigurationManager.Connecti onStrings("ConnectionString").ConnectionString
SqlCommand command = new SqlCommand(query);

connection.Open();
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnect ion);
foreach(DataRow dr in reader)
{
RetStr +="<tr>"
+ "<td>"+dr["Id"].ToString()+"
+"</tr>";
}
return RetStr+"</table>";



تا اینجا این اطلاعات رو رو صفحه چاپ کن تا ببینی چی میشه.البته تو تعداد td های جدولت رو کامل کن
حالا خیلی ساده یه سرچ بزن
Jquery Ajax
و این اطلاعات رو با Ajax برگردون.

مشکل استفاده از کامپوننت های اماده همین سنگینیشونه
توی داده های بالا جواب نمیدن

fakhravari
شنبه 31 مرداد 1394, 15:37 عصر
در رکورد بالا باید صفحه بندی کنید

jamal_ch
شنبه 31 مرداد 1394, 15:53 عصر
اطلاعات رو چرا حتما میخوای توی gridview نشون بدی؟
خودت به صورت table نشون بده
مثلا :


string RetStr = "<table>";
string query = "SELECT * FROM V_OnlineCarWithGroups WHERE (V_OnlineCarWithGroups.GroupId ='61_')";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConnectionString;
// System.Configuration.ConfigurationManager.Connecti onStrings("ConnectionString").ConnectionString
SqlCommand command = new SqlCommand(query);

connection.Open();
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnect ion);
foreach(DataRow dr in reader)
{
RetStr +="<tr>"
+ "<td>"+dr["Id"].ToString()+"
+"</tr>";
}
return RetStr+"</table>";



تا اینجا این اطلاعات رو رو صفحه چاپ کن تا ببینی چی میشه.البته تو تعداد td های جدولت رو کامل کن
حالا خیلی ساده یه سرچ بزن
Jquery Ajax
و این اطلاعات رو با Ajax برگردون.

مشکل استفاده از کامپوننت های اماده همین سنگینیشونه
توی داده های بالا جواب نمیدن

حالا RetStr چطور رو صفحه نشون بدم تو یک div
سلام یک نمونه میشه بزارید تست کنم با تشکر

Mag-Mag
شنبه 31 مرداد 1394, 15:57 عصر
حالا RetStr چطور رو صفحه نشون بدم تو یک div
سلام یک نمونه میشه بزارید تست کنم با تشکر


یک دایو runsatserver بزار و بعد داخل innerHTML اون بنویس
یا اصلا بنویس


Response..Write(RetStr);

jamal_ch
شنبه 31 مرداد 1394, 17:00 عصر
یک دایو runsatserver بزار و بعد داخل innerHTML اون بنویس
یا اصلا بنویس


Response..Write(RetStr);


سلام تست گرفتم سرعت بهتر شد اما نه چندان که به چشم بیاد مثلا 2 دقیقه شد 1:30

اینم کد ها

ایا راه دیگه هم بنظرت میرسه

//استفاده از اسکیو ال دیتا ریدر

{
string query = "SELECT V_OnlineCarWithGroups.GroupId, V_OnlineCarWithGroups.IdForUpdateGroup, V_OnlineCarWithGroups.ID, V_OnlineCarWithGroups.CarId, V_OnlineCarWithGroups.CarName, V_OnlineCarWithGroups.StaionId, V_OnlineCarWithGroups.CarLat, V_OnlineCarWithGroups.CarLng, V_OnlineCarWithGroups.Status, V_OnlineCarWithGroups.Speed, V_OnlineCarWithGroups.Direction, V_OnlineCarWithGroups.MIzanSharzhSIM,V_OnlineCarWi thGroups.MIzanSharzhBattery, V_OnlineCarWithGroups.DateTime1, V_OnlineCarWithGroups.MyStatus, V_OnlineCarWithGroups.SystemTim, V_OnlineCarWithGroups.DateTime1 AS GpsTimeShamsi, V_OnlineCarWithGroups.SystemTim AS SystemTimeShamsi, Drivers.CarType, Drivers.NumEntezami, Drivers.FName, Drivers.LName, V_OnlineCarWithGroups.AntennaStatus, V_OnlineCarWithGroups.DigitalSensor, V_OnlineCarWithGroups.AnalogSensor, Drivers.ExpairtDate, Drivers.MyStatus AS DriverStatus, V_OnlineCarWithGroups.SoftVersion FROM V_OnlineCarWithGroups LEFT OUTER JOIN Drivers ON V_OnlineCarWithGroups.CarId = Drivers.CarId WHERE (V_OnlineCarWithGroups.GroupId = '61_') ";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = Connection_String._StrConnection;
// System.Configuration.ConfigurationManager.Connecti onStrings("ConnectionString").ConnectionString
SqlCommand command = new SqlCommand(query);

connection.Open();
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnect ion);

string RetStr = "<table>";

string sas = "";
if ((reader.HasRows)) {

while ((reader.Read())) {
RetStr = (RetStr + ("<tr>" + ("<td>" + reader("Id").ToString + "</td>" + "<td>" + reader("IdForUpdateGroup").ToString.Trim + "</td>" + "<td>" + (reader("CarName").ToString.Trim) + "</td>" + "<td>" + (reader("StaionId").ToString.Trim) + "</td>" + "<td>" + (reader("CarLat").ToString.Trim) + "</td>" + "<td>" + (reader("CarLng").ToString.Trim) + "</td>" + "<td>" + (reader("Status").ToString.Trim) + "</td>" + "<td>" + (reader("Speed").ToString.Trim) + "</td>" + "<td>" + (reader("Direction").ToString.Trim) + "</td>" + "<td>" + (reader("MIzanSharzhSIM").ToString.Trim) + "</td>" + "<td>" + (reader("MIzanSharzhBattery").ToString.Trim) + "</td>" + "<td>" + (reader("DateTime1").ToString.Trim) + "</td>" + "<td>" + (reader("MyStatus").ToString.Trim) + "</td>" + "<td>" + (reader("SystemTim").ToString.Trim) + "</td>" + "<td>" + (reader("CarType").ToString.Trim) + "</td>" + "<td>" + (reader("NumEntezami").ToString.Trim) + "</td>" + "<td>" + (reader("FName").ToString.Trim) + "</td>" + "<td>" + (reader("LName").ToString.Trim) + "</td>" + "<td>" + (reader("AntennaStatus").ToString.Trim) + "</td>" + "<td>" + (reader("DigitalSensor").ToString.Trim) + "</td>" + "<td>" + (reader("AnalogSensor").ToString.Trim) + "</td>" + "<td>" + (reader("ExpairtDate").ToString.Trim) + "</td>" + "<td>" + (reader("DriverStatus").ToString.Trim) + "</td>" + "<td>" + (reader("SoftVersion").ToString.Trim) + "</td>" + "<td>" + (reader("GpsTimeShamsi").ToString.Trim) + "</td>") + "</tr>"));


}
}
RetStr += "</table>";
griddiv.InnerHtml = RetStr;
}

آیا راه دیگه ایی به نظرت میرسه ؟

Mag-Mag
یک شنبه 01 شهریور 1394, 11:22 صبح
دیگه همینه
از این بهتر باید سرور سایتت رو قوی تر کنی

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

مثلا سایت دیوار روببین
میاد با اسکرول کردن صفحه ، هی رکوردهای جدید رو لود میکنه
تو هم می تونی این کار رو بکنی
کلا سعی کن خیلی رو ابزارای دات نت مانور ندی
چون برنامه نویسیت محدود میشه به همونا

mRizvandi
یک شنبه 01 شهریور 1394, 14:33 عصر
سلام دوست عزیز
به نظر من شما مشکل در ساختار کلی برنامه دارید از لایه دیتابیس گرفته تا لایه نمایش
من حجم بالاتر از این اطلاعات رو نمایش دادم و مشکلی هم نداشتم. به نظر از ابتدا ساختارت رو بررسی کن ببین کجای کار ایراد داره، بعد مساله آخر رو حل کن که احتمالا خودش حل میشه.

اما سوال: آیا دیتابیس و هاست روی یک سرور هستند؟
سوام دوم: زمان انجام کدی که دوستمون دادن بخش while دقیقا چقدر زمان می گیره و چند تا رکورد رو داره لیست میکنه؟

jamal_ch
یک شنبه 01 شهریور 1394, 16:29 عصر
سلام دوست عزیز
به نظر من شما مشکل در ساختار کلی برنامه دارید از لایه دیتابیس گرفته تا لایه نمایش
من حجم بالاتر از این اطلاعات رو نمایش دادم و مشکلی هم نداشتم. به نظر از ابتدا ساختارت رو بررسی کن ببین کجای کار ایراد داره، بعد مساله آخر رو حل کن که احتمالا خودش حل میشه.

اما سوال: آیا دیتابیس و هاست روی یک سرور هستند؟
سوام دوم: زمان انجام کدی که دوستمون دادن بخش while دقیقا چقدر زمان می گیره و چند تا رکورد رو داره لیست میکنه؟
سلام ممنون که جواب دادید
تو تایپیک های قبلی هم اشاره کردم که حتی تویک صفحه خالی هم این مشکل رو دارم
من اول دیتابیس و کوری شروع کردم بعد صفحه اصلی رو چک کردم
مثلا while بالا کمتر از 10 ثانیه تموم میشه موندم چیکار کنم 2 هفته است اعصابمو خرد کرده

MahmoudiNik
جمعه 06 شهریور 1394, 15:49 عصر
سلام ممنون که جواب دادید
تو تایپیک های قبلی هم اشاره کردم که حتی تویک صفحه خالی هم این مشکل رو دارم
من اول دیتابیس و کوری شروع کردم بعد صفحه اصلی رو چک کردم
مثلا while بالا کمتر از 10 ثانیه تموم میشه موندم چیکار کنم 2 هفته است اعصابمو خرد کرده

سلام دوست عزیز، من یه پروژه مشابه نوشتم، مشکل شما یکی تو واکشی اطلاعات و دوم نحوه نشون دادنش هست که برای اینجور پروژه ها اشتباهه، شما باید یک web method درست کنی و اطلاعات رو بصورت json بفرستی سمت کلاینت.
اصلا یه نمونه کد جاوا اسکریچت میزارم حالشو ببری(سرعت این کد در حد بنزه!):
در ضمن تو این روش باید حواست به امنیت هم باشه. در اینجا من اطلاعات زیادی که یکسری نقاطه درخواست میدم و سمت سرور هم که یک web method نوشته شده پاسخ رو بصورت json برام میفرسته و من هم رو نقشه یا گرید یا هرجا بخوام نشون میدم.




function GetLastPathLine(uid) {//نمایش اخرین مسیر طی شده
var total_dis = 0;
$.ajax({
url: "ReAction.aspx/GetLastPath",
type: "POST",
data: '{id:' + uid + '}',//sending the last point as id
dataType: "JSON",
contentType: "application/json; charset=utf-8",
success: function (data) {


if (data.d != null) {



var objPoint = { d: data.d[0] };
SetLastPoint(objPoint);

build_map(new_pos, LastPoint.full_name, info_str, current_zoom);
//نمایش توی گریدی مثل جی کوئری گرید


}



}
});


}



سامانه ای که نوشتیم یک سیستم ردیاب خودرو ی انلاینه که اطلاعات خوردو های متحرک رو از طریق جی پی اس میگیره و آنلاین ترکینگ تو سایتم دارم اگه لازم داشتی پیام خصوصی بده ،دموش رو بهت نشون میدم و از نظر حجم اطلاعات بطور میانگین به ازای هر خودرو روزانه 4،5 هزار رکورد رو ذخیره و میتونه روی نقشه گوگل نشون بده و هنگ نکنه(تعریف از خود نباشه :لبخند:). الان چیزی حدود 3 میلیون رکورد داریم که روزانه در حال افزایشه و سیستم بطور خودکار اونارو آرشیو میکنه و مشکلی هم نداره، اینارو گفتم که بدونید معماری لایه ها به شدت خودشو تو سیستم های اطلاعاتی حجیم نشون میده.