Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/26: Рейтинг темы: голосов - 26, средняя оценка - 4.65
 Аватар для Lootero4eg
30 / 30 / 11
Регистрация: 15.07.2013
Сообщений: 72

Обновление данных из базы данных в клиентах в реальном времени

06.08.2014, 18:58. Показов 5392. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые коллеги!
Как сделать то, что описано в теме?

Расскажу с самого начала откуда пошла такая задача.
Есть в нашей организации одна клиент серверная программа, серверная часть на MS SQL Server 2008, а клиентская на C++ MFC написанная еще в 2007 году.
А программисты писавшие ее, давным давно уволились и исходники нам не оставили.
Теперь начальство просит переписать данный продукт с нуля на C#, но прежде чем начать переписывать я хотел бы выяснить один важный вопрос, связанный с обновлением данных в клиентах.

Сейчас клиенты работают с несколькими таблицами, основная из которых 18 млн. записей.
На клиентах стоит автообновление данных в датагриде каждые 1.5 минуты, на нескольких клиентах каждые 60 сек., всего 30 клиентов.
Последние пол года программа стала работать все медленнее и медленнее, хотя сеть 1 гигабит.
По мере увеличения клиентов тормоза стали просто невозможными, и сервер с СУБД периодически приходится перезагружать, хотя там стоит 32 гигабайта оперативки.

Я думал увеличить таймер до 5 минут на клиентах, а в СУБД на триггер при вставке новых данных вызывать внешнюю хранимку, которая отправляла бы клиенту по TCP/IP сообщение о том что появилась новая запись, такие записи нужны не всем, а только помеченным бизнес объектам.

Возможно проблема в том, что таблица слишком большая, но начальству видите ли постоянно нужно в архиве искать данные, хотя если я буду с нуля разрабатывать, то можно сделать архивные таблицы, но не знаю поможет ли это...

Какие будут идеи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2014, 18:58
Ответы с готовыми решениями:

Обновление данных в реальном времени
Здраввствуйте. Нужно в реальном времени некоторые данные на странице обновлять, модель которых передается на вьюшку. Данные нужно получать...

Обновление данных в реальном времени
Доброго времени суток Дорогие Форумчане. Имеется GUI программка. Запускается на двух компьютерах. Оба в локальной сети. На одном из...

Обновление datagridview - актуализация с источником данных в реальном времени
Много пересмотрел в интернете и тем на этом форуме,но так и не разобрался. В приложении есть datagridview который отображает данные из...

3
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,098
07.08.2014, 12:33
Цитата Сообщение от Lootero4eg Посмотреть сообщение
Возможно проблема в том, что таблица слишком большая
Возможно что стоит добавить в таблицы индексы, которые бы покрывали наиболее используемые выборки
Цитата Сообщение от Lootero4eg Посмотреть сообщение
Я думал увеличить таймер до 5 минут на клиентах, а в СУБД на триггер при вставке новых данных вызывать внешнюю хранимку, которая отправляла бы клиенту по TCP/IP сообщение о том что появилась новая запись, такие записи нужны не всем, а только помеченным бизнес объектам.
Тут вам стоит посмотреть в сторону SqlDependency (и еще пример)
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
07.08.2014, 15:37
Цитата Сообщение от nedel Посмотреть сообщение
которая отправляла бы клиенту по TCP/IP сообщение о том что появилась новая запись
как было сказано, это SqlDependency. еще пару ссылок
https://www.cyberforum.ru/ado-... ost5953730
https://www.cyberforum.ru/ado-... ost5774610
Но оно имеет тысячи ограничений и сложности в настройке. лично я потихоньку пилю свою службу:
клиент при обновлении оставляет на службе на сервере сообщение об обновлении данных.
служба в свою очередь рассылает оповещение всем активным программам - и они обновляют именно измененные данные

но в моем случае необходим был мессенджер между юзерами и я его доработал до мессенджера для собственно клиентов
1
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,518
14.01.2021, 07:32
на C# ведь делегата можно создать для этих целей... имхо... не понимаю, чем мессенджер лучше?

Добавлено через 5 минут
Цитата Сообщение от Lootero4eg Посмотреть сообщение
Сейчас клиенты работают с несколькими таблицами, основная из которых 18 млн. записей.
ну вы же не вытягиваете эти миллионы в GUI?.. всё равно ведь работаете с частями- часть, которая помещается на экран, при правильном дизайне бд не должна давать большие тормоза... индексы в помощь - по совету #2... или количество ядер увеличивайте для сервера, не оперативку... имхо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2021, 07:32
Помогаю со студенческими работами здесь

Обновление StringGrid из базы в реальном времени
есть файл file.dat в нем содержатся данные, потом эти данные выводятся в StringGreed циклом, как можно сделать так, что если при работе...

Обновление базы данных по времени
Привет форумчане. Подскажите какие есть возможности обновления БД в определенное время суток???

Обновление данных, модифицированных одним из клиентов на других клиентах
Речь идет о главной форме приложения, где размещен компонент, отображающий результат основного запроса. Какие есть решения обновления...

Сортировка данных в реальном времени
Всем привет собственно вопрос. Я осуществляю поиск файла по имени из текущей директории. Файлов может быть и 100 и 200 и 1000. ...

передача данных в реальном времени из
Есть бд на mysql с таблицами (около 20 таблиц) необходимо: 1. из первых 10 таблиц отображать данные в режиме реального времени (данные...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru