Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
yurembo
9 / 9 / 5
Регистрация: 04.07.2009
Сообщений: 112
1

Оптимизация работы растущей базы данных, соединение с которой - через Интернет

28.02.2012, 01:27. Просмотров 1172. Ответов 7
Метки нет (Все метки)

Здравствуйте!
Помогите пожалуйста...Создал базу (MS SQL Express), написал программу которая с ней работает... Вначале как бы ничего, но...клиенты подключаются к базе через интернет, у некоторых он не очень качественный (пинг и скорость!!), а когда сейчас уже много записей в таблицах базы (больше 10000) тяжело загружаются таблицы, а иногда с ошибками типа: "Удаленный сервер не отвечает" и т.д.
Как можно оптимизировать работу базы, а именно загрузку таблиц, усовершенствовать программу или что-то в этом роде...Могу представить фрагменты программы где идет загрузка таблиц:

1. Фрагмент основной программы:

C#
1
2
3
4
5
6
7
8
***
GetDataDLL.GetData table = new GetData();
            DataTable DTable = table.GetAllClientsAsDataTable("select * from tb_Fuel");
            DTable.Locale = System.Globalization.CultureInfo.InvariantCulture;
            bindingSource1.DataSource = DTable;
            dataGridView1.AutoResizeColumns(
            DataGridViewAutoSizeColumnsMode.AllCells);
***
2. Класт GetData:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace GetDataDLL
{
    public class GetData
    {
        public DataTable GetAllClientsAsDataTable(string sql)
        {
            DataTable cl = new DataTable();
            using (SqlCommand cmd = new SqlCommand(sql, DataBaseZ.conn))
            {
                cmd.CommandTimeout = 2 * 60 * 1000;
                SqlDataReader dr = cmd.ExecuteReader();
                
                cl.Load(dr);
                dr.Close();
            }
            return cl;
        }
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 01:27
Ответы с готовыми решениями:

Заполнение базы данных access через интернет
Посоветуйте пожалуйста новичку. Т.к. у нас на предпиятии ассушники совсем тупые, пришлось начать...

Как создать коммутируемое интернет соединение в Windows при доступе в интернет через роутер?
Всем привет! Значится т-а-а-а-ак... Такая ситуация: инет получаю от ADSL-модема, настроенного в...

Соединение с БД через интернет
Как в visaul studio создать подключение с БД которая располагается на AGAVA?

соединение 1С через интернет
Доброго времени суток. Вот у меня такая ситуация. Есть предприятие у него есть удаленное...

Соединение интернет через Wi-Fi на 1,5-2 км
Нужно соеденить два компьютера через WiFi соединение для выхода в интернет. Расстояние между...

7
MAcK
Комбайнёр
1578 / 676 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
28.02.2012, 08:50 2
1. убрать select * from tb_Fuel и написать все имена полей.
2. Загружать данные по мере надобности. Ведь пользователь не видит сразу 1000 записей, а только 10-20. Вот и загрузить записей 50 или 100. Потом догружать по мере надобности.
В книге Адо 2.0 Сеппа данный подход рассматривается.
3. Добавить индексы

Это так на вскидку
1
_katon_
387 / 243 / 20
Регистрация: 03.10.2011
Сообщений: 1,006
28.02.2012, 12:35 3
Еще очень важно какие данные находятся в таблице. Если полей много, да еще есть поле типа blob, то запрос будет выполняться очень долго.
Уверен, что максимальный прирост даст именно постраничный вывод данных. Такой подход исключает зависимость от объемов данных в таблице.
Чтобы настраивать индексы нужно анализировать запросы, а с нуля заниматься этим практически не реально.
1
yurembo
9 / 9 / 5
Регистрация: 04.07.2009
Сообщений: 112
28.02.2012, 16:26  [ТС] 4
Вот оно!
Именно постраничный вывод данных" или же "Загружать данные по мере надобности" то что мне нужно! Спасибо за совет, буду дальше разбираться с этим, тк еще не знаком
0
28.02.2012, 16:26
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,498
02.03.2012, 23:29 5
еще полезным будет кешировать данные в оперативную память...
1
MAcK
Комбайнёр
1578 / 676 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
15.03.2012, 21:14 6
Как разберёшься, пиши
0
yurembo
9 / 9 / 5
Регистрация: 04.07.2009
Сообщений: 112
15.03.2012, 22:41  [ТС] 7
Цитата Сообщение от MAcK Посмотреть сообщение
Как разберёшься, пиши
как бы разобрался, использую постраничный просмотр результата запроса, пока что неплохо получается.
Базовую инфу брал отсюда http://msdn.microsoft.com/ru-ru/library/tx1c9c2f(v=vs.90).aspx , кому-то может пригодится.

Цитата Сообщение от Learx Посмотреть сообщение
еще полезным будет кешировать данные в оперативную память...
ммм...как-то никогда такого не делал...подскажите может где об этом почитать или какой-то примерчик маленький...
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,498
17.03.2012, 18:51 8
это активно используется в ASP.NET.
а суть в том, чтоб каждый раз не обращаться к БД с запросом, а хранить таблицы в оперативной памяти, во всяком случае самые активно использующиеся
0
17.03.2012, 18:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2012, 18:51

Соединение с БД через Интернет в Delphi
Есть компьютер с реальным внешним IP (интернет-сервер). Он же является InterBase 6.5-сервером c...

Соединение двух ПК через интернет
Клиент хочет работать с базой 1с. (8.3 что не особо важно) Имея доступ с офиса к базе в магазине...

Постоянно обрывается интернет соединение через wi-fi
Здравствуйте, у меня возникла вот какая проблема. Последнее время постоянно обрывается связь с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru