powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вы используете FireBird (про Snapshot - транзакции)?
25 сообщений из 61, страница 2 из 3
Вы используете FireBird (про Snapshot - транзакции)?
    #39561086
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockDimitry Sibiryakovпропущено...

Практически всегда. Я не вижу практической нужды для других уровней изоляции.Например, такая логика.
Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено подтверждение, что можно. Обычная задача.
Ну, так вот. Проверяет он наличие этой записи. Раз в 5 секунд, или 30, или пол часа - не важно, зависит от задачи.
Ну так вот, в данном случае имхо целесообразнее использовать RC, чем RR. Потому, что запись может появиться в промежутке между стартом транзакции и SELECT, и снапшот её в таком случае уже не увидит.

Получасовой снапшот?
В наше время за это били канделябром.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561091
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаDimitry SibiryakovРазумеется нет. Я придерживаюсь гораздо более классического и надёжного шаблона
"транзакции минимально необходимой длины".


Человеку свойственно визуально персонифицировать собеседников, с которыми он пересекается достаточно часто, из собственного видеоряда, сложившегося по ходу окультуривания. Твой образ для меня давно уже - гордый римский сенатор в тоге с очень высоко задранным носом.

А снапшот нужен в первую очередь для того, чтобы обеспечить конфликт при внесении изменений, если данные были изменены кем-то ещё после того, как ты их прочитал и начал думать. Над ними. Ну и для разглядывания непротиворечивого снимка сложной структуры на момент начала разглядывания, конечно.

Скажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях.

PS На "думать" уровень изоляции не влияет.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561137
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorСкажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях.Можно с любой, меняй, мы не возражаем.

ПыСы. Если ты "менять" понял как update+commit, а не update, то ССЗБ.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561172
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
29.11.2017 10:31, pastor пишет:
> Получасовой снапшот?
> В наше время за это били канделябром.

у Оракела тоже бьют.
причем, сам сервер.
ORA-01555: snapshot too old
архитектурная особенность связанная с ограниченным размером "сегмента отката".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561227
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНапример, такая логика.
Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли
определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено
подтверждение, что можно. Обычная задача.

И решается она обычным методом: подпиской на событие, по получению которого стартует
транзакция (любой необходимой изоляции) и вычитывает/проверяет всё что хочет. А мозолить
сервер запросами оставим студентам-ПлоХоПлюшникам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561330
S.G.Сведём очередь с умаИнтересовали именно случаи прикладного применения снаршота.
Ну, для формирование отчетов. А ещё когда?


Как-раз для отчетов он, имхо, не обязателен. Отчет - это когда 1-2-3-го числа берутся данные для прошлого месяца от 1-го до 30-го. Там давно уже все закоммичено и не должно меняться, уж тем более в процессе отчета.

Непонятно, почему не использовать снапшот, гарантирующий незыблемость данных в процессе формирования отчетов.
Пусть даже отчета прошлого месяца позапозапрошлого года.
В чем видите профит от не-использования снапшота? Конкретно в данном случае.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561338
pastor...Получасовой снапшот ?
В наше время за это били канделябром.
Вообще-то, YuRock указал на обратное:
YuRock...в данном случае имхо целесообразнее использовать RC, чем RR...
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561366
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorYuRockпропущено...
Например, такая логика.
Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено подтверждение, что можно. Обычная задача.
Ну, так вот. Проверяет он наличие этой записи. Раз в 5 секунд, или 30, или пол часа - не важно, зависит от задачи.
Ну так вот, в данном случае имхо целесообразнее использовать RC, чем RR. Потому, что запись может появиться в промежутке между стартом транзакции и SELECT, и снапшот её в таком случае уже не увидит.

Получасовой снапшот?
В наше время за это били канделябром.Где ты вычитал про "получасовой"? Именно наоборот - открыл, дернул селект, закрыл.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561373
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovYuRockНапример, такая логика.
Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли
определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено
подтверждение, что можно. Обычная задача.

И решается она обычным методом: подпиской на событие, по получению которого стартует
транзакция (любой необходимой изоляции) и вычитывает/проверяет всё что хочет. А мозолить
сервер запросами оставим студентам-ПлоХоПлюшникам.Если бы были параметризованные параметры - еще куда ни шло. А так, когда в таблицу(ы), из которой(ых) надо получить это подтверждение селектом по нескольким условиям, постоянно добавляются записи...

Да и, о чем я говорю, а если клиент был закрыт, то при запуске он опять же как студент должен произвести описанную мною процедуру. И опять же RC для этого будет лучше.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561374
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockпараметризованные параметрысобытия
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561386
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockИ опять же RC для этого будет лучше.

Чем лучше, если он тут же закрывается? Ну, получит приложение свой сигнал не сейчас, а на
следующем цикле, так это ничем не отличается от ситуации, когда он (сигнал) пришёл через
миллисекунду после запроса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561391
YuRockDimitry Sibiryakovпропущено...

И решается она обычным методом: подпиской на событие, по получению которого стартует
транзакция (любой необходимой изоляции) и вычитывает/проверяет всё что хочет. А мозолить
сервер запросами оставим студентам-ПлоХоПлюшникам.Если бы были параметризованные параметры - еще куда ни шло. А так, когда в таблицу(ы), из которой(ых) надо получить это подтверждение селектом по нескольким условиям, постоянно добавляются записи...

Да и, о чем я говорю, а если клиент был закрыт, то при запуске он опять же как студент должен произвести описанную мною процедуру. И опять же RC для этого будет лучше.
Если у тебя каждая модификация идет в отдельной транзакции, и ты всякий раз генерируешь событие - да, событий получишь много.
Но ничто не мешает не лезть по событию каждый раз в базу, а просто взводить флаг - "что-то случилось", и только при наличии взведенного флага делать:
YuRock...Раз в 5 секунд, или 30, или пол часа...
...
Более того, это "особенное событие" можно генерировать именно при появлении такой вот "особенной" записи. Один раз. :)
А если "особенность" меняется (или их много), описывать их ("особенности") в отдельной табличке.
...
А ты не мог быА ты не мог бы не нести пургу, а поделиться своими "военными тайнами" - когда используешь именно снапшот транзакции?
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561409
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovYuRockИ опять же RC для этого будет лучше.

Чем лучше, если он тут же закрывается? Ну, получит приложение свой сигнал не сейчас, а на
следующем цикле, так это ничем не отличается от ситуации, когда он (сигнал) пришёл через
миллисекунду после запроса.Лучше тем, что сейчас - это раньше, чем "на следующем цикле".
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561413
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сведем очередь с умаНо ничто не мешает не лезть по событию каждый раз в базу, а просто взводить флаг - "что-то случилось", и только при наличии взведенного флага делать:
YuRock...Раз в 5 секунд, или 30, или пол часа...Зачем же тогда события, если и так по таймеру можно проверять?
Чтоб логику просто усложнить? :)
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561417
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockРаз в 5 секунд, или 30, или пол часа - не важно , зависит от задачиpastorпропущено...


Получасовой снапшот?
В наше время за это били канделябром.Где ты вычитал про "получасовой"? Именно наоборот - открыл, дернул селект, закрыл.

ПОЛЧАСА слитно.

за попытку допущения получасового снапшота, во времена всеобщей грамотности, вполне можно было получить несоответствие в связи с неграмотностью.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561419
YuRockСведем очередь с умаНо ничто не мешает не лезть по событию каждый раз в базу, а просто взводить флаг - "что-то случилось", и только при наличии взведенного флага делать:
пропущено...
Зачем же тогда события, если и так по таймеру можно проверять?
Чтоб логику просто усложнить? :)

Тем, что вообще не нужно проверять, если флаг не "взвелся".
А таймер нужен для случая, когда поток событий слишком велик.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561449
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сведем очередь c умаА таймер нужен для случая, когда поток событий слишком велик.Ну так не вызывай isc_que_events сразу после получения события, если поток ТАК велик...
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561450
hvlad,

мало ли. Ситуации разные бывают.

:)
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561461
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorYuRockРаз в 5 секунд, или 30, или пол часа - не важно , зависит от задачипропущено...
Где ты вычитал про "получасовой"? Именно наоборот - открыл, дернул селект, закрыл.

ПОЛЧАСА слитно.

за попытку допущения получасового снапшота, во времена всеобщей грамотности, вполне можно было получить несоответствие в связи с неграмотностью.У, как всё сложно. Раз написал, два написал - не понимать, не грамотные мы.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561574
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorСкажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях.

PS На "думать" уровень изоляции не влияет.

От рождества Дейтова. Стартовал транзакцию, вытащил клубок данных на экран, задумался - а может быть, вот такой колор? Отредактировал, сохраняешь изменения. Если это RC, и за время раздумий другая транзакция поменяла прочитанные нами данные и закоммитила изменения, то наши спокойненько лягут поверх её изменений, патамушта те уже commited. Если меняем приращением, то и фиг то с ним, оно даже и к лучшему, а если присваиванием, то фигня получается практицки, истребили мы результат деятельности соседа. Когда-то писал я здесь весёленькое эссе на грани пошлятины в качестве примера на эту тему. А вот если мы в снапшоте, то получим мы отлуп со своими изменениями, закоммитимся/отроллбачимся, перечитаем и прикинем кто из нас прав.

PS И что в этот раз повлияло на "думать"?
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561718
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаpastorСкажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях.

PS На "думать" уровень изоляции не влияет.

От рождества Дейтова. Стартовал транзакцию, вытащил клубок данных на экран, задумался - а может быть, вот такой колор? Отредактировал, сохраняешь изменения. Если это RC, и за время раздумий другая транзакция поменяла прочитанные нами данные и закоммитила изменения, то наши спокойненько лягут поверх её изменений, патамушта те уже commited. Если меняем приращением, то и фиг то с ним, оно даже и к лучшему, а если присваиванием, то фигня получается практицки, истребили мы результат деятельности соседа. Когда-то писал я здесь весёленькое эссе на грани пошлятины в качестве примера на эту тему. А вот если мы в снапшоте, то получим мы отлуп со своими изменениями, закоммитимся/отроллбачимся, перечитаем и прикинем кто из нас прав.

PS И что в этот раз повлияло на "думать"?

если сохраняешь изменения, это уже разные данные. речь про одни и те же.

а про Если это RC, и за время раздумий другая транзакция поменяла прочитанные нами данные и закоммитила изменения, то наши спокойненько лягут поверх её изменений, патамушта те уже commited перечитай еще раз Дейта. ну, или эксперимент поставь.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561752
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сведем очередь c умаS.G.Как-раз для отчетов он, имхо, не обязателен. Отчет - это когда 1-2-3-го числа берутся данные для прошлого месяца от 1-го до 30-го. Там давно уже все закоммичено и не должно меняться, уж тем более в процессе отчета.

Непонятно, почему не использовать снапшот, гарантирующий незыблемость данных в процессе формирования отчетов.
Пусть даже отчета прошлого месяца позапозапрошлого года.
В чем видите профит от не-использования снапшота? Конкретно в данном случае.
snapshot больше нагружает сервер.
насколько? хз, но во всяком случае 20990840

тут:
http://www.ibase.ru/ibtrans/
Физическое отличие READ_COMMITTED от SNAPSHOT
Если не влезать в дебри исходных текстов, то все достаточно просто. Транзакции имеют 4 состояния – active, committed, rolled back, in limbo (подробнее см. документ). Это состояние (2 бита) для всех существующих или завершенных транзакций (начиная с Oldest transaction) хранится на так называемых Transaction Inventory Pages (TIP) в базе данных.

При старте транзакций read_committed все они определяют "видимость" версий записей обращаясь к "глобальному" TIP – если версия записи committed, то ее можно читать. Если нет – нельзя.

При старте snapshot для транзакции делается "снимок" TIP. Т. е. он копируется локально для этой транзакции, и таким образом состояния транзакций "замораживаются" на момент старта этого snapshot. Именно поэтому snapshot "не видит" никаких, даже committed изменений, сделанных в БД после своего старта.

Понятно, что чем больше стартует транзакций в режиме snapshot, тем больше делается "локальных копий" TIP. С одной стороны, даже 200 тысяч транзакций займут примерно 50 килобайт (в одном байте помещается четыре двухбитовых "состояния" транзакции), то это не так страшно для современных серверов. Однако, на практике встречаются базы данных с гораздо большим числом транзакций в TIP (по разным причинам, в основном просто потому что не делается backup или не запускается sweep). В результате количество памяти, отводимое под локальный TIP для snapshot может оказаться большим. Кроме того, совершенно естественно, что время старта snapshot будет все дольше и дольше, чем больше состояний транзакций хранится в TIP (затраты времени на копирование страниц TIP в локальную копию TIP).
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561773
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.snapshot больше нагружает сервер.Меньше всего нагружает сервер транзакция, которой не было.
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561782
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.snapshot больше нагружает сервер.Чем? Тем, что удаленные в других - параллельных транзакциях записи, с идентификатором изменившей эти записи транзакции младше транзакции снапшота, не позволяет отправить в мусор?
...
Рейтинг: 0 / 0
Вы используете FireBird (про Snapshot - транзакции)?
    #39561791
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryS.G.Как-раз для отчетов он, имхо, не обязателен. Отчет - это когда 1-2-3-го числа берутся данные для прошлого месяца от 1-го до 30-го. Там давно уже все закоммичено и не должно меняться, уж тем более в процессе отчета.Спасибо, поржал. "Не должно" Если у вас 30-31 заканчивают месяц, потом 1-2 делают отчет, а 5-6 спохватываются и меняют данные задним числом, то тут не повод для ржаки, а для грусти. Только непонятно, как при этом поможет snapshot?


WildSeryS.G.snapshot больше нагружает сервер.Меньше всего нагружает сервер транзакция, которой не было.

прекрасные комменты, WildSery :)
а по теме ничего не будет?
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вы используете FireBird (про Snapshot - транзакции)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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