30 / 30 / 11
Регистрация: 15.07.2013
Сообщений: 72
|
|
1 | |
Обновление данных из базы данных в клиентах в реальном времени06.08.2014, 18:58. Показов 4661. Ответов 3
Метки нет Все метки)
(
Здравствуйте, уважаемые коллеги!
Как сделать то, что описано в теме? Расскажу с самого начала откуда пошла такая задача. Есть в нашей организации одна клиент серверная программа, серверная часть на MS SQL Server 2008, а клиентская на C++ MFC написанная еще в 2007 году. А программисты писавшие ее, давным давно уволились и исходники нам не оставили. Теперь начальство просит переписать данный продукт с нуля на C#, но прежде чем начать переписывать я хотел бы выяснить один важный вопрос, связанный с обновлением данных в клиентах. Сейчас клиенты работают с несколькими таблицами, основная из которых 18 млн. записей. На клиентах стоит автообновление данных в датагриде каждые 1.5 минуты, на нескольких клиентах каждые 60 сек., всего 30 клиентов. Последние пол года программа стала работать все медленнее и медленнее, хотя сеть 1 гигабит. По мере увеличения клиентов тормоза стали просто невозможными, и сервер с СУБД периодически приходится перезагружать, хотя там стоит 32 гигабайта оперативки. Я думал увеличить таймер до 5 минут на клиентах, а в СУБД на триггер при вставке новых данных вызывать внешнюю хранимку, которая отправляла бы клиенту по TCP/IP сообщение о том что появилась новая запись, такие записи нужны не всем, а только помеченным бизнес объектам. Возможно проблема в том, что таблица слишком большая, но начальству видите ли постоянно нужно в архиве искать данные, хотя если я буду с нуля разрабатывать, то можно сделать архивные таблицы, но не знаю поможет ли это... Какие будут идеи?
0
|
|
06.08.2014, 18:58 | |
Ответы с готовыми решениями:
3
Обновление данных в реальном времени Обновление данных в реальном времени Обновление datagridview - актуализация с источником данных в реальном времени Обновление StringGrid из базы в реальном времени |
1126 / 859 / 501
Регистрация: 09.04.2014
Сообщений: 2,030
|
|
07.08.2014, 12:33 | 2 |
Возможно что стоит добавить в таблицы индексы, которые бы покрывали наиболее используемые выборки
Тут вам стоит посмотреть в сторону SqlDependency (и еще пример)
0
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
07.08.2014, 15:37 | 3 |
как было сказано, это SqlDependency. еще пару ссылок
Mssql - как асинхронно узнать о добавлении или удалении записи SqlDependency - получение уведомления от MSSQL-сервера об изменении данных Но оно имеет тысячи ограничений и сложности в настройке. лично я потихоньку пилю свою службу: клиент при обновлении оставляет на службе на сервере сообщение об обновлении данных. служба в свою очередь рассылает оповещение всем активным программам - и они обновляют именно измененные данные но в моем случае необходим был мессенджер между юзерами и я его доработал до мессенджера для собственно клиентов
1
|
51 / 149 / 33
Регистрация: 29.06.2019
Сообщений: 1,428
|
|
14.01.2021, 07:32 | 4 |
на C# ведь делегата можно создать для этих целей... имхо... не понимаю, чем мессенджер лучше?
Добавлено через 5 минут ну вы же не вытягиваете эти миллионы в GUI?.. всё равно ведь работаете с частями- часть, которая помещается на экран, при правильном дизайне бд не должна давать большие тормоза... индексы в помощь - по совету #2... или количество ядер увеличивайте для сервера, не оперативку... имхо
0
|
14.01.2021, 07:32 | |
14.01.2021, 07:32 | |
Помогаю со студенческими работами здесь
4
Обновление базы данных по времени Обновление данных, модифицированных одним из клиентов на других клиентах Сортировка данных в реальном времени передача данных в реальном времени из
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |