powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Транзакции и COMMIT
9 сообщений из 9, страница 1 из 1
Транзакции и COMMIT
    #32607471
Puksant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Существует рабочий проект, который занимается контролем технологического процесса и 2 раза в секунду сохраняет параметры в файл собственного формата. Появилась необходимость выдавать полученные данные на всеобщее обозрение для чего использовать IB 6.0, т.е. данные хранить в базе. С базами ранее дела не имел, потому ногами прошу не пинать.
Использую Builder, IBX, сервер Win2000.
Вопрос такой. Предполагается, что одна программа запускает транзакцию и по мере поступления данных только записывает их примерно два раза в секунду. Другая открывает транзакцию только на чтение и чтобы ей получать все данные, в том числе и текущие, первая должна делать COMMIT каждый раз, но это прямой путь к ухудшению производительности сервера.
Какие есть рекомендации по этой проблеме.
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32607718
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начни с чтения литературы.
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32607766
Puksant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал все статьи на этом сайте по вопросу транзакций, прочитал "Мир InterBase", "Введение в InterBase". Кроме того, что цитата:
" Не Делайте COMMIT после каждой вставки записи или ее обновлении".
других рекомендаций нет.
А как делать: раз в минуту, час, день...
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32607817
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Ни в коем случае не IB 6.0 !!! (бери FireBird 1.5)
2. Если я правильно понял задачу, то предполагается инсертить(?)
записи каждые 2 секунды? Следовательно, при 8-часовом рабочем дне,
это даст прирост 57 600 записей ежедневно.
В месяц получается 1 728 000.
В общем-то, не смертельно, но к проектированию нужно подходить
очень тщательно. Ставить тесты, проводить сравнения вариантов решений.
3. В отношении периодичности COMMIT. Может имеет смысл делать первичное накопление информации в "плоских файлах", а потом делать вставку пакетами?
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32607938
Puksant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача будет крутиться круглосуточно, и не каждые 2 секунды, а два раза в секунду Insert.
Предполагается, что старая информация, например недельной давности, будет удаляться.
В чем преимущество вставки пакетами, а если просто выбрать какоето время (миннита, 10 минут...) и каждый период делать COMMIT транзакции. Только не понятно от чего отталкиваться при определении этого самого периода.
При данной задаче СОММИТ или CommitRetaining, что предпочтительнее.
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32607965
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема эта довольно обширна.
Сходи в конференцию на news://news.demo.ru/epsylon.public.interbase
Там эта тема поднималась неоднократно и есть там парни,
у которых успешно вертится подобная система.
Думаю, их рекомендации и советы будут наиболее ценными.
Только учти, там принято подписываться реальным именем.
Сперва ознакомься с правилами , а потом безбоязненно вопрошай.
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32608040
Puksant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня нет news://, админы закрыли.
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32608065
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, это видимо решается?..
Не верю, что такая проблема открыть 119-й порт tcp.
...
Рейтинг: 0 / 0
Транзакции и COMMIT
    #32608170
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если только "обозрение", то можно переоткрывать запрос на чтение переодически, раз в t секунд (в зависсимости от требований к системе - вы что, ракету запускаете или рыбок в аквариуме кормите? Сами определите, короче). Люди все равно быстро не Соответственно, Commit по Insert запросам имеет смысл задавать не чаще, чем один раз на t*2 Insert-ов. Ну, и, естественно, обязательный Commit по закрытию приложения, чтобы ничего не потерять.

А так все нормально спроектировано, вроде.

Другой вариант: если нужен "немедленный" доступ к введенным данным, а Commit очень уж все тормозит, можно организовать трехзвенку, когда все читается и пишется в одной - единственной длинной транзакции, задачей второго слоя (сервером приложений). Commit делаем о-о-очень редко, раз в час. Зато доступ к данным - моментальный. (Ну, я не учитываю затрат на маршалинг и проч.)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Транзакции и COMMIT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]