Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 689
YuRock
Запомни простую истину: никогда, накогда не используй CommitRetaining/RollbackRetaining.


Я нашёл одно полезное свойство CommitRetaining: если при решении задачи требуется обработать множество строк (например, финансовые операции) и для каждой операции требуется закоммитить транзакцию, то с CommitRetaining запросы с параметрами будут выполнены быстрее, поскольку не будет каждый раз заново выполняться операция PREPARE. Если база находится на отдельном компьютере, а скорость соединения не особо быстрая, то ускорение может быть в несколько раз.
2 окт 18, 17:56    [21693075]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3631
Котовасия
А чем плоха длинная "пишущая" транзакция "стандартного" датасета ibx, которая 99,999% времени ничего не пишет, кроме короткого быстрого post с последующим немедленным CommitRetaining? Расскажи, пожалуйста.

Тем, что эта пишущая транзакция сборке мусора будет очень мешать. Если она будет открыта несколько дней (и ничего не делать при этом, как ты говоришь - висеть себе и всё) - то эти несколько дней не будет сборки мусора.
2 окт 18, 17:57    [21693078]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46387

DmSer
с CommitRetaining запросы с параметрами будут выполнены быстрее, поскольку не будет каждый
раз заново выполняться операция PREPARE.

Если твои компоненты доступа распрепарируют запрос при коммите, это их проблемы. Обычно
препарированный запрос способен нормально жить аж до дисконнекта.

Posted via ActualForum NNTP Server 1.5

2 окт 18, 17:59    [21693081]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3631
DmSer
Я нашёл одно полезное свойство CommitRetaining: если при решении задачи требуется обработать множество строк (например, финансовые операции) и для каждой операции требуется закоммитить транзакцию, то с CommitRetaining запросы с параметрами будут выполнены быстрее, поскольку не будет каждый раз заново выполняться операция PREPARE

Разве Prepare делается для каждой транзакции? Не очень верю.

Я использую CommitRetaining в одном месте: для мониторинга доступности базы. RORC-транзакции делаю CommitRetaining по таймеру.
2 окт 18, 18:00    [21693082]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 689
Котовасия
DmSer,

да ну нафиг, уж лучше старые фибы.


Конечно они лучше, тем более сейчас они вроде халявные :)
Но вот встанет у меня задача переделать один мой проект (там пара-тройка сотен тыщ строк кода) под Линукс - опаньки, а там есть для Лазаруса допиленный IBX, т.е. задачу можно будет решить за ограниченное время, учитывая, что в проекте не менее тысячи различных запросов к БД.
А с фибами будет всё намного сложнее.


Кстати, никто проверял, в последних версиях Delphi под Линукс компоненты IBX случайно с Firebird не умеют работать?
2 окт 18, 18:04    [21693089]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 689
YuRock
Разве Prepare делается для каждой транзакции? Не очень верю.


Увы, в IBX оно так!
2 окт 18, 18:06    [21693091]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10643
DmSer
Увы, в IBX оно так!
Тынц
ISC_STATUS isc_dsql_prepare(
 ISC_STATUS *status_vector,
 isc_tr_handle *trans_handle,
 isc_stmt_handle *stmt_handle,
 unsigned short length,
 char *statement,
 unsigned short dialect,
 XSQLDA *xsqlda);

При чем здесь IBX?
2 окт 18, 18:10    [21693094]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 689
_Vasilisk_
DmSer
Увы, в IBX оно так!
Тынц
ISC_STATUS isc_dsql_prepare(
 ISC_STATUS *status_vector,
 isc_tr_handle *trans_handle,
 isc_stmt_handle *stmt_handle,
 unsigned short length,
 char *statement,
 unsigned short dialect,
 XSQLDA *xsqlda);

При чем здесь IBX?


Прочитал статью по ссылке, просмотрел функцию isc_dsql_prepare, насладился жёлтой подсветкой. Всё понравилось. А делать-то с этим теперь что?
2 окт 18, 18:25    [21693111]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46387

_Vasilisk_
При чем здесь IBX?

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

Posted via ActualForum NNTP Server 1.5

2 окт 18, 18:31    [21693125]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10643
DmSer
А делать-то с этим теперь что?
Проблема не в IBX, а в API Interbase. Стейтментов вне транзакции не существует
2 окт 18, 18:32    [21693127]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10643
Dimitry Sibiryakov
запрос не ограничен рамками транзакции в которой его препарировали.
Интересный функционал. Он где-то документирован или просто "так работает"?
2 окт 18, 18:34    [21693131]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46387

_Vasilisk_
Стейтментов вне транзакции не существует

Это ты зря так думаешь:
isc_dsql_allocate_statement(
   ISC_STATUS *status_vector,
   isc_db_handle *db_handle,
   isc_stmt_handle *stmt_handle);

Где здесь транзакция?

Posted via ActualForum NNTP Server 1.5

2 окт 18, 18:37    [21693134]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10643
Dimitry Sibiryakov
Где здесь транзакция?
Это аллок.

При создании объекта память тоже как-бы принадлежит всему процессу, но объект доступен только по месту создания. А если кто-то полезет по сырому указателю к этому объекту, то ССЗБ
2 окт 18, 18:43    [21693144]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46387

_Vasilisk_
Он где-то документирован или просто "так работает"?

API guide
After a statement is prepared, it is available for execution as many times
as necessary during the current session.

Ну и то, что в execute требуется хэндл транзакции как бы тоже намекает. Там, где запросы
привязаны к транзакции, такого не допускают.

Posted via ActualForum NNTP Server 1.5

2 окт 18, 18:53    [21693160]     Ответить | Цитировать Сообщить модератору
 Re: IBX 19_19 вопрос с поддержкой оператора RETURNING  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3631
Недавно писал проект на апи. Создавали и сразу препарировал запрос один раз, в одной транзакции. А затем использую этот хэндл запроса с другими транзакциями. Месяцами работает.
2 окт 18, 20:30    [21693296]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить