PDA

View Full Version : مشکل سرعت انتقال اطلاعات در دیتابیس موجود در سرور



کامبیز اسدزاده
جمعه 23 فروردین 1392, 23:31 عصر
سلام دوستان...

من یک برنامه ای نوشتم تا حالا دیتابسم رو تو لوکال هاست اجراء میکردم هیچ مشکلی نداشتم...
حالا اونو روی سرور قرار دادم ولی اتقدر سرعت اتصال و انتقال اطلاعات پایین هست که برنامه بدجوری هنگ میکنه ! چطور میتونم این مشکل رو حلش کنم ؟

کامبیز اسدزاده
جمعه 23 فروردین 1392, 23:54 عصر
هنگام لود کردن ذخیره کردن سرعت خیلی پایینه !!! یه پیشنهادی روشی چیزی وجود داره که این مشکل رو رفع کنه ؟ حد اقل با یک لودینگی چیزی خیلی ضایعست اینجوری‌ :(

سرور لینوکس هست دیتنابیس روی cPanel هستش MySQL هم هست البته.

کامبیز اسدزاده
شنبه 24 فروردین 1392, 11:11 صبح
کسی پیدا نشد جواب بده ولی خب خودم اینجا جواب میدم دوستان استفاده کنن.

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

حالا با این حال من مجبور شدم به جای اتصال به دیتابیس بعضی موارد رو با استفاده از PHP وب سرویس بنویسم و بعد بهش وصل شدم روش دیگه ای به ذهنم نرسید.

linux
شنبه 24 فروردین 1392, 11:28 صبح
سلام دوستان...

من یک برنامه ای نوشتم تا حالا دیتابسم رو تو لوکال هاست اجراء میکردم هیچ مشکلی نداشتم...
حالا اونو روی سرور قرار دادم ولی اتقدر سرعت اتصال و انتقال اطلاعات پایین هست که برنامه بدجوری هنگ میکنه ! چطور میتونم این مشکل رو حلش کنم ؟
یک خورده گنگ هست، نگفتید که برنامه‌ای که به سرور وصل میشه winapp یا webapp بعدش با چه روشی وصل می‌شید؟ مستقیم با ado.net یا or-mapper خاصی دارید؟

کامبیز اسدزاده
شنبه 24 فروردین 1392, 11:30 صبح
خب دوست عزیز این برنامه Winapp هستش و به روش استاندارد استرینگش به دیتابیس وصل میشه.
کلا MySQLClient استفاده کردم براش دیتابیس کلا MySQL هست.

linux
شنبه 24 فروردین 1392, 23:43 عصر
خب دوست عزیز این برنامه Winapp هستش و به روش استاندارد استرینگش به دیتابیس وصل میشه.
کلا MySQLClient استفاده کردم براش دیتابیس کلا MySQL هست.

این روش که مستقیما با دیتابیس تعامل داشته باشیم کلا در شبکه‌ها wan و یا اینترنت همونطور هم که خودتان هم دیدید کند هست و مشکلات خودش را دارد. بهترین روش این هست که تمام کارها تبدیل به وب سرویس بشوند و کلاینت با این وب سرویس ها کار کند. شما با php وب سرویس ها را تولید گردید بسیار خوب است و روش درست هم، همین هست.
فقط اینجا بحث امنیت انتقال اطلاعات و session ها و ... مطرح می‌شود که مطلب زیاد در موردش هست همین روش را ادامه دهید.

کامبیز اسدزاده
یک شنبه 25 فروردین 1392, 12:52 عصر
خب دوست عزیز ممنون از توضیحات فقط در تمامی قسمت ها نمیتوانیم از وب سرویس استفاده کنیم یک روشی از دوستان شنیدم که گفتن از Thread استفاده کنید از نظر من استفاده از این روش هم خوب باشه برای مثال در هنگام ردو بدل اطلاعات در Background انجام بگیره و توسط یک Progressbar یا Waiting چیزی مشخص بشه بدون اینکه برنامه نهگ کنده ! من از این روش استفاده میکنم ولی در دیتابیس نمیتوم از Thread استفاده کنم میشه استفاده صحیح از Thread رو برای دیتابیس توضیح بدین برای مثال کد یک قسمتی از دیتابیس این میباشد :



try
{

string query = "select firstname,lastname,companyname,register from " + DBPrefix.prefix + "users;";

using (MySqlCommand cmdSel = new MySqlCommand(query, dbConnect.connection))
{
this.dbConnect.OpenConnection();
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmdSel);
da.Fill(dt);
UserDataGrid.DataContext = dt;
UserDataGrid.ItemsSource = dt.DefaultView;
Columns();

}

this.dbConnect.CloseConnection();

}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}



من به کمک background worker که استفاده میکنم به قسمت های
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmdSel); خطا میده.