|
|
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
hi all Объясните, плз, почему нельзя в приложении (например, в ИБЭ) автоматически сделать коммит транзакции после того, как случится сабж. Или это только в ИБЭ так ? (вопрос навеян необходимостью постоянно делать commit в sql editor'e после просмотра грида, если далее надо выполнить пересоздание таблиц, участвовавших в запросе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:10:40 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидОбъясните, плз, почему нельзя в приложении (например, в ИБЭ) автоматически сделать коммит транзакции после того, как случится сабж. Или это только в ИБЭ так ? Это только в тех приложениях, которые пользуются компонентами производными от FIBC и сбрасывают локальный кэш датасета при закрытии транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:13:35 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, якобы датасет потеряет "видимость" записей. Датасеты так в дельфях для ИБ устроены, провоцируют на длинные транзакции. По уму - да, после fetchall надо вообще грузить все в clientdataset и транзакцию завершать. Но - fetchall опасен на миллионо-миллиардных выборках, или на тяжелых группировках-сортировках, особенно с plan ... order index, а такое разработчики весьма любят запускать в SQL Editor. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:14:24 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, Дык по коммиту ведь данные в DataSet пропадают, курсоры закрываются. Ты же не хочешь выполнить SELECT не увидев его результата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:14:39 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисДык по коммиту ведь данные в DataSet пропадают, курсоры закрываются. данные в датасете после закрытия курсора пропадают только по злой воле Грегори Дица, автора FreeIBComponents, которые за базу взяты в IBX, FIBPlus, и т.д. Датасет все равно сам по себе кэширующий, после Fetchall у него все записи в кэше, и закрытие курсора ему должно быть до лампочки. Но нет, увы. Проблема была бы только у UniDirectional = False датасетов, они "забывают" начально отфетченные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:18:13 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
kdv, обычно при многомиллиардных выборках они fetchall не нажимают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:18:19 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисДык по коммиту ведь данные в DataSet пропадают, курсоры закрываются. Ты же не хочешь выполнить SELECT не увидев его результата.я не знаю, отчего они должны "пропасть" в датасете, если случится коммит. Оченно хочется, чтобы grid был был отстёгнут и жил сам по себе, как только отфетчатся все записи и TIL (snapshot!) исключает обновление строк грида. ИБЭ по умолчанию НЕ делает фетч всех, это "постараться" надо, в настройки полезть. Так что если я ткну, а там 100500 млрд строк, то буду ССЗБ. И то, срубить элементарно через delete from mon$statements where mon$attach_id = curr_conn. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:24:58 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
kdvСимонов ДенисДык по коммиту ведь данные в DataSet пропадают, курсоры закрываются. данные в датасете после закрытия курсора пропадают только по злой воле Грегори Дица, автора FreeIBComponents, которые за базу взяты в IBX, FIBPlus, и т.д. Датасет все равно сам по себе кэширующий, после Fetchall у него все записи в кэше, и закрытие курсора ему должно быть до лампочки. Но нет, увы. Проблема была бы только у UniDirectional = False датасетов, они "забывают" начально отфетченные данные.Почему он решил ТАК делать ? Это намеренно сделано или просто недочёт какой-то ? (я про пропадание данных) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:26:18 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидПочему он решил ТАК делать ? ну, в BDE так было сделано. Наверное, по образу и подобию. И ClientDataSet тогда или не был популярен, или вообще не существовал. Последний FIB был выпущен в 1999 году, а первая версия появилась наверняка еще раньше, через некоторое время после того как в Дельфи (вроде версия 3) появился CustomDataSet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:32:58 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
CustomDataSet появился в двойке. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:44:24 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидТак что если я ткну, а там 100500 млрд строк, то буду ССЗБ. И то, срубить элементарно через delete from mon$statements where mon$attach_id = curr_conn.(мечтательно...) а еще был бы кайф, если бы ИБЭ позволял сам срубить тугодумные запросы, т.е. выполнял их в отдельном потоке. Хотя и SQL Server Studio Management (m$ sql) или SQL Developer (ora) - полный ацтой по ср. с ИБЭ по удобству, но вот в этом вопросе они рулят: всё крутится в отдельных потоках, всегда срубить можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:49:14 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Hello, Таблоид! You wrote on 29 ноября 2013 г. 16:50:57: Таблоид> если бы ИБЭ позволял сам срубить тугодумные запросы, > т.е. выполнял их в отдельном потоке. разуй глаза. там это есть. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:51:55 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Таблоид, Да это было бы хорошо. По идее во время выполнения запроса надо запускать отдельное окошко с кнопкой Cancel, которое не блокировалось бы и из него можно было асинхронно отменить запрос. А сделать так чтобы каждый отдельный запрос выполнялся асинхронно будет крайне проблематично, да и не правильно наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:53:47 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
а, тьфу... точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:55:32 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
упс. Точно там ведь есть кнопочка "выполнить в фоне" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:56:32 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
А, нет, "не полностью" есть: можно только одну вкладку затолкать на выполнение. Остальные - фигу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 16:56:48 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис и из него можно было асинхронно отменить запрос. ну вы же понимаете, что "абортирование" тут возможно только в момент фетчей, а не самого запроса (execute). Если это груп бай, который на 10 выходных строк пыжится минут 20 - никакой аборт из ИБЕ не поможет. Разве что действительно параллельный запуск, и в конкуретном окне sql editor убить тот аттачмент. Нет никакой магии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 23:47:05 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
kdvЕсли это груп бай, который на 10 выходных строк пыжится минут 20 - никакой аборт из ИБЕ не поможет.По моим наблюдениям, "прослушка" mon$-таблиц на необходимость отрубания отсутствует только при операциях с блобами (и то вроде одна - similar to). А групп бай - слетит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2013, 00:19:15 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
ЗЫ. Рисунок добавить хотел к следующему посту, а он влез поперёд паровоза :-) Я к тому, что в мозилле здорово сделано с отрубанием. Крестик ткнул - и вкладка закроется, чего бы там не происходило "внутри". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2013, 00:20:52 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
Таблоидя не знаю, отчего они должны "пропасть" в датасете, если случится коммит. Оченно хочется, чтобы grid был был отстёгнут и жил сам по себе, как только отфетчатся все записи.......... Это делается фракенштейном из FIB/IBX/FIBPlus и какого-нибудь MemDataSet. К примеру, я пользую активно DBGridEh, в котором есть TMemTableEh. Во время FetchAll данные пумпятся в MemTableEh, а затем первая ступень в виде TIBQuery отбрасывается. Параллельно убивается второй заяц: прикольные фильтры набора данных в нулевой строке грида a-la M$ Excel. ---------------------------------- в FIB/IBX/FIBPlus удерживание транзакции и SQL открытыми - это часть философии и политики партии. Типа, если коннекшн отвалился, то закономерно, что набора данных не будет. Когда это проектировалось, все затачивалсиь на LAN ничуть не подумав, что сервак вообще может быть где-то в инете. Скоростей тогда таких еще не было. Да и вообще: глянте на те же демки из среды разработки, которую здесь никто не знает. Кидается на форму TIBDataBase, Active проставляется еще в дизайн-тайме, в течение всего цикла работы приложения держится активными 1) само подключения, 2) все транзакции и 3) наборы данных. Зачем это все? Один раз прописали в настройках логин и пассворд (или скешировали введенный пользователем при старте). нужен набор данных - подключились, выполнили запрос, скачали результат - отключились. Всё. Зачем держать транзакции, НД открытыми? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2013, 00:29:38 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
PEAKTOP, а сама идея проектирования приложений с использованием TDataModule - это вообще феерия угара и разврата, которая сводит на нет все преимущества SQL-сервера версионника. И речь не только о Firebird, мне как-то Павел Голубь о тех же самых проблемах у DAC для слонопотама рассказывал. Здесь, ИМХО, как раз тот уникальный случай, когда ошибка в консерватории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2013, 00:35:20 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
PEAKTOPЗдесь, ИМХО, как раз тот уникальный случай, когда ошибка в консерватории. Во-первых, случай далеко не уникальный. Просто самый известный. Во-вторых, именно поэтому когда я был молод и горяч, то взял исходники тогда ещё свободного FIB+ и из них создал FIB- с отбитым неестественным интеллектом, включая то самое закрытие НД по концу транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2013, 00:44:44 |
|
||
|
IBE: если дёрнуть fetch all в snapshot-транзакции, то почему нельзя затем commit ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидПо моим наблюдениям, "прослушка" mon$-таблиц на необходимость отрубания отсутствует только при операциях с блобами (и то вроде одна - similar to). А групп бай - слетит. а что, IBE умеет "из себя" отрубать собственный коннект? Тем более, что тут речь идет про прерывание ЗАПРОСА, а не коннекта. Не надо перескакивать между запросом и коннектом, mon$ и обрубанием Fetch в IBE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2013, 04:51:15 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38484205&tid=1564099]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 476ms |

| 0 / 0 |
