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

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

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


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