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

start [/forum/topic.php?fid=40&msg=32608170&tid=1578235]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
441ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 734ms |

| 0 / 0 |
