|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockDimitry Sibiryakovпропущено... Практически всегда. Я не вижу практической нужды для других уровней изоляции.Например, такая логика. Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено подтверждение, что можно. Обычная задача. Ну, так вот. Проверяет он наличие этой записи. Раз в 5 секунд, или 30, или пол часа - не важно, зависит от задачи. Ну так вот, в данном случае имхо целесообразнее использовать RC, чем RR. Потому, что запись может появиться в промежутке между стартом транзакции и SELECT, и снапшот её в таком случае уже не увидит. Получасовой снапшот? В наше время за это били канделябром. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 10:31 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаDimitry SibiryakovРазумеется нет. Я придерживаюсь гораздо более классического и надёжного шаблона "транзакции минимально необходимой длины". Человеку свойственно визуально персонифицировать собеседников, с которыми он пересекается достаточно часто, из собственного видеоряда, сложившегося по ходу окультуривания. Твой образ для меня давно уже - гордый римский сенатор в тоге с очень высоко задранным носом. А снапшот нужен в первую очередь для того, чтобы обеспечить конфликт при внесении изменений, если данные были изменены кем-то ещё после того, как ты их прочитал и начал думать. Над ними. Ну и для разглядывания непротиворечивого снимка сложной структуры на момент начала разглядывания, конечно. Скажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях. PS На "думать" уровень изоляции не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 10:34 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
pastorСкажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях.Можно с любой, меняй, мы не возражаем. ПыСы. Если ты "менять" понял как update+commit, а не update, то ССЗБ. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 11:35 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
29.11.2017 10:31, pastor пишет: > Получасовой снапшот? > В наше время за это били канделябром. у Оракела тоже бьют. причем, сам сервер. ORA-01555: snapshot too old архитектурная особенность связанная с ограниченным размером "сегмента отката". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 12:16 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockНапример, такая логика. Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено подтверждение, что можно. Обычная задача. И решается она обычным методом: подпиской на событие, по получению которого стартует транзакция (любой необходимой изоляции) и вычитывает/проверяет всё что хочет. А мозолить сервер запросами оставим студентам-ПлоХоПлюшникам. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 13:14 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
S.G.Сведём очередь с умаИнтересовали именно случаи прикладного применения снаршота. Ну, для формирование отчетов. А ещё когда? Как-раз для отчетов он, имхо, не обязателен. Отчет - это когда 1-2-3-го числа берутся данные для прошлого месяца от 1-го до 30-го. Там давно уже все закоммичено и не должно меняться, уж тем более в процессе отчета. Непонятно, почему не использовать снапшот, гарантирующий незыблемость данных в процессе формирования отчетов. Пусть даже отчета прошлого месяца позапозапрошлого года. В чем видите профит от не-использования снапшота? Конкретно в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 15:18 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
pastor...Получасовой снапшот ? В наше время за это били канделябром. Вообще-то, YuRock указал на обратное: YuRock...в данном случае имхо целесообразнее использовать RC, чем RR... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 15:25 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
pastorYuRockпропущено... Например, такая логика. Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено подтверждение, что можно. Обычная задача. Ну, так вот. Проверяет он наличие этой записи. Раз в 5 секунд, или 30, или пол часа - не важно, зависит от задачи. Ну так вот, в данном случае имхо целесообразнее использовать RC, чем RR. Потому, что запись может появиться в промежутке между стартом транзакции и SELECT, и снапшот её в таком случае уже не увидит. Получасовой снапшот? В наше время за это били канделябром.Где ты вычитал про "получасовой"? Именно наоборот - открыл, дернул селект, закрыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 15:56 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovYuRockНапример, такая логика. Какой-то процесс (автоматически или с помощью пользователя) ожидает, не появилась ли определенная запись. И если появилась - запускает какой-то еще процесс. Как бы получено подтверждение, что можно. Обычная задача. И решается она обычным методом: подпиской на событие, по получению которого стартует транзакция (любой необходимой изоляции) и вычитывает/проверяет всё что хочет. А мозолить сервер запросами оставим студентам-ПлоХоПлюшникам.Если бы были параметризованные параметры - еще куда ни шло. А так, когда в таблицу(ы), из которой(ых) надо получить это подтверждение селектом по нескольким условиям, постоянно добавляются записи... Да и, о чем я говорю, а если клиент был закрыт, то при запуске он опять же как студент должен произвести описанную мною процедуру. И опять же RC для этого будет лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:01 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockпараметризованные параметрысобытия ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:02 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockИ опять же RC для этого будет лучше. Чем лучше, если он тут же закрывается? Ну, получит приложение свой сигнал не сейчас, а на следующем цикле, так это ничем не отличается от ситуации, когда он (сигнал) пришёл через миллисекунду после запроса. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:11 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockDimitry Sibiryakovпропущено... И решается она обычным методом: подпиской на событие, по получению которого стартует транзакция (любой необходимой изоляции) и вычитывает/проверяет всё что хочет. А мозолить сервер запросами оставим студентам-ПлоХоПлюшникам.Если бы были параметризованные параметры - еще куда ни шло. А так, когда в таблицу(ы), из которой(ых) надо получить это подтверждение селектом по нескольким условиям, постоянно добавляются записи... Да и, о чем я говорю, а если клиент был закрыт, то при запуске он опять же как студент должен произвести описанную мною процедуру. И опять же RC для этого будет лучше. Если у тебя каждая модификация идет в отдельной транзакции, и ты всякий раз генерируешь событие - да, событий получишь много. Но ничто не мешает не лезть по событию каждый раз в базу, а просто взводить флаг - "что-то случилось", и только при наличии взведенного флага делать: YuRock...Раз в 5 секунд, или 30, или пол часа... ... Более того, это "особенное событие" можно генерировать именно при появлении такой вот "особенной" записи. Один раз. :) А если "особенность" меняется (или их много), описывать их ("особенности") в отдельной табличке. ... А ты не мог быА ты не мог бы не нести пургу, а поделиться своими "военными тайнами" - когда используешь именно снапшот транзакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:15 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovYuRockИ опять же RC для этого будет лучше. Чем лучше, если он тут же закрывается? Ну, получит приложение свой сигнал не сейчас, а на следующем цикле, так это ничем не отличается от ситуации, когда он (сигнал) пришёл через миллисекунду после запроса.Лучше тем, что сейчас - это раньше, чем "на следующем цикле". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:33 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Сведем очередь с умаНо ничто не мешает не лезть по событию каждый раз в базу, а просто взводить флаг - "что-то случилось", и только при наличии взведенного флага делать: YuRock...Раз в 5 секунд, или 30, или пол часа...Зачем же тогда события, если и так по таймеру можно проверять? Чтоб логику просто усложнить? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:36 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockРаз в 5 секунд, или 30, или пол часа - не важно , зависит от задачиpastorпропущено... Получасовой снапшот? В наше время за это били канделябром.Где ты вычитал про "получасовой"? Именно наоборот - открыл, дернул селект, закрыл. ПОЛЧАСА слитно. за попытку допущения получасового снапшота, во времена всеобщей грамотности, вполне можно было получить несоответствие в связи с неграмотностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:39 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
YuRockСведем очередь с умаНо ничто не мешает не лезть по событию каждый раз в базу, а просто взводить флаг - "что-то случилось", и только при наличии взведенного флага делать: пропущено... Зачем же тогда события, если и так по таймеру можно проверять? Чтоб логику просто усложнить? :) Тем, что вообще не нужно проверять, если флаг не "взвелся". А таймер нужен для случая, когда поток событий слишком велик. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 16:41 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Сведем очередь c умаА таймер нужен для случая, когда поток событий слишком велик.Ну так не вызывай isc_que_events сразу после получения события, если поток ТАК велик... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 17:08 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
hvlad, мало ли. Ситуации разные бывают. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 17:12 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
pastorYuRockРаз в 5 секунд, или 30, или пол часа - не важно , зависит от задачипропущено... Где ты вычитал про "получасовой"? Именно наоборот - открыл, дернул селект, закрыл. ПОЛЧАСА слитно. за попытку допущения получасового снапшота, во времена всеобщей грамотности, вполне можно было получить несоответствие в связи с неграмотностью.У, как всё сложно. Раз написал, два написал - не понимать, не грамотные мы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 17:26 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
pastorСкажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях. PS На "думать" уровень изоляции не влияет. От рождества Дейтова. Стартовал транзакцию, вытащил клубок данных на экран, задумался - а может быть, вот такой колор? Отредактировал, сохраняешь изменения. Если это RC, и за время раздумий другая транзакция поменяла прочитанные нами данные и закоммитила изменения, то наши спокойненько лягут поверх её изменений, патамушта те уже commited. Если меняем приращением, то и фиг то с ним, оно даже и к лучшему, а если присваиванием, то фигня получается практицки, истребили мы результат деятельности соседа. Когда-то писал я здесь весёленькое эссе на грани пошлятины в качестве примера на эту тему. А вот если мы в снапшоте, то получим мы отлуп со своими изменениями, закоммитимся/отроллбачимся, перечитаем и прикинем кто из нас прав. PS И что в этот раз повлияло на "думать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2017, 19:23 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаpastorСкажите, пжалста, дату, начиная с которой можно менять одни и те же данные в разных транзакциях. PS На "думать" уровень изоляции не влияет. От рождества Дейтова. Стартовал транзакцию, вытащил клубок данных на экран, задумался - а может быть, вот такой колор? Отредактировал, сохраняешь изменения. Если это RC, и за время раздумий другая транзакция поменяла прочитанные нами данные и закоммитила изменения, то наши спокойненько лягут поверх её изменений, патамушта те уже commited. Если меняем приращением, то и фиг то с ним, оно даже и к лучшему, а если присваиванием, то фигня получается практицки, истребили мы результат деятельности соседа. Когда-то писал я здесь весёленькое эссе на грани пошлятины в качестве примера на эту тему. А вот если мы в снапшоте, то получим мы отлуп со своими изменениями, закоммитимся/отроллбачимся, перечитаем и прикинем кто из нас прав. PS И что в этот раз повлияло на "думать"? если сохраняешь изменения, это уже разные данные. речь про одни и те же. а про Если это RC, и за время раздумий другая транзакция поменяла прочитанные нами данные и закоммитила изменения, то наши спокойненько лягут поверх её изменений, патамушта те уже commited перечитай еще раз Дейта. ну, или эксперимент поставь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 07:54 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
Сведем очередь 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). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 09:34 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
S.G.snapshot больше нагружает сервер.Меньше всего нагружает сервер транзакция, которой не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 10:07 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
S.G.snapshot больше нагружает сервер.Чем? Тем, что удаленные в других - параллельных транзакциях записи, с идентификатором изменившей эти записи транзакции младше транзакции снапшота, не позволяет отправить в мусор? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 10:19 |
|
Вы используете FireBird (про Snapshot - транзакции)?
|
|||
---|---|---|---|
#18+
WildSeryS.G.Как-раз для отчетов он, имхо, не обязателен. Отчет - это когда 1-2-3-го числа берутся данные для прошлого месяца от 1-го до 30-го. Там давно уже все закоммичено и не должно меняться, уж тем более в процессе отчета.Спасибо, поржал. "Не должно" Если у вас 30-31 заканчивают месяц, потом 1-2 делают отчет, а 5-6 спохватываются и меняют данные задним числом, то тут не повод для ржаки, а для грусти. Только непонятно, как при этом поможет snapshot? WildSeryS.G.snapshot больше нагружает сервер.Меньше всего нагружает сервер транзакция, которой не было. прекрасные комменты, WildSery :) а по теме ничего не будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 10:37 |
|
|
start [/forum/topic.php?fid=40&msg=39561449&tid=1561319]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 428ms |
0 / 0 |