powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Commit после SELECT
11 сообщений из 11, страница 1 из 1
Commit после SELECT
    #32122731
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, я в интербейзе не спец, просто досталось приложение, в котором после каждого селекта из базы стоит соммит.
Зачем это так сделано?
Сам работаю под Oracle, и приложение это тоже есть под оракл, так вот там тоже такая же песня -
MainSQL.Open;
Connection.Commit;

Для работы с ораклом такая конструкция явно излишня, так может это рудимент остался от переноса из под IB ?
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122782
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По мойму это не совсем правильно.... комит обычно после группы операций... если иного не требует логика... скажем при больших вливках я делаю комит не чаще чем через 10 000 записей....
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122786
Фотография SmaLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то commit используется после проведения изменений в базе (DELETE, UPDATE.....).
А после получения данных (SELECT) он не нужен.

Я тоже удивлЁн, зачем он там!?
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122789
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот в чем и вопрос - требует ли интербейз коммита после обычного селекта ? Или это была фишка разработчика
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122802
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее глюк разработчика и тем более что после КАЖДОЙ записи. В принципе для селекта (если это не из процедуры) поровну комит будет или откат... но вот после каждого это делать не стоит всеж...
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122847
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в тему, у меня в хранимой процедуре стоит инсерт и апдэйт. Вот я делаю селект * фром хп(:п0,:п1) а потом коммит. Потому что соммит в хп мне сделать не удается :-) так вот вопрос, хранимая процедура выполняется в тойже транзакции откуда вызывается?
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122870
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Commit после SELECT
    #32122873
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если прога написана с использованием BDE, то там обычно кажется
стоит Autocommit (точнее транзакцию нужно начинать явно самому),
и коммит после select'а не нужен. (нет активной
транзакции). Если же програ пользует что-то типа IBX то после
select'а автоматически начинается транзакция.
(это например хорошо видно в консоли IBConsole)

Человек скорее всего делает коммит, чтобы не растягивать транзакции
и избежать лишних блокировок, так как если другой юзер будет
менять эти же данные, то скорее всего будут проблемы.
Я когда юзал IBX тоже всегда так делал,
это было первое, с чем я столкнулся когда
переползал с BDE.

Такое ощущение, что каждый IB Select аналогичен Oracle Select .. for update
Так что я думаю что для Oracle этого делать не нужно,
по крайней мере я никогда не делаю и все работает.
...
Рейтинг: 0 / 0
Commit после SELECT
    #32123291
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Speaker
select блокировок не наклыдывает, если ему принудительно не сказать!
...
Рейтинг: 0 / 0
Commit после SELECT
    #32123533
необходимость коммита после селект
зависит от уровня изоляции и используемой версии сервера.

1) Если уровень изоляции SNAPSHOT и выше, то без коммита и перезапуска транзакции вы просто не увидите результатов действий соседних транзакций. Для read commited это не так важно, но лучше сразу писать универсальное решение, не так ли?.

2) Для версий серверов ниже ИБ6.5 и FB7 только читающая транзакция read commited, у которой стоит write в параметрах транзакции, удерживала версии записей и нагружала сервер! Поэтому коммит там жизненно был необходим. Для современных версий можно выставить для читающей транзакции параметр read и без перезапуска ей пользоваться.

WBR,
Alexey
...
Рейтинг: 0 / 0
Commit после SELECT
    #32124239
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, всем спасибо !
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Commit после SELECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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