powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
370 сообщений из 370, показаны все 15 страниц
Чем плох блокировочник по сравнению с версионником?
    #38952142
db2exc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952154
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird?

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

Вообще, не помню, что бы мне под DB2 хотелось бы версионности.

Кстати, по моему опыту, большая часть backend-разработчиков о такой вещи, как версионники не знает и думает, что читатели писателей блокируют. Что приводит к интересным результатам, особенно в биллингах )
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952158
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird?
Ну, возможно, что отличие не в чистой производительности, а в производительности "чистого" чтения. Т.е. в теории пишущий до коммита, к примеру, записал в блок грязные данные, которые отражают только часть операций транзакции. К пример, умножил зарплату в двое, но еще не добавил 100000. Т.е. там данные неправильные. Тогда читающий прочитает неправильные данные и примет не правильное решение. Чтобы избежать этого блокировочник имеет возможность заблокировать блок. Т.е. его читать до завершения транзакции нельзя: падение производительности. Но может иметь возможность позволить читать грязные данные, тогда производительность не страдает. Версионник создает копии меняемых блоков: несколько версий блока. Читающий видит копии правильных данных на момент запроса.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952225
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfodb2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird?
Ну, возможно, что отличие не в чистой производительности, а в производительности "чистого" чтения. Т.е. в теории пишущий до коммита, к примеру, записал в блок грязные данные, которые отражают только часть операций транзакции. К пример, умножил зарплату в двое, но еще не добавил 100000. Т.е. там данные неправильные. Тогда читающий прочитает неправильные данные и примет не правильное решение. Чтобы избежать этого блокировочник имеет возможность заблокировать блок. Т.е. его читать до завершения транзакции нельзя: падение производительности. Но может иметь возможность позволить читать грязные данные, тогда производительность не страдает. Версионник создает копии меняемых блоков: несколько версий блока. Читающий видит копии правильных данных на момент запроса.вообще-то неудачный пример - в обоих случаях читаются неправильные данные
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952258
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2exc,

обычно, приложения пишутся под конкретную СУБД, и поэтому (если разработчик хорошо знаком с архитектурой СУБД) проблем не возникает.
Проблемы начинаются тогда, когда приложения, ориентированные на версионник пытаются перенести на блокировочник, и наоборот.
По идее, проблем в направлении переноса версионник->блокировочник куда больше, чем в обратную сторону.
Версионник, скажем так, "развращает" разработчика в том смысле, что блокировок в нем как таковых нет. Блокировочник наоборот, вызывает ожидание на блокировке ресурсов там, где его могло бы не быть при использовании версионника.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952261
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoТогда читающий прочитает неправильные данные
среди старых и нынешних архитекторов Firebird есть мнение, что режим Dirty Read как таковой противопоказан любой СУБД, поэтому даже возможность (существующая) реализации Dirty Read в версионнике не обсуждается.
К примеру, в Firebird (и InterBase) уже много-много лет есть режим read_committed no_rec_version, который выдает ошибку при попытке чтения non-committed версии. Казалось бы, легко реализовать возможность ее "показа", однако...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952263
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird?
Вопрос несколько бессмысленный, поскольку "такой же" практически не используется. Скажу так: для достижения хорошего быстродействия в блокировочниках, как правило, приходится запрещать длинные транзакции и использовать худшие (в смысле качества данных) уровни изоляции.

SergSuperвообще-то неудачный пример - в обоих случаях читаются неправильные данные
Думаю, "неправильные" - очень неудачное слово.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952268
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerдля достижения хорошего быстродействия в блокировочниках, как правило, приходится запрещать длинные транзакции и использовать худшие (в смысле качества данных) уровни изоляции.
в InterBase 1984-85 года выпуска был один уровень изолированности - snapshot, но тем не менее, для достижения хорошего быстродействия в версионнике и с read_committed длинные транзакции тоже не рекомендуются. Я не берусь оценивать эффекты быстродействия от длинных транзакций в обоих архитектурах, но если в блокировочнике длинные транзакции приводят к блокированию конкурирующих транзакций, то в версионнике длинные транзакции приводят к падению производительности из-за накопления версий и последующей сборки "мусора".

Впрочем, полезность версионной архитектуры явно продемонстрирована ее поддержкой в MS SQL 2005, это кроме поддержки в Oracle, PostgreSQL и MySQL, не говоря про ее родоначальника InterBase и наследника Firebird.
Однако, существуют задачи, где версионник только вреден - например, классическая "прокачка" данных через СУБД. Тут блокировочники рулят (как и аналоги dbf, впрочем). Хорошо, что такая задача составляет мизерный процент от остальных.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952273
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvв InterBase 1984-85 года выпуска был один уровень изолированности - snapshot, но тем не менее
Я как раз об этом. Для блокировочника snapshot - это "крайне дорогое удовольствие".

kdvдля достижения хорошего быстродействия в версионнике и с read_committed длинные транзакции тоже не рекомендуются.
Для версионника уровень изоляции мало влияет на производительность, поскольку указывает в основном какую из версий выбрать. Для блокировочника же он очень сильно влияет на производительность, поскольку указывает, как долго удерживать блокировку на широко востребованном ресурсе. Поэтому для него и вводят всякие dirty read, with nolock etc.

kdvЯ не берусь оценивать эффекты быстродействия от длинных транзакций в обоих архитектурах,
Насколько я понимаю, они несравнимы. Суть в том, что в версионнике до достаточно большого порога замедление идёт линейно и в целом малокритично, в блокировочнике же нарастает снежный ком (заблокированная транзакция в свою очередь дольше держит блокировки и блокирует следующие транзакции итд).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952275
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2exc,

А что хорошего в блокировочнике? В том, что люди приходят на форум чуть-ли не каждый день спрашивать "как залить в таблицу мильен-другой записей не блокируя таблицу на долго"?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952450
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВерсионник, скажем так, "развращает" разработчика в том смысле, что блокировок в нем как таковых нет.предлагаю выдать коллеге нобелевскую премию. Это явно фундаментальное открытие
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952587
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvсреди старых и нынешних архитекторов Firebird есть мнение, что режим Dirty Read
как таковой противопоказан любой СУБД, поэтому даже возможность (существующая) реализации
Dirty Read в версионнике не обсуждается.
А некоторые даже и на Read Committed смотрят косо. Ибо проблем с его поддержанием много, а
полезного выхлопа - мало.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952748
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic Hunterdb2exc,
А что хорошего в блокировочнике? В том, что люди приходят на форум чуть-ли не каждый день спрашивать "как залить в таблицу мильен-другой записей не блокируя таблицу на долго"?

А что хорошего в версионнике? Бесконечные откаты при высокой конкуренции (даже тогда, когда они вовсе не нужны)? Особенно с учётом того, что чистый (полноценный) версионник (из известных RDBMS) только один (PostgreSQL)? ;)

Вообще, я за гибридный подход.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952774
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousБесконечные откаты при высокой конкуренции (даже тогда, когда они
вовсе не нужны)? Особенно с учётом того, что чистый (полноценный) версионник (из известных
RDBMS) только один (PostgreSQL)? ;)
Если PG что-то постоянно при конкуренции откатывает, то это его, PG, личные проблемы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952788
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

эттот псевдо пж--ононимус к пг относится так же ,как я к балету

-- оно любитель мастдайскуэля.
и вероятно только , опять таки, как клиентопейсатель.

в пг форуме имеет вопросы только относительно сериалайзебл режима (адепт исключительного сериалайзебла всегда и во всём [блокировочный моск, уле])

а то, что любая субд будет, будучи в сериалайзебле, то и дело что-то откатывать -- ну это какбе оксиома.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952794
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousБесконечные откаты при высокой конкуренции (даже тогда, когда они
вовсе не нужны)? Особенно с учётом того, что чистый (полноценный) версионник (из известных
RDBMS) только один (PostgreSQL)? ;)
Если PG что-то постоянно при конкуренции откатывает, то это его, PG, личные проблемы.

Ничего подобного. Как версионник может не откатывать? Это (традиционно) часть данного подхода к изоляции транзакций.

И вообще, если транзакции конкурируют за какой-то ресурс, можно:
Заблокировать одну из транзакций (подождать) --- подход блокировочника.

Откатить одну из транзакций --- подход версионника.
А какие ещё варианты-то? Или же вы имеете в виду использование блокировок в версионнике (что его частично превращает в блокировочник)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952803
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаэттот псевдо пж--ононимус к пг относится так же ,как я к балету

Что, зацепило тебя в прошлый раз, балерина, аж кушать не можешь? ;)

этта-- оно любитель мастдайскуэля.

Не угадал.
эттаи вероятно только , опять таки, как клиентопейсатель.

А ты у нас из PostgreSQL core team, значит? ;)

эттав пг форуме имеет вопросы только относительно сериалайзебл режима (адепт исключительного сериалайзебла всегда и во всём [блокировочный моск, уле])

Да, я адепт консистентности (и SERIALIZABLE, который её гарантирует) и считаю, что смысла от быстрого перемалывания мусора никакого нет. А причём тут блокировки, я не понимаю.

эттаа то, что любая субд будет, будучи в сериалайзебле, то и дело что-то откатывать -- ну это какбе оксиома.
Любая СУБД иногда будет что-то откатывать (DEADLOCK-и, например).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952820
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousКак версионник может не откатывать? Это (традиционно) часть данного
подхода к изоляции транзакций.
Да в общем-то легко. И опять же если кто-то что-то традиционно откатывает, это его личные
половые проблемы. Приведи конкретный пример когда откат транзакции необходим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952862
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДа в общем-то легко.

Отличный ответ, просветляющий. ;)
Не, ну если транзакции выполнять строго по одной, то без отката можно всегда обойтись. ;)

Dimitry SibiryakovИ опять же если кто-то что-то традиционно откатывает, это его личные
половые проблемы. Приведи конкретный пример когда откат транзакции необходим.



Да классический DEADLOCK:
Код: sql
1.
2.
3.
4.
1. t1: UPDATE t SET b=2 WHERE a=1
2. t2: UPDATE t SET b=3 WHERE a=2
3. t1: UPDATE t SET b=2 WHERE a=2
4. t2: UPDATE t SET b=3 WHERE a=1


Как тут кого-то не откатить?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952896
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousДа классический DEADLOCK:
Как тут кого-то не откатить?
Во-первых, это не deadlock, а update conflict.
Во-вторых, откатывать таки надо архитектора, который такую дурную логику в БД заложил.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952911
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovВо-первых, это не deadlock, а update conflict.

Или так, зависит от реализации. Но откатывать-то нужно !

Dimitry SibiryakovВо-вторых, откатывать таки надо архитектора, который такую дурную логику в БД заложил.

А это уже не дело СУБД. ;) И вообще, это могут быть разные "архитекторы".

Так, пример "когда откат транзакции необходим" я привёл. ;)
И какой же общий способ не откатывать?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952944
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousТак, пример "когда откат транзакции необходим" я привёл. ;)
И какой же общий способ не откатывать?
Выбросить ошибку и пусть с ней приложение разбирается. Не дело СУБД проявлять
неестественный интеллект и инициативу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952977
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovВыбросить ошибку и пусть с ней приложение разбирается.


То есть в какой-то момент СУБД выбросит ошибку и клиент должен вручную откатить все или часть изменений?

Dimitry SibiryakovНе дело СУБД проявлять неестественный интеллект и инициативу.


Не вижу тут никакого "интеллекта" и "инициативы". Всё по стандарту, не хотите полного отката --- используйте SAVEPOINT, что тут не так-то?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38952984
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousТо есть в какой-то момент СУБД выбросит ошибку и клиент должен
вручную откатить все или часть изменений?
Клиент должен принять решение. Решит откатывать - пусть откатывает. Решит закоммитить как
есть - пусть коммитит как есть. Решит использовать любую другую логику обработки конфликта
- ему и карты в руки. Потому что это его бизнес-логика, его мабиноги.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953016
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovКлиент должен принять решение. Решит откатывать - пусть откатывает. Решит закоммитить как
есть - пусть коммитит как есть. Решит использовать любую другую логику обработки конфликта
- ему и карты в руки. Потому что это его бизнес-логика, его мабиноги.

Ну так SAVEPOINT перед каждым запросом и всего делов.

Я вот только не могу понять, как бизнес-логика связана с конфликтами и зачем ей вообще что-то о них знать?

Зачем я в своих транзакциях должен использовать не SERIALIZABLE и предусматривать специальную обработку всех возможных ситуаций (в которой, IMHO, запросто могут ошибиться 99% программистов) вместо общего framework-а (при ошибке откатил-повторил)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953021
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousНу так SAVEPOINT перед каждым запросом и всего делов.
1. Не очень понимаю, как savepoint спасёт от отката транзакции.

2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД "savepoint перед каждым запросом" обеспечивают автоматом.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953035
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД
"savepoint перед каждым запросом" обеспечивают автоматом.
Ну так PG, видимо, не претендует...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953038
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousDimitry SibiryakovКлиент должен принять решение. Решит откатывать - пусть откатывает. Решит закоммитить как
есть - пусть коммитит как есть. Решит использовать любую другую логику обработки конфликта
- ему и карты в руки. Потому что это его бизнес-логика, его мабиноги.

Ну так SAVEPOINT перед каждым запросом и всего делов.

Я вот только не могу понять, как бизнес-логика связана с конфликтами и зачем ей вообще что-то о них знать?

Зачем я в своих транзакциях должен использовать не SERIALIZABLE и предусматривать специальную обработку всех возможных ситуаций (в которой, IMHO, запросто могут ошибиться 99% программистов) вместо общего framework-а (при ошибке откатил-повторил)?Мне одному кажется, что вы какой-то бред несете?
1) В редких приложениях встречается жесткая конкуренция за одни и те же строки. Обычно в многопользовательском режиме пользователи меняют разные данные. Отсюда и deadlocks встречаются редко. Наличие большого количеств deadlock говорит либо о кривости самого приложения, либо о кривости СУБД (слишком крупные блокировки)
2) Exception на то и exception, что мы заранее не знаем, какой он может произойти. Может быть deadlock, а может и место на сервере закончиться. На каждый случай условных веток не напасешься. Но всегда есть возможность написать обработчик others, который будет всегда откатывать транзакцию, показывать юзеру текст exception и предлагать повторить всю транзакцию с нуля. Какие к черту SAVEPOINT?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953040
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinМне одному кажется, что вы какой-то бред несете?
Да не то чтобы бред. Слова уважаемого коллеги напоминают мне поведение юного головастого студента с большим самомнением, который нахватался вершков теории и при нуле практики начал придумывать улучшения и прочие единственно правильные подходы.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953072
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer1. Не очень понимаю, как savepoint спасёт от отката транзакции.

Может откатиться до него.

softwarer2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД "savepoint перед каждым запросом" обеспечивают автоматом.
О каких "обезьянках" речь? Если мне нужна будет "savepoint перед каждым запросом", я это легко реализую в клиентском (да и серверном) коде, а если не нужна --- не буду использовать. А в Ваших "нормальных СУБД" выбора нет, получается? И это Вы выдаёте за преимущество? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953074
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovsoftwarer2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД
"savepoint перед каждым запросом" обеспечивают автоматом.
Ну так PG, видимо, не претендует...

С чего это наличие или отсутствие произвольных ограничений вдруг стало определять "нормальность" СУБД?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953077
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousС чего это наличие или отсутствие произвольных ограничений вдруг
стало определять "нормальность" СУБД?
С тех пор как атомарность транзакции в целом и DML в частности стала стандартом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953083
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinМне одному кажется, что вы какой-то бред несете?
Откуда я знаю, сколько вас здесь, "считающих"? ;)

Alexander Ryndin1) В редких приложениях встречается жесткая конкуренция за одни и те же строки. Обычно в многопользовательском режиме пользователи меняют разные данные. Отсюда и deadlocks встречаются редко.
А статистика, подтверждающая "в редких приложениях", у Вас есть? Или это информация агенства ОБС? ;) И как связаны "меняют разные данные" и DEADLOCK-и? Пускай 100500 клиентов конкурируют за одни и те же строки, но если они обрабатывают их в одном порядке, DEADLOCK-ов (без слишком крупных блокировок и т.п.) не будет вообще.

Alexander Ryndin Наличие большого количеств deadlock говорит либо о кривости самого приложения, либо о кривости СУБД (слишком крупные блокировки)

Обычно да.

Alexander Ryndin2) Exception на то и exception, что мы заранее не знаем, какой он может произойти. Может быть deadlock, а может и место на сервере закончиться.

Безусловно, какой будет exception, заранее неизвестно. Но вот deadlock-и и update conflict-ы --- это нормальные ситуации в работе СУБД, и любому Database Developer должно быть известно, как их полагается обрабатывать.

Alexander RyndinНа каждый случай условных веток не напасешься.

Можно и напастись, т.к. обычно ошибки как-то разделяются на группы по severity и т.п.

Alexander RyndinНо всегда есть возможность написать обработчик others, который будет всегда откатывать транзакцию, показывать юзеру текст exception и предлагать повторить всю транзакцию с нуля.

Да Вы что? А если пользователя просто нет ? Кому Вы будете это сообщение показывать?

Alexander Ryndin Какие к черту SAVEPOINT?
Те самые, которые есть в стандарте и во всех "нормальных СУБД"? Вот они все дураки-то, правда? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953086
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymoussoftwarer1. Не очень понимаю, как savepoint спасёт от отката транзакции.

Может откатиться до него
На предыдущем допросе (тм) Вы показали, что версионник должен отказывать транзакцию. Как откатиться до savepoint-а после отката транзакции и зачем?

PgSQLAnonymousО каких "обезьянках" речь? Если мне нужна будет "savepoint перед каждым запросом", я это легко реализую в клиентском (да и серверном) коде,
Вот именно о таких обезьянках.

PgSQLAnonymousА в Ваших "нормальных СУБД" выбора нет, получается? И это Вы выдаёте за преимущество? ;)
За преимущество я выдаю удобную и правильную работу. А мучающиеся с грязным чтением, мумпсом и прочим каменным веком имеют полное право гордиться тем, что у них зато есть выбор.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953090
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousС чего это наличие или отсутствие произвольных ограничений вдруг
стало определять "нормальность" СУБД?
С тех пор как атомарность транзакции в целом и DML в частности стала стандартом.

Извините, этого я не понял вообще. Стандарт ANSI SQL не требует implicit savepoints. О каком стандарте идёт речь и причём тут атомарность-то?
Как вообще наличие или отсутвие implicit savepoints влияет на атомарность?

Кстати, Вам не кажется, что Вы всё наоборот вывернули? Вот, например, если у меня есть "нормальная СУБД" и я выполняю:
Код: sql
1.
2.
3.
4.
BEGIN;
INSERT INTO history_table SELECT * FROM current_table;
TRUNCATE TABLE current_table;
COMMIT;


И у меня происходит ошибка в INSERT, то, как я понимаю, он откатывается и транзакция продолжается , и мне это поведение почему-то совсем не кажется "нормальным". Верни мои данные, проклятый сервер! ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953093
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerAlexander RyndinМне одному кажется, что вы какой-то бред несете?
Да не то чтобы бред. Слова уважаемого коллеги напоминают мне поведение юного головастого студента с большим самомнением, который нахватался вершков теории и при нуле практики начал придумывать улучшения и прочие единственно правильные подходы.
А мне Ваши, может, тоже чего-то напоминают. А аргументы-то есть у Вас?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953096
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerPgSQLAnonymousпропущено...
Может откатиться до него
На предыдущем допросе (тм) Вы показали, что версионник должен отказывать транзакцию. Как откатиться до savepoint-а после отката транзакции и зачем?
Естественно, никак. Он может откатиться до savepoint-а вместо отката транзакции, если это нужно.

softwarerPgSQLAnonymousО каких "обезьянках" речь? Если мне нужна будет "savepoint перед каждым запросом", я это легко реализую в клиентском (да и серверном) коде,
Вот именно о таких обезьянках.
Нда. То есть возможность наличие выбора и возможность тривиально реализовать implict savepoint --- это недостаток, а отсутвие выбора --- это преимущество? Интересная у Вас логика.

softwarerЗа преимущество я выдаю удобную и правильную работу. А мучающиеся с грязным чтением, мумпсом и прочим каменным веком имеют полное право гордиться тем, что у них зато есть выбор.
Как здесь появились "грязное чтение, мумпсом и прочий каменным век"?
Ни с чем таким в PostgreSQL и MS SQL, например, где вышеописанный выбор есть, можно не мучаться (а с грязным чтением в PostgreSQL и не получится)...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953103
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousмне это поведение почему-то совсем не кажется "нормальным"
Выше я уже писал про неестественный интеллект и инициативу. Ты явно и недвусмысленно
приказал серверу закоммитить транзакцию не смотря ни на что. Он её закоммитил. Почему
точное выполнение сервером твоих приказов ты считаешь ненормальным?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953113
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousмне это поведение почему-то совсем не кажется "нормальным"
Выше я уже писал про неестественный интеллект и инициативу. Ты явно и недвусмысленно
приказал серверу закоммитить транзакцию не смотря ни на что. Он её закоммитил. Почему
точное выполнение сервером твоих приказов ты считаешь ненормальным?

Я говорю, что мне это поведение кажется ненормальным, потому что я привык к другому. ;) Если его учитывать, то ничего плохого тут нет, я приказал --- он закоммитил, формально косяк здесь только мой. Но без implicit savepoints я могу выполнить это всё одним запросом/пакетом и знать, что данные не потеряются, а здесь нет, и это мне кажется ненормальным. ;(
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953119
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousDimitry Sibiryakovпропущено...

С тех пор как атомарность транзакции в целом и DML в частности стала стандартом.

Извините, этого я не понял вообще. Стандарт ANSI SQL не требует implicit savepoints. О каком стандарте идёт речь и причём тут атомарность-то?
Как вообще наличие или отсутвие implicit savepoints влияет на атомарность?

Кстати, Вам не кажется, что Вы всё наоборот вывернули? Вот, например, если у меня есть "нормальная СУБД" и я выполняю:
Код: sql
1.
2.
3.
4.
BEGIN;
INSERT INTO history_table SELECT * FROM current_table;
TRUNCATE TABLE current_table;
COMMIT;


И у меня происходит ошибка в INSERT, то, как я понимаю, он откатывается и транзакция продолжается , и мне это поведение почему-то совсем не кажется "нормальным". Верни мои данные, проклятый сервер! ;)

Я дико извиняюсь, что встреваю, но, в нормальной СУБД:

Код: sql
1.
DELETE current_table OUTPUT deleted.* INTO history_table
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953129
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinPgSQLAnonymousпропущено...

Извините, этого я не понял вообще. Стандарт ANSI SQL не требует implicit savepoints. О каком стандарте идёт речь и причём тут атомарность-то?
Как вообще наличие или отсутвие implicit savepoints влияет на атомарность?

Кстати, Вам не кажется, что Вы всё наоборот вывернули? Вот, например, если у меня есть "нормальная СУБД" и я выполняю:
Код: sql
1.
2.
3.
4.
BEGIN;
INSERT INTO history_table SELECT * FROM current_table;
TRUNCATE TABLE current_table;
COMMIT;


И у меня происходит ошибка в INSERT, то, как я понимаю, он откатывается и транзакция продолжается , и мне это поведение почему-то совсем не кажется "нормальным". Верни мои данные, проклятый сервер! ;)

Я дико извиняюсь, что встреваю, но, в нормальной СУБД:

Код: sql
1.
DELETE current_table OUTPUT deleted.* INTO history_table



А в другой нормальной СУБД:
Код: sql
1.
2.
3.
4.
WITH deleted AS (
DELETE FROM current_table RETURNING *
)
INSERT INTO history_table SELECT * FROM deleted;


И что? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953131
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИ что? ;)
Это был намек, что скрипт был приведен "под ситуацию".
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953151
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin,

а воще то все эти output и returning убожество мысли и отсутствие фантазии с целю достичь атомарности в некоторых простых случаях

и говно тот субд который СВОЮ работу валит на плечи клиента, а дедлоки и конфликты именно работа субд, без оных нах субд и не нужна, кроме как читать она ни для чего не нужна
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953153
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin1) В редких приложениях встречается жесткая конкуренция за одни и те же строки. Обычно в многопользовательском режиме пользователи меняют разные данные.
это так кажется
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953606
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА что хорошего в версионнике? Бесконечные откаты при высокой конкуренцииЗвучит двусмысленно...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953957
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Думаю, "неправильные" - очень неудачное слово.
Ну не очень неудачное. Как бы правило - читать в БД то, что в ней хранится в согласованном состоянии: т.е. результат завершенных транзакций. Несогласованные данные ("грязные") ну не правильные - таких не должно быть в БД. Согласованные типа как бы правильные. На момент запроса в БД именно такие данные. Хотя они в процессе изменения - как бы не совсем актуальные: раз меняют значит в там должны бы быть другие. Ну так это вопрос оперативности. Если это не правильно, то может быть, просто нужна типа система реального времени.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953963
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosoftwarerДумаю, "неправильные" - очень неудачное слово.
Ну не очень неудачное. Как бы правило - читать в БД то, что в ней хранится в согласованном состоянии
Именно. Насколько я понял Сергея, "неправильными" данными он назвал "те значения, которые вот-вот будут изменены, а мы их читаем".
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953975
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoКак бы правило - читать в БД то, что в ней хранится в согласованном
состоянии: т.е. результат завершенных транзакций. Несогласованные данные ("грязные") ну не
правильные - таких не должно быть в БД. Согласованные типа как бы правильные. На момент
запроса в БД именно такие данные.
Неясно только зачем ограничиваться согласованностью данных на уровне запроса. На уровне
транзакции оно гораздо полезнее: можно выдать сколько угодно запросов и полученные ими
данные будут согласованы как унутре резалт-сета, так и между собой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953988
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarervadiminfoпропущено...

Ну не очень неудачное. Как бы правило - читать в БД то, что в ней хранится в согласованном состоянии
Именно. Насколько я понял Сергея, "неправильными" данными он назвал "те значения, которые вот-вот будут изменены, а мы их читаем".
Ну я тоже так понял. Но это как бы это все же особые требования к оперативности. Но если данные про то, чего не могло быть не до не после изменения, то они совсем неправильные.
Впрочем, я согласен, что термин "правильные" не подходит для строго описания. Выбран чисто для упрощения описания.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953995
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЕстественно, никак. Он может откатиться до savepoint-а вместо отката транзакции, если это нужно.
Замечательно. То есть предыдущее утверждение явно дезавуируем.

PgSQLAnonymousНда. То есть возможность наличие выбора
Выбор - не преимущество. Уместный выбор - преимущество. Неуместный выбор - недостаток.

Установка savepoint-а бесплатна и ничему не мешает. Поэтому выбор - неуместен, и необходимость в каких-то дополнительных телодвижениях для того, чтобы он был поставлен - недостаток.

PgSQLAnonymousКак здесь появились "грязное чтение, мумпсом и прочий каменным век"?
Как пример "выборов", которые по Вашей логике, являются преимуществом.

PgSQLAnonymousНи с чем таким в PostgreSQL и MS SQL, например, где вышеописанный выбор есть, можно не мучаться (а с грязным чтением в PostgreSQL и не получится)...
Ну вот и очень плохо, что не получится Такие нехорошие, выбор отобрали
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38953999
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoНу я тоже так понял. Но это как бы это все же особые требования к оперативности.
Да даже не совсем так. Допустим, есть некие данные А. Допустим, у нас есть две транзакции: одна читает А и пишет Б, другая читает А и как-то их модифицирует. Так вот, с точки зрения состояния базы и вообще логики происходящего нет разницы между двумя ситуациями:

прошла первая транзакция, через десять минут вторая

обе транзакции идут параллельно, первая успевает ухватить старую версию изменяемых данных.

Поэтому если мы считаем, что в первом случае всё нормально и данные правильные, нет ровно никаких резонов считать, что во втором они неправильные. Если мы хотим, чтобы Б всегда соответствовали последнему состоянию А - значит, нужно явно это указывать (то есть вызывать первую операцию в конце второй).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954026
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarervadiminfoНу я тоже так понял. Но это как бы это все же особые требования к оперативности.
Да даже не совсем так. Допустим, есть некие данные А. Допустим, у нас есть две транзакции: одна читает А и пишет Б, другая читает А и как-то их модифицирует. Так вот, с точки зрения состояния базы и вообще логики происходящего нет разницы между двумя ситуациями:

прошла первая транзакция, через десять минут вторая

обе транзакции идут параллельно, первая успевает ухватить старую версию изменяемых данных.

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

а порядок пушкин будет задавать, если первый запускает вася, а второй петя?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954031
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа порядок пушкин будет задавать, если первый запускает вася, а второй петя?
А кто задаёт порядок в многопользовательской системе?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954033
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerViPRosа порядок пушкин будет задавать, если первый запускает вася, а второй петя?
А кто задаёт порядок в многопользовательской системе?
тот кто проектирует
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954037
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerТо есть предыдущее утверждение явно дезавуируем.

Какое именно из них?

softwarerВыбор - не преимущество. Уместный выбор - преимущество. Неуместный выбор - недостаток.

А давайте не только Вы будете решать, какой выбор --- уместный, а какой --- нет? ;)

softwarerУстановка savepoint-а бесплатна и ничему не мешает.

Где-то бесплатна, а где-то нет. И пример, где мешает, я уже приводил.

softwarerКак пример "выборов", которые по Вашей логике, являются преимуществом.

Ясно. Ну некоторые из них (иногда) являются. Например, в блокировочниках обычно можно использовать READ UNCOMMITTED просто для того, чтобы оценить прогресс какой-нибудь "затормозившей" транзакции, смотря на ещё незакомиченные ею данные. Без него этой возможности (именно таким способом) нет.

softwarerНу вот и очень плохо, что не получится Такие нехорошие, выбор отобрали
Да нет, не очень. Отсутствие этих выборов легко можно пережить.

Кстати, "нормальная" СУБД, о которой Вы говорите --- это Oracle?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954038
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не теши себя, я имел ввиду что разработчики субд не осилили задачу многопользовательского доступа
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954039
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так как их не интересовал (как и любого любителя теории множеств чего либо) содержание
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954046
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRossoftwarerпропущено...
А кто задаёт порядок в многопользовательской системе?
тот кто проектирует
А зачем? Тут softwarer прав --- любой порядок пересекающихся транзакций корректен, хотя это и не очень интуитивно.
Вот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны . Кстати, ничто не мешает какой-то гипотетической СУБД работать то так, то этак, и это тоже нормально.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954048
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRosтак как их не интересовал (как и любого любителя теории множеств чего либо) содержание
А в чём сила содержание, брат? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954073
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousя запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то
модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они
пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как
увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в
версионнике), и оба исхода корректны.
Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные
перед изменением, а во второй - после него.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954079
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousак вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны .
Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954087
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlinePgSQLAnonymousак вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны .
Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете
по-моему тут как-то многими переоценивается значение версионности и примеры проводятся никак не демонстрирующие ее
мне так кажется гораздо важнее что например не покажутся данные транзакции, которая будет откачена
а прочитается что Петя у Васи снял деньги чуть раньше или чуть позже - разницы особой нет, все равно пока с этими прочитанными данными что-то сделают в базе они могут еще не раз поменяться
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954100
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousя запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то
модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они
пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как
увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в
версионнике), и оба исхода корректны.
Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные
перед изменением, а во второй - после него.

И были бы правы. Разве я где-то говорил, что это корректный результат?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954104
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете

Нет, минуточку. ;) Если отчёт отображает состояние базы, которого никогда не было, он просто косой. Если СУБД не позволяет сделать отчёт, который бы не отображал таких состояний --- она тоже косая. ;)

SergSuperа прочитается что Петя у Васи снял деньги чуть раньше или чуть позже - разницы особой нет, все равно пока с этими прочитанными данными что-то сделают в базе они могут еще не раз поменяться
Вот именно.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954105
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miwaonlineНу да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.
Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954121
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousViPRosтак как их не интересовал (как и любого любителя теории множеств чего либо) содержание
А в чём сила содержание, брат? ;)
видишь как народ испугался слова "правильные"?
а "правильность" требует осмысления (данные как информация) и тогда субд знал бы как упорядочить конкурирующие транзакции, что бы все было осмысленно
не - целостно, атомарно, хренарно - а осмысленно
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954124
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousViPRosпропущено...

тот кто проектирует
А зачем? Тут softwarer прав --- любой порядок пересекающихся транзакций корректен, хотя это и не очень интуитивно.
Вот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны . Кстати, ничто не мешает какой-то гипотетической СУБД работать то так, то этак, и это тоже нормально. В правильном блокировочнике отчет, который выполняется 3 дня просто не даст менять данные все эти 3 дня. Грязное чтение может приводить к совершенно причудливым искажениям отчета. Так, например, в какой-то момент процедуры ETL могут просто обнулить агрегатную таблицу перед пересчетом.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954134
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousРазве я где-то говорил, что это корректный результат?
А процитировал я чьи слова?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954174
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousРазве я где-то говорил, что это корректный результат?
А процитировал я чьи слова?..

Вы их, очевидно, не поняли.

Dimitry SibiryakovНу, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные перед изменением, а во второй - после него.

В случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954187
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу:
Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954188
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousmiwaonlineНу да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.
Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то?
То, что это один и тот же отчет, в котором нет состояния "до" и "после", а есть две части, которые, по непонятной мне логике, имеют право отображать разные данные.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954190
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSupermiwaonlineпропущено...

Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете

Я правильно понял, что несогласованный между собой (или противоречащий сам себе) отчет для вас - ерунда?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954196
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу:
Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник?
It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ).

Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954199
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miwaonlinePgSQLAnonymousпропущено...

Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то?
То, что это один и тот же отчет, в котором нет состояния "до" и "после", а есть две части, которые, по непонятной мне логике, имеют право отображать разные данные.
Где Вы взяли какие-то "две части"? Я говорил о двух вариантах выполнения отчёта (в версионнике и блокировочнике).
Нет никаких частей, никаких "разных данных", оба отчёта корректны.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954205
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousAlexander Ryndinпропущено...
Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу:
Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник?
It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ).

Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).Это как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?
Хорошо, что я решил задать вам этот вопрос, а не снес Oracle. А то мне показалось, что вы в прошлый раз сказали вот это:
PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954225
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?

показываю магию. внимательно следите за руками !
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954228
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousпропущено...

It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ).

Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).Это как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?
А вот так, магии-то не существует. ;)

Alexander RyndinХорошо, что я решил задать вам этот вопрос, а не снес Oracle.

Да ладно, снесли бы уж, что Вы всё сидите с не-ACID СУБД ;) (и это в 2015-то году! )

Alexander RyndinА то мне показалось, что вы в прошлый раз сказали вот это:
PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
Да, сказал. А в этом случае модификация реально будет выполнена только после отчёта, а не до. ;)
Грубо говоря, в блокировочнике последовательность транзакций совпадает с последовательностью COMMIT-ов.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954241
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?

показываю магию. внимательно следите за руками !
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.
Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954294
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них.
Изоляция и обеспечение непротеворечивости в течение непродолжтительного времени (например проведения платежа) или построение быстрого оперативного отчета (например выписка по счету за текущий день) можно и частично переложить на мехнизмы блокировок или версий.
Практика показала, что версионный механизм так или иначе реализуется в субд. т.к. наличие выбора режима работы - это лучше чем только один вариант.
Лично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954296
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.[/quot]

Э, а какая магия дает возможность версионнику в реальном времени считать все движение по счетам за прошедшие 30 лет при каждом запросе, без всяких закрытых периодов?
Банковский день/закрытый период вводились просто в те времена, когда нормальных materialized view и партиционирования еще не было. Да и память/ядра стоили дорого.
Так что все-таки лучше без передергиваний.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954303
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousYo.!пропущено...

показываю магию. внимательно следите за руками !
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.
Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2.
1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные
2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы
3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные
Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954310
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin,

2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы

Мне кажется блокировать писателей явно "не комильфо"...
от этого зависит отклик базы данных на запись.(оперативные журналы то не резиновые)
И если в базу много пишут...и ровно также много делают аналитических отчётов...производительность по записи блокировочника может просесть по отношению к версионнику.(Ну тут уже выше говорилось,что версионник лучше масштабируется)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954312
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldв споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них. 3 дня было взято для того, чтобы подчеркнуть проблему. Та же самая проблема будет, если отчет выполняется 2 минуты. Это как раз из разряда оперативных отчетов, но эти отчеты также могут обращаться к нескольких таблицам, что может привести к рассинхрону. Городить "логику хранения данных в базе и учета изменения в них" ради этих отчетов в OLTP системе никто не будет.
Ggg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных системЭто да. Не понятно к чем только фразы про shared nothing. Shared nothing может быть применен как к блокировочникам, так и к версионникам.
Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.Простите, какой-то поток сознания про RAM и диски. Какие такие версионники хранят блокировки на диске? Про Oracle могу сказать, что информация о блокировках хранится в заголовке блока данных, который в свою очередь лежит в оперативке.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954318
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineSergSuperпропущено...
ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете

Я правильно понял, что несогласованный между собой (или противоречащий сам себе) отчет для вас - ерунда?неправильно
ерунда в том что не получится что Петя должен Васе
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954319
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются.

Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

Вообще, по моему опыту (трехзвенок) у версионников есть несколько реальных проблем, с самой БД мало связанных:

1) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.

2) Версионники провоцируют смешивать OLTP и OLAP в большей степени, нежели блокировочники. Как, например, в задаче выше - никто из обсуждавших даже не спросил, а какой физический смысл у отчета про "состояние базы когда-то 3 дня назад". А как только добавляется "отчет по состоянию на 09:00 в понедельник", то сразу разница между блокировочником и версионником вообще исчезает, да и вообще лучше взять Spark.

3) Версионники, почему-то, сложнее администрировать. По крайней мере, DBA для DB2 и MS SQL стоят дешевле, чем для Oracle/Postgre и часов на типовую задачу у них уходит меньше.
Не знаю, проблемы с архитектурой или чем-то еще )

Ну и для реальных задач выбор между блокировочником и версионником не так уж и важен. А вот как реализовано партиционирование, материализованные представление, инкрементальный бакап, log shipping и сколько это стоит - действительно важно.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954328
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldв споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них.

Это потому что Вы так сказали? ;) А я вот считаю наоборот, и что?

Ggg_oldИзоляция и обеспечение непротеворечивости в течение непродолжтительного времени (например проведения платежа) или построение быстрого оперативного отчета (например выписка по счету за текущий день) можно и частично переложить на мехнизмы блокировок или версий.

Опять-таки, не согласен. Я считаю, что эта задача (обеспечение непротиворечивости при конкурентном доступе) должна решаться именно СУБД.

Ggg_oldПрактика показала, что версионный механизм так или иначе реализуется в субд. т.к. наличие выбора режима работы - это лучше чем только один вариант.

Согласен.

Ggg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
Вообще-то кеширование в основном скрывает эти различия, и как блокировки (которые тоже могут храниться на диске), так и версии (которые тоже можно хранить в RAM) обычно находятся именно в RAM. И, кстати, знай добавляй RAM и "будет расти iops-ы". ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954332
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются.

Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

а какой физический смысл у отчета про "состояние базы когда-то 3 дня назад". Еще раз повторюсь. 3 дня это для примера, чтобы усугубить. Абсолютно та же проблема будет и на запросе, который работает 1 день, 1 час и 1 минуту. Просто возникать она будет реже/чаще, а для пользователь будет создавать большие/меньшие проблемы.

Естественно аналитическую систему с отчетами, работающими часами нужно отделять. В версионнике смешение двух нагрузок также ничего хорошего не приносит. Например, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954333
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousпропущено...

Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2.
1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные
2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы
3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные
Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать.
Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954334
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinНапример, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена.
Слушайте, вот честно, когда Вы её в последний раз видели? Я, если не считать искусственно создаваемых примеров - на версии 8.1.7.4, лет двенадцать назад.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954338
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
это не правда. ни postgres, ни mysql/innodb, ни mssql/snapshot не хранят локи в датафайлах. эта мудрая мысль заложена только только в оракл.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954342
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerAlexander RyndinНапример, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена.
Слушайте, вот честно, когда Вы её в последний раз видели? Я, если не считать искусственно создаваемых примеров - на версии 8.1.7.4, лет двенадцать назад.Если честно, то полгода назад.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954346
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousAlexander Ryndinпропущено...
Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2.
1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные
2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы
3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные
Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать.
Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции)....и пусть весь мир подождет.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954352
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH33) Версионники, почему-то, сложнее администрировать. По крайней мере, DBA для DB2 и MS SQL стоят дешевле, чем для Oracle/Postgre и часов на типовую задачу у них уходит меньше.
Не знаю, проблемы с архитектурой или чем-то еще )Это по причине того, что вы сравниваете среднюю температуру по больнице. В вашу статистику попадают как DBA, сопровождающие банковские системы, так и DBA с 1С на MSSQL.
Если вы начнете сравнивать яблоки с яблоками, то увидите, что классный MSSQL спец получает не меньше чем классный спец по Oracle. Просто крутых систем на MSSQL построено раз два и обчелся, а на Oracle куда не плюнь бизнес-критические системы. Ну те же банки возьмите - они в России сидят на Oracle в 90% случаев.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954353
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются.

Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)
Это да. ;)

DPH31) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.

Подпишусь. "Слушайте, слушайте, и не говорите, что не слышали!" ;)

DPH3Ну и для реальных задач выбор между блокировочником и версионником не так уж и важен. А вот как реализовано партиционирование, материализованные представление, инкрементальный бакап, log shipping и сколько это стоит - действительно важно.
Вообще-то да, но с учётом того, что "настоящих" (с полноценным версионным SERIALIZABLE) версионников не так уж и много, выбор всё равно важен. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954355
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3часов на типовую задачу у них уходит меньше.
Пример "типовой операции" - В СТУДИЮ!!!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954370
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
это не правда. ни postgres, ни mysql/innodb, ни mssql/snapshot не хранят локи в датафайлах. эта мудрая мысль заложена только только в оракл.
Да ладно ;)

In PostgreSQL, tuple level locks are not held in RAM for any length of time; lock information is written to the tuples involved in the transactions.
Но это про predicate locks, которые ничего не блокируют, если честно. ;)
А кроме того, чем плоха эта мысль? Потенциально-то это способствует масштабируемости.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954382
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousпропущено...

Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции)....и пусть весь мир подождет.
В худшем случае --- да. ;)

А если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;) Уже наступил вечер, а транзакции всё откатывались.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954389
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.


А пропадают деньги у кого у оракла или дб2?...
Судя по всему у оракла...
Ну в принципе,если разработчики не занют разницы..это в принципе их косяк...
Ведь версионник может эмулировать блокировочник.

set transaction exclusive mode
или
select for update...
И тогда нужный набор будет ждать.
(Хотя для отчётов...значение иметь не будет всё равно...так же будут формироваться)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954413
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?

вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду.

Тока если блокировочник вдруг не эскалирует блокировку (а для 3-дневного отчета у него будут все причины это сделать). Тогда никакой закрытый период не поможет. Только если все в отдельные таблицы (считай базу) не переносить.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954421
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

Это вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик.

А у версионника про это даже думать не надо.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954423
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH31) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.

ну это проблема просто ничто, на фоне того, что творят программисты db2. по скольку serializable на db2 по сути не работоспособен, обсолютно все используют RC, не подозревая какую кашу выдает этот уровень у db2. на RC db2 не способен гарантировать, что запрос не прочитает одну и ту же запись несколько раз из-за того, что кто-то ее проапдейтил и она невместившись переместилось в другое место.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954431
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;)

Это что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954445
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkiePgSQLAnonymousА если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;)

Это что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции?
Ну а если такая система? Версионник-то для этой задачи как-то очень не... ;)
Мне бы хотелось, чтобы в одной СУБД можно было делать что-то вроде:
Код: sql
1.
SET TRANSACTION ISOLATION LEVEL [SNAPSHOT] SERIALIZABLE [READ ONLY] ...прочие опции...


То есть выбирать механизм.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954457
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie
Это что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции?
а в чем проблема ? смотрите TPC-C, те самые 100500 пишущих примитивных транзакций, версионный оракл там всех делает в одни ворота и именно на идентичной технике
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954477
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!смотрите TPC-C
Хранимых агрегатов нет, конкуренции по складам - 1% максимум. Да, да, отличный пример...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954496
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Nitro_JunkieЭто что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции?
а в чем проблема ? смотрите TPC-C, те самые 100500 пишущих примитивных транзакций, версионный оракл там всех делает в одни ворота и именно на идентичной технике
Как конкретно он там всех делает, т.е. какие запросы используются (хотя бы cсылкой не поделитесь)?

Меня в основном интересует вот что:
Там только SERIALIZABLE и никаких SELECT FOR UPDATE?

Там именно 100500 конкурирующих за те же записи "пишущих примитивных транзакций"?

И вообще, если я правильно помню, в TPC-C измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954598
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymousКак конкретно он там всех делает, т.е. какие запросы используются (хотя бы cсылкой не поделитесь)?

Меня в основном интересует вот что:
Там только SERIALIZABLE и никаких SELECT FOR UPDATE?

Там именно 100500 конкурирующих за те же записи "пишущих примитивных транзакций"?

И вообще, если я правильно помню, в TPC-C измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс?

все ответы вы найдете на сайте tpc.org или в моих постах в этом разделе лет этак 10 назад.
как делает смотрите тут:
http://oraclemind.blogspot.com/2005/10/tpc-c-oracle-vs-ibm.html
http://oraclemind.blogspot.com/2006/11/tpc-c-oracle-10-vs-mssql2k5.html
http://oraclemind.blogspot.com/2007/07/tpc-c.html
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954618
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!все ответы вы найдете на сайте tpc.org или в моих постах в этом разделе лет этак 10 назад.
как делает смотрите тут:
http://oraclemind.blogspot.com/2005/10/tpc-c-oracle-vs-ibm.html
http://oraclemind.blogspot.com/2006/11/tpc-c-oracle-10-vs-mssql2k5.html
http://oraclemind.blogspot.com/2007/07/tpc-c.html

Не нашёл по ссылкам ответов на свои вопросы (или где именно на tpc.org посмотреть, как реализовано в Oracle):
PgSQLAnonymousМеня в основном интересует вот что:
Там только SERIALIZABLE и никаких SELECT FOR UPDATE?

Там именно 100500 конкурирующих за те же записи "пишущих примитивных транзакций"?

И вообще, если я правильно помню, в TPC-C измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс?



Ваших релевантных постов тоже что-то не находится. :(
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954626
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymousНе нашёл по ссылкам ответов на свои вопросы (или где именно на tpc.org посмотреть, как реализовано в Oracle):

может вам балетом заняться ? откройте любой Full Disclosure Report, там листинг все сторед процедур прилагается. общее описание тут
http://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-C_V5-11.pdf
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954717
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!может вам балетом заняться? откройте любой Full Disclosure Report, там листинг все сторед процедур прилагается. общее описание тут
http://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-C_V5-11.pdf
А может, Вам? Так трудно ответить (если знаете), а не в Full Disclosure Report посылать (а то мне прямо делать больше нечего, кроме как искать это в исходниках в 300-страничном отчёте)?

Код: plaintext
1.
2.
3.
4.
5.
alter session set isolation_level = serializable
/*
 * Initialize the environment, err-handle, attach, open session,
 *  alter session to serializable.  Common for all 5 TX.
 */



И я повторю вопрос: если я правильно помню, в TPC-C измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс? Не знаете / не хотите --- не отвечайте.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954744
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymousА может, Вам? Так трудно ответить (если знаете), а не в Full Disclosure Report посылать (а то мне прямо делать больше нечего, кроме как искать это в исходниках в 300-страничном отчёте)?

конечно, ведь это так сложно найти PROCEDURE neworder в документе и посмотреть, что там за что конкурирует.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954784
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!PgSQLAnonymousА может, Вам? Так трудно ответить (если знаете), а не в Full Disclosure Report посылать (а то мне прямо делать больше нечего, кроме как искать это в исходниках в 300-страничном отчёте)?

конечно, ведь это так сложно найти PROCEDURE neworder в документе и посмотреть, что там за что конкурирует.
Знаете что, это Вы утверждали, что TPC-C является хорошей иллюстрацией к обсуждаемому вопросу (100500 транзакций конкурируют за один ресурс), вот Вы и приводите конкретные доказательства. А то я нашёл, посмотрел и теперь думаю --- причём тут это?!
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954808
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymous,

человек который не мог найти процедуру в паре строк кода смотрит и думает, да ладно шутить, чем он там думает !
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954843
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieDPH3Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

Это вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик.

А у версионника про это даже думать не надо.тут то как раз грязное чтение можно использовать
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954848
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!PgSQLAnonymous,
человек который не мог найти процедуру в паре строк кода смотрит и думает, да ладно шутить, чем он там думает !
А что, существо, которое привело не относящийся к делу пример и ещё требует, чтоб я что-то в нём искал, по теме сказать нечего?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954888
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinDPH33) Версионники, почему-то, сложнее администрировать. По крайней мере, DBA для DB2 и MS SQL стоят дешевле, чем для Oracle/Postgre и часов на типовую задачу у них уходит меньше.
Не знаю, проблемы с архитектурой или чем-то еще )Это по причине того, что вы сравниваете среднюю температуру по больнице. В вашу статистику попадают как DBA, сопровождающие банковские системы, так и DBA с 1С на MSSQL.
Если вы начнете сравнивать яблоки с яблоками, то увидите, что классный MSSQL спец получает не меньше чем классный спец по Oracle. Просто крутых систем на MSSQL построено раз два и обчелся, а на Oracle куда не плюнь бизнес-критические системы. Ну те же банки возьмите - они в России сидят на Oracle в 90% случаев.

Ну, я вообще ищу DBA под конкретные задачи: настройка log shipping между ДЦ (Data Guard, HADR - не важно), обновление версии без останова, обновление таблиц без блокировок, оптимизация запросов.
Тут c Oracle совсем все плохо, DB2 заметно дешевле, Postrge где-то посередине, c MS SQL давно не связывался. А больше сравнивать-то и не с кем )
Хотя да, это совсем "личный" опыт, статистики нет.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954896
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alА пропадают деньги у кого у оракла или дб2?...

У Оракла, у Оракла )

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

Да кто-бы спорил, что это их косяк. Но увы, очень мало разработчиков реально разбираются в БД. Хотя при этом считают, что все хорошо знают и даже не думаю о консультациях или проверке по документации.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954901
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieЭто вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик.
А у версионника про это даже думать не надо.

Вот да, и не думают. В результате по запросу на всю базу на каждый чих - с соответствующем результатом. Вообще, такие данные надо прямо из кэша на applayer забирать. Или получать dirtyread, благо точность не важна. Или с реплики (в CQRS-style системах).

А вот если у нас жесткий лимит на количество реализации за период и нельзя за него выходить - то и на версионнике сразу вылезет select for update со всеми радостями )
Особенно весело, если таких лимитов несколько десятков нужно проверять на каждую транзакцию )

У меня, кстати, обычно именно такие задачи )
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954905
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieЭто что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции?

Ну, например, перевод комиссии с забалансового счета на счет популярного мерчанта. Или перевод выигрышей с забалансового счета на счет кастомера. Во всех случаях - жесткие требования к овердрафту (кроме всего прочего).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954913
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3Вообще, такие данные надо прямо из кэша на applayer забирать. Или получать
dirtyread, благо точность не важна. Или с реплики (в CQRS-style системах).

А вот если у нас жесткий лимит на количество реализации за период и нельзя за него
выходить - то и на версионнике сразу вылезет select for update со всеми радостями )

Как данные забирать - так с кэша на апплаере, а как лимит контролировать, так позарез в
БД. Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954914
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3А вот если у нас жесткий лимит на количество реализации за период и нельзя за него выходить - то и на версионнике сразу вылезет select for update со всеми радостями )
Ничего такого там не вылезает. Я ещё раз повторюсь, из популярных СУБД полноценный версионник только один, и никаких "select for update" там не нужно. Просто используете SERIALIZABLE для всех модифицирующих транзакций.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954923
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovDPH3Вообще, такие данные надо прямо из кэша на applayer забирать. Или получать
dirtyread, благо точность не важна. Или с реплики (в CQRS-style системах).

А вот если у нас жесткий лимит на количество реализации за период и нельзя за него
выходить - то и на версионнике сразу вылезет select for update со всеми радостями )

Как данные забирать - так с кэша на апплаере, а как лимит контролировать, так позарез в
БД. Ню-ню...

(удивлённо оглядывась на других участников) А что, с блокировочниками кто-то не грешен dirty read на таких задачах (точность-то не важна)?

А если серьёзно, то кэш на application layer тут вполне подойдёт. А кто хочет, может и в базу сходить...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954946
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousПросто используете SERIALIZABLE для всех модифицирующих транзакций.

Угу, просто загоните его в однопользовательский режим и забудьте слово "масштабирование".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954983
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а других способов и нет :)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954987
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousПросто используете SERIALIZABLE для всех модифицирующих транзакций.

Угу, просто загоните его в однопользовательский режим и забудьте слово "масштабирование".

С чего бы это (я вот никогда не использовал БД, в которой только один разделяемый ресурс)?

Это у Вас иррациональный страх / одержимость "производительностью" или реальная статистика использования? ;) Люди-то используют и не знают. ;)

Кстати, результаты упоминавшегося тут TPC-C, который выполняется на этом самом SERIALIZABLE и показывает нормальные TPS-ы, Вам ни о чём не говорят? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955003
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousрезультаты упоминавшегося тут TPC-C, который выполняется на этом
самом SERIALIZABLE и показывает нормальные TPS-ы, Вам ни о чём не говорят? ;)
Мне это говорит о том, что Вы таки не понимаете как устроен этот TPC-C и что он призван
продемонстрировать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955008
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousпоказывает нормальные TPS-ы
Кстати говоря, вас не смущчет, что тот "единственный полноценный версионник", которого вы
предлагаете мучить SERIALIZABLE и тот, кто "показывает нормальные TPS-ы" - совершенно
разные СУБД?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955060
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousрезультаты упоминавшегося тут TPC-C, который выполняется на этом
самом SERIALIZABLE и показывает нормальные TPS-ы, Вам ни о чём не говорят? ;)
Мне это говорит о том, что Вы таки не понимаете как устроен этот TPC-C и что он призван
продемонстрировать.

Ещё раз, аргументы есть? Не нужно бросать что-то "свысока", меня это не впечатляет. ;)

А TPC-C, по идее, моделирует какую-то приближенную к реальной задачу. А по-Вашему, что он призван продемонстрировать?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955066
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА TPC-C, по идее, моделирует какую-то приближенную к реальной задачу

Да щаззз... Этой задаче до реальности ещё дальше чем Вашим 100500 откатам. И единственное,
что TPC-C демонстрирует, это мысль "партишенинг рулит, остальное суксь".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955067
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousпоказывает нормальные TPS-ы
Кстати говоря, вас не смущчет, что тот "единственный полноценный версионник", которого вы
предлагаете мучить SERIALIZABLE и тот, кто "показывает нормальные TPS-ы" - совершенно
разные СУБД?..

А Вас не смущает, что PostgreSQL --- это community project и даже не собирается участвовать в TPC (насколько я помню, тратить на это деньги и ресурсы сообщество считает нецелесообразным)? Вы вообще можете показать там результат хоть одной opensource СУБД? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955068
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousА TPC-C, по идее, моделирует какую-то приближенную к реальной задачу

Да щаззз... Этой задаче до реальности ещё дальше чем Вашим 100500 откатам. И единственное,
что TPC-C демонстрирует, это мысль "партишенинг рулит, остальное суксь".

А обоснование будет? Т.е. вот дураки сидели, чего-то упорно моделировали, а тут пришёл весь такой умный Dimitry Sibiryakov и сразу всё объяснил? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955080
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА обоснование будет?
Спецификацию его прочитай уже. И раньше этого - не возвращайся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955145
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousА обоснование будет?
Спецификацию его прочитай уже. И раньше этого - не возвращайся.

То есть, не будет.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955450
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousBTW, who are you to fucking lecture me?!
вот именно, вылез какой-то PgSQLAnonymous, который троллит и прикидывается, а может и не прикидывается.

Судя по вашим сообщениям, вам еще учиться и учиться, а вы тут шашкой машете. Удивительно, что есть люди, которые ведутся на ваши удивительные откровения.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955461
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvPgSQLAnonymousBTW, who are you to fucking lecture me?!
вот именно, вылез какой-то PgSQLAnonymous, который троллит и прикидывается, а может и не прикидывается.

Почему это вам кажется, что я троллю и прикидываюсь?

kdvСудя по вашим сообщениям, вам еще учиться и учиться, а вы тут шашкой машете.

Укажите на ошибки или см. мою цитату.
Кстати, шашкой тут явно машет кто-то другой. Аналогичную моей агрументацию можно
прочитать здесь http://www.postgresql.org/docs/devel/static/transaction-iso.html (пункт 13.2.3).
Я даже процитирую:

Consistent use of Serializable transactions can simplify development.
The guarantee that any set of concurrent serializable transactions will have the same effect as if they were run one at a time
means that if you can demonstrate that a single transaction, as written, will do the right thing when run by itself,
you can have confidence that it will do the right thing in any mix of serializable transactions,
even without any information about what those other transactions might do.
...

Вот же авторы PostgreSQL-то дебилы (как и авторы стандарта ANSI SQL, как и авторы TPC benchmarks и т.д. и т.п.), не то что вы. ;)

kdvУдивительно, что есть люди, которые ведутся на ваши удивительные откровения.
В Вашем сообщении агрументов ровно 0, в отличие от моих.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955478
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВ Вашем сообщении агрументов ровно 0, в отличие от моих.
Да, да. Но пример, в котором необходимы 100500 откатов, мы увидим когда-нибудь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955513
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousВ Вашем сообщении агрументов ровно 0, в отличие от моих.
Да, да. Но пример, в котором необходимы 100500 откатов, мы увидим когда-нибудь?..

Какой именно? Такой 17619422 ?
И вообще, я уже говорил, если по условиям задачи есть высокая конкуренция за ресурс, то 17608256 .
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955515
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousКакой именно? Такой?
Нет, такой, который потребует 100500 откатов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955521
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousКакой именно? Такой?
Нет, такой, который потребует 100500 откатов.

Хорошо, в чём именно вопрос? Чем не устраивают вышеприведённые?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955533
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousв чём именно вопрос? Чем не устраивают вышеприведённые?

В них нет конкуренции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955672
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousв чём именно вопрос? Чем не устраивают вышеприведённые?

В них нет конкуренции.

Странно.

Хорошо, следующий пример: БД брокера, у которого есть 100500 клиентов.
В ней есть таблица счетов этих клиентов и самого брокера, типа такой:
Код: sql
1.
2.
3.
4.
CREATE TABLE Accounts (
Id INT PRIMARY KEY, 
Amount NUMERIC (20, 4) NOT NULL
)


Брокер предоставляет клиентам займы для совершения сделок (пропорционально их средствам), если у него самого они есть ( https://ru.wikipedia.org/wiki/Финансовый_рычаг ).
Допустим, все клиенты одновременно хотят использовать заёмные средства, используя транзакцию типа такой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
BEGIN TRANSACTION;
-- Какие-то предварительные действия:
...
SELECT Amount
  FROM Accounts
 WHERE id = счёт_клиента;
-- Решено, что клиенту нужен займ, проверяется счёт брокера:
SELECT Amount
  FROM Accounts
 WHERE id = счёт_брокера;

-- Если там достаточно, списываются средства со счетов:
UPDATE Accounts SET Amount = Amount - свои_средства
 WHERE id = клиента;
UPDATE Accounts SET Amount = Amount - заёмные_средства
 WHERE id = счёт_брокера;
-- Выполняются дальнейшие действия:
...
COMMIT;


Есть здесь конкуренция за счёт_брокера или нет?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955684
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЕсть здесь конкуренция за счёт_брокера или нет?
Нету. Во-первых, потому что займ без одобрения брокера не получить, а во-вторых, тервер и
квантмех сильно против твоего допущения, что все 100500 клиентов захотели это сделать в
одну и ту же миллисекунду. Поэтому - конкуренции нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955686
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymous,

кривая реализация. В этой реализации никто и никогда не узнает куда же делись деньги со счёта.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955700
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousЕсть здесь конкуренция за счёт_брокера или нет?
Нету. Во-первых, потому что займ без одобрения брокера не получить,

Ерунда. В современной торговле акциями этот займ зачастую предоставляется автоматически .

Dimitry Sibiryakov а во-вторых, тервер и
квантмех сильно против твоего допущения, что все 100500 клиентов захотели это сделать в
одну и ту же миллисекунду. Поэтому - конкуренции нет.

Во-первых, разве я говорил о миллисекунде? И, во-вторых, "тервер и квантмех" имеют мало отношения к биржевым торгам, особенно при резких движениях рынка. ;)

Короче говоря, в некоторых условиях у достаточно крупного брокера тысячи транзакций могут пересечься.
Или все проблемы с конкурентным доступом нужно решать их отрицанием? ;)

Кстати, вот можно оценить объёмы транзакций на бирже: http://www.nasdaqtrader.com/Trader.aspx?id=DailyMarketSummary

И это только сделки, заявок (которые используются в моём примере) за день делается гораздо больше.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955703
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисPgSQLAnonymous,
кривая реализация. В этой реализации никто и никогда не узнает куда же делись деньги со счёта.
И это Вы увидели из отрывка транзакции, приведённого для демонстрации конкуренции? ;) И что именно в нём не так?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955711
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВо-первых, разве я говорил о миллисекунде?
А сколько тогда по времени работает твоя процедура? Достаточно долго для того, чтобы быть
вызванной ещё 100500 раз прежде чем она завершится?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955722
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousВо-первых, разве я говорил о миллисекунде?
А сколько тогда по времени работает твоя процедура? Достаточно долго для того, чтобы быть
вызванной ещё 100500 раз прежде чем она завершится?..

Достаточно долго для того, чтобы 100500 выполняющих её транзакций успели пересечься. А потом 100499, а потом 100498 ... ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955729
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousДостаточно долго для того, чтобы 100500 выполняющих её транзакций
успели пересечься.
Два селекта + два апдейта по первичному ключу длятся так долго? Ну, неудивительно, что PG
предпочитает не светиться в публичных тестах быстродействия.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955747
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousДостаточно долго для того, чтобы 100500 выполняющих её транзакций
успели пересечься.
Два селекта + два апдейта по первичному ключу длятся так долго? Ну, неудивительно, что PG
предпочитает не светиться в публичных тестах быстродействия.

Это отрывок транзакции, приведённый для демонстрации конкуренции. Многоточия и комментарии явно на это указывают.
А по теме: есть здесь конкуренция за счёт_брокера или нет?

Я вот всё не пойму: вы что, пытаетесь отрицать саму возможность конкуренции за ресурс в БД? Или к чему ведут все эти ответы?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955749
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymous,

я к тому что при проектировании обычно конкуренцию стараются избегать
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38955752
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЯ вот всё не пойму: вы что, пытаетесь отрицать саму возможность
конкуренции за ресурс в БД?
Теоретическую возможность возникновения update conflict я, конечно же, не отрицаю.
Практическую возможность 100500 откатов - отрицаю начисто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956155
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТеоретическую возможность возникновения update conflict я, конечно же, не отрицаю.
Практическую возможность 100500 откатов - отрицаю начисто.
Этого не может быть, потому что этого не может быть никогда! (с) мультфильм.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956207
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, конечно, блондинки могут выйти на улицу и встретить динозавра: вероятность-то 50/50...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956230
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНе, конечно, блондинки могут выйти на улицу и встретить динозавра: вероятность-то 50/50...
Ну так обоснуйте.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956252
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Infernal V. RavenНу так обоснуйте.
Обосновываю: существует всего два вероятных исхода: "блондинка встретит динозавра" и
"блондинка не встретит динозавра". Согласно теории вероятности, вероятность каждого
отдельного исхода равна единице, делённой на число возможных исходов. Следовательно, у
блондинки есть вероятность 50% на встречу с динозавром. Сможете опровергнуть?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956409
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСможете опровергнуть?А без передергиваний можете по теме?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956437
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Infernal V. RavenА без передергиваний можете по теме?
Доказательство несуществования это практически невозможная вещь. Так что лучше Вы
расскажите о том, при каких обстоятельствах на Вашей системе при реальной эксплуатации
100500 транзакций сошлись на update conflict-е и 100499 из них откатились.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956491
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
ну как же -- следите за руками -- у пассажыра 100500 клиентов обновляют свои счета, и счет общего брокера без создания на нем [счёте брокера] очереди блокированием (см его структуру счетов выше, и бред с транзакцией там же).

т.е. всё -- в сериалайзебле.

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

Модератор: давайте без перехода на личности
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956672
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттану как же -- следите за руками -- у пассажыра 100500 клиентов обновляют свои счета, и счет общего брокера без создания на нем [счёте брокера] очереди блокированием (см его структуру счетов выше, и бред с транзакцией там же).

А создание блокировки --- это, внезапно, подход блокировочника. ;)
Кстати, в чём бред с транзакцией, конкретно ?

И вообще, у меня есть другой вопрос к аудитории (по определениям): как отличить блокировочник от версионника? ;)

Вот MS SQL 2012 с его версионным SNAPSHOT (эквивалентным REPEATABLE READ в PostgreSQL или SERIALIZABLE в Oracle) и чисто (без использования версий) блокировочным SERIALIZABLE --- это блокировочник или версионник?

А PostgreSQL 9.4 с его чисто версионным SERIALIZABLE и возможностью накладывать блокировки на записи --- блокировочник или версионник?

А MySQL + InnoDB с его наложением блокировок в SERIALIZABLE и версионными другими уровнями (если я правильно помню) --- блокировочник или версионник?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956726
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИ вообще, у меня есть другой вопрос к аудитории (по определениям):
как отличить блокировочник от версионника? ;)
Хооо... Поциент внезапно признался, что не знает, о чём, собственно, спорил.

Ты не поверишь, но эти термины обозначают технологии взаимодействия читателей с писателями
для получения первыми консистентных данных, а вовсе не писателей между собой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956798
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСогласно теории вероятности, вероятность каждого
отдельного исхода равна единице, делённой на число возможных исходов.

Пурга
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956807
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFFTOPIC ON

mikron, Вы о чем? Про динозавра? Так ведь это АКСИОМА (т.е. Вещь, не требующая доказательств)

Поискал в И-нет.... на другом форуме уже на 6 посте вероятность встречи динозавра превысила 4/5 )))

botmihailm Итог вероятность поднялась до 4/5

Умоляю, остановитесь!
Я уже на улицу выходить боюсь ...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956840
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousИ вообще, у меня есть другой вопрос к аудитории (по определениям):
как отличить блокировочник от версионника? ;)
Хооо... Поциент внезапно признался, что не знает, о чём, собственно, спорил.

Вы хоть на один существенный вопрос конкретно ответите когда-нибудь, поциент?
Какой из указанных серверов версионник, а какой блокировочник? Какой практический смысл этих понятий?

Dimitry SibiryakovТы не поверишь, но эти термины обозначают технологии взаимодействия читателей с писателями
для получения первыми консистентных данных, а вовсе не писателей между собой.

Термины?! Сами придумали? Дайте-ка ссылку на общепринятые определения. ;)

А то вот можно легко нагуглить даже такое ( http://rdbms.narod.ru/faq/#R-SQL-Q5 ):

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


Это вообще полностью противоречит тому, что вы говорите, поциент. ;)

И каких ещё конситентных данных?
Ни MVCC, ни какие-нибудь блокировки никаких консистентных данных сами по себе не гарантируют. Гарантирует только использование протоколов изоляции, например SS2PL (Strong Strict Two-Phase Locking), SSI (Serializable Snapshot Isolation) или даже OCC (Optimistic Concurrency Control).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956867
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymous Гарантирует только использование протоколов изоляции, например SS2PL
(Strong Strict Two-Phase Locking), SSI (Serializable Snapshot Isolation) или даже OCC
(Optimistic Concurrency Control).
О, какая знакомая песенка... Скатился-таки в накатанное русло.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38956877
db2exc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Дима, вы что-то можете понять в постах ПГАнонима. Как по мне он несет какую-то нелепицу. К нему не обращаюсь, так как, если я не могу понять в постах ничего, то в его объяснениях и подавно, а коль вы с ним спорите, наверное все же понимаете о чем идет речь. Мне кажется здесь перемешаны понятия и термины.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957483
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymous,

опять ты бредятину несешь.

1. MS SQL с включенной версионностью является версионником. Без - блокировочником.

2. при сериализуемых транзакциях отсутствует понятие "блокировочности" или "версионности". Нафига ты тут про сериализацию вталкиваешь - непонятно.

3. какие нафиг "протоколы изоляции" для версионника? какие там еще блокировки, тем более двухфазные? Версионность придумана в 1974 году чтобы не было блокировок.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957600
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvPgSQLAnonymous,
опять ты бредятину несешь.

Да нет, только ты.

kdv1. MS SQL с включенной версионностью является версионником. Без - блокировочником.

А почему?

kdv2. при сериализуемых транзакциях отсутствует понятие "блокировочности" или "версионности". Нафига ты тут про сериализацию вталкиваешь - непонятно.

Отсутствует только в твоей голове. Ещё раз, есть протоколы изоляции для блокировочника (SS2PL) и для версионника (SSI).

kdv3. какие нафиг "протоколы изоляции" для версионника? какие там еще блокировки, тем более двухфазные? Версионность придумана в 1974 году чтобы не было блокировок.
Я же эти протоколы даже указал , ты читать умеешь? Обычные блокировки для UPDATE-ов, ты не знал? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957635
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИ вообще, у меня есть другой вопрос к аудитории (по определениям): как отличить блокировочник от версионника? ;)
Трудно с этими жаргонизмами.
1. Есть БД с полным набором блокировок.
2. Есть БД с возможностью работы с несколькими версиями одних и тех же данных (например на разные моменты времени).
Собственно сами по себе эти понятия не являются антагонистами.
Эти методы можно использовать для обеспечения изоляции транзакций. Соответственно если используется 1 подход, то называем блокировочник. Если второй - версионник. Если третий - ни то ни сё.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957655
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топикстартеру рекомендую почитать хорошую инженерную статью, где уже все давно разложено:

SQLPERFOMANCE.com:The SNAPSHOT Isolation Level
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957702
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousОбычные блокировки для UPDATE-ов, ты не знал? ;)
я не знаю, как там у PosgreSQL, но у InterBase и Firebird нет никаких "блокировок для UPDATE".
ты бы лучше почитал, хоть что-нибудь, как версионность организована, и где в блокировочнике блокировки возникают.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957812
kdvPgSQLAnonymousОбычные блокировки для UPDATE-ов, ты не знал? ;)
я не знаю, как там у PosgreSQL, но у InterBase и Firebird нет никаких "блокировок для UPDATE".
ты бы лучше почитал, хоть что-нибудь, как версионность организована, и где в блокировочнике блокировки возникают.
осторожно интересуюсь за интербейс

простите, а если в 5-ти транзакциях я захочу изменить одну и ту же запись , в порядке 1.2.3.4.5, так и не заккомитив ни одну из.
то что у меня произойдет, и в каком случае ?
что будет происходить , когда я попытаюсь закоммитить например сразу 5-ю ?

приведите листинг, если не затруднит.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957827
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсьчто у меня произойдет, и в каком случае ?
Облом во всех случаях. "Lost updates" считаются недопустимыми.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957851
Dimitry Sibiryakov,

т.е. блокировок не будет, но облом произойдёт ?
а какими словесами и абстракциями он будет оформлен.


-- в пж просто тупо выстроится очередь (за блокировками), если в каждой последующей не пытаться специально сказать предварительное SELECT .... FOR UPDATE NOWAIT;

поэтому сказать commit в 5-ю просто не удастся-- она будет занята ожиданием.
единственно, куда можно будет сказать 1-й коммит -- это первая. Второй -- только во вторую. И т.д.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957858
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсьа какими словесами и абстракциями он будет оформлен.
update обломится с ошибкой "update conflict" либо сразу, либо после коммита первой
транзакции в зависимости от параметров транзакции (которых у Interbase гораздо больше чем
только уровень изоляции).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957870
Dimitry Sibiryakov,

а организовать примитивную очередь --- никак ?

ил всё же можно и по человечески ?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957882
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсьа организовать примитивную очередь --- никак ?
Interbase служит для хранения и обработки данных. Для организации очередей есть более
другой софт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957892
Dimitry Sibiryakovосторожно интересуюсьа организовать примитивную очередь --- никак ?
Interbase служит для хранения и обработки данных. Для организации очередей есть более
другой софт.


для чего мне нужна очередь на ресурс -- я вас вообще то не спрашивал.
спасибо.

так могу я организовать очередь на ресурс, если к примеру хочу согласованно обновлять "агрегатное" значение некой "суммирующей" таблички, не прерывая транзакции, по касательной наваривающие ту же строку ?

или в интербейс есть "более другие" [не надо вводить это в обыденность, это таки речевая ошибка светы из иваново] методы подсчета таких инкрементально навариваемых агрегатов ?

если есть -- то какие ? (факультативный интерес, да. к маргинальным технологиям, да.)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957897
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсьесли есть -- то какие ?
Например такие:
http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl=
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957917
Dimitry Sibiryakov,
смотрб на первый пост, и задаюсь вопросом -- а что. между подсчетом тотала в первом стейтменте и делетом -- никто не может вставить и закоммитить запись ?
почему ?

а если может -- то в тотал сумма не попадёт, а в делете (в стандартном read commited) -- очень может. Или у вас снепшот для всех стейтментов определен началом транзакции ? как уровень изоляции зовётся ?

-- т.е. я такое умею в пж в read commited, но я по суррогатному id удаляю. чтобы лишнего не хапнуть.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957923
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсь,

а какая проблема со снапшотом? Главное чтобы он долгим не был. И как раз хранимые агрегаты помогают в этом.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957928
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсьИли у вас снепшот для всех стейтментов определен началом
транзакции ? как уровень изоляции зовётся ?
Зовётся "concurency" и является умолчательным уровнем изоляции от начала времён.
Соответствует свежеизобретённому в MS "snapshot".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957929
Dimitry Sibiryakovосторожно интересуюсьесли есть -- то какие ?
Например такие:
http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl=

для неаддитивных агрегатов -- не взлетит.

печалька.

а я кое где люблю иметь неаддитивтные (неперестановочные) array-и в агрегатных полях -- в порядке денормализации, позволяющей хитромудрые поисковые индексы по разным комбинациям полей и выражений. в основном -- функциональные. Часто -- условные. Да и полей -- поболее одного
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957934
Симонов Денисосторожно интересуюсь,

а какая проблема со снапшотом? Главное чтобы он долгим не был. И как раз хранимые агрегаты помогают в этом.
до "repeatable read" я предпочитаю без нужды не подыматься, почти всегда можно и в "read commited" либо на суррогатах чеки, либо на служебных xmin/xmax выстроить.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957937
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсья кое где люблю иметь неаддитивтные (неперестановочные)
array-и в агрегатных полях -- в порядке денормализации, позволяющей хитромудрые поисковые
индексы по разным комбинациям полей и выражений
Но деталями ты, конечно же, не поделишься.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957944
Dimitry Sibiryakovосторожно интересуюсья кое где люблю иметь неаддитивтные (неперестановочные)
array-и в агрегатных полях -- в порядке денормализации, позволяющей хитромудрые поисковые
индексы по разным комбинациям полей и выражений
Но деталями ты, конечно же, не поделишься.

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

используется вынужденно, типа "поисковое матвью" под поисковые запросы, плохо ложащиеся на изначальную модель данных (запросы с учетом порядка операций по объекту -- и индексы -- по функциям, от порядка в т.ч.).
всё сделано хендджобом, т.к. матвью "из корбки" пока куцые.

скучная проза жызни одним словом.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957959
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldТопикстартеру рекомендую почитать хорошую инженерную статью, где уже все давно разложено:

SQLPERFOMANCE.com:The SNAPSHOT Isolation Level
Кстати да, статья хорошая.
Только про SSI там ничего, естественно, нет. Про него можно прочитать здесь https://wiki.postgresql.org/wiki/SSI и далее по ссылкам.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957968
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovосторожно интересуюсьа какими словесами и абстракциями он будет оформлен.
update обломится с ошибкой "update conflict" либо сразу, либо после коммита первой
транзакции в зависимости от параметров транзакции (которых у Interbase гораздо больше чем
только уровень изоляции).


А вот это вот "сразу" и ожидание "после коммита первой" за счёт чего достигается? ;)

Я вот тут что-то нашёл про Interbase:
When your transaction updates an existing row your transaction places a row level write lock on that row until the transaction ends. This prevents another transaction from updating the same row before your transaction either commits or rolls back. The lock resolution setting determines what happens to the other transaction when it tries to update a row that your transaction has locked.

По-моему, lock и ожидание --- это блокировка.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38957984
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА вот это вот "сразу" и ожидание "после коммита первой" за счёт чего
достигается? ;)
За счёт параметров транзакции wait/nowait.

PgSQLAnonymousЯ вот тут что-то нашёл про Interbase:
Где нашёл?

PgSQLAnonymousПо-моему, lock и ожидание --- это блокировка.

Да. Но эта блокировка не относится ни к строкам, ни к таблицам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958004
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousА вот это вот "сразу" и ожидание "после коммита первой" за счёт чего
достигается? ;)
За счёт параметров транзакции wait/nowait.

Я имел в виду --- за счёт какого механизма?

Dimitry SibiryakovГде нашёл?


http://conferences.embarcadero.com/article/32280/

Dimitry SibiryakovДа. Но эта блокировка не относится ни к строкам, ни к таблицам.

В процитированном фрагменте 5 раз повторяется слово row и указан row level write lock.
То есть весь этот фрагмент неправильный?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958013
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЯ имел в виду --- за счёт какого механизма?
Семафоры и события.

PgSQLAnonymousТо есть весь этот фрагмент неправильный?
Правильный. Только упрощённый для понимания чайниками. Не расписывать же
последовательность действий на три страницы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958022
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousЯ имел в виду --- за счёт какого механизма?
Семафоры и события.

PgSQLAnonymousТо есть весь этот фрагмент неправильный?
Правильный. Только упрощённый для понимания чайниками. Не расписывать же
последовательность действий на три страницы.

вот токо не надо
переводим на человеческий:
"для понимания чайниками" == "годная правильная абстракция"
, которой оперируют правильные аффтары
, но не способны местные адепты жаренного питуха

или вы думаете, что роу-лок в других субд реализован как мужик с пудовым замком , сидящий прямо на секторе диска с записью ?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958031
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаили вы думаете, что роу-лок в других субд реализован как мужик с пудовым замком
, сидящий прямо на секторе диска с записью ?
Зачем думать, когда можно просто точно знать, что в лок-менеджере Interbase нет объекта
блокировки класса "запись"?.. "Страница", "транзакция", "таблица" и т.д. и т.п. - есть.
"Запись" - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958050
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

т.е. блокировки записей осуществляются помимо "официального" лок-манагера.
немного более другим механизмом
бываит.

но осуществляются же ?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958053
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттано осуществляются же ?
Нет, не осуществляются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958070
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

то, что у вас аспергер -- я давно понял

т.е. вас спрашивать ни о чём не имеет смысла
бывает
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958079
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттавас спрашивать ни о чём не имеет смысла
Ну, если мои ответы не укладываются в Ваше видение мира, это, конечно, достойный повод их
игнорировать. Зашоренность нынче в моде.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958120
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осторожно интересуюсьпростите, а если в 5-ти транзакциях я захочу изменить одну и ту же запись , в порядке 1.2.3.4.5, так и не заккомитив ни одну из.
то что у меня произойдет, и в каком случае ?
при чем тут коммиты? На втором же апдейте той же записи, что уже изменена в какой-то предыдущей транзакции, ты или получишь повисание в режиме wait, или получишь отлуп в режиме nowait с сообщением "update confict ...".
Тут вам не MS SQL с его inserted/updated/deleted.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958121
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттат.е. блокировки записей осуществляются помимо "официального" лок-манагера.
немного более другим механизмом
бываит.

но осуществляются же ?
вас, анонимов, не поймешь. Либо это чудик с PostgreSQL, который про его версионность вообще ничего не знает (или вообще про версионность), либо вы просто человек, впервые с версионностью столкнувшийся.

Популярно про версионность в InterBase/Firebird изложено в статьях на ibase.ru. Например, можно читать отсюда
http://www.ibase.ru/devinfo/mga.htm

а ответ на ваш вопрос -
если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то или выдается сообщение об обломе (в режиме nowait), или происходит повисание по wait с ожиданием результата завершения (commit/rollback) транзакции, которая успела обновить запись первой.

То есть, как таковых блокировок в версионнике нет вообще. Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки".
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958122
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттат.е. блокировки записей осуществляются помимо "официального" лок-манагера.
немного более другим механизмом
я еще добавлю, что по крайней мере в InterBase/Firebird "официальный лок-манагер" никак не виден на уровне записей.
Еще раз повторю, что в версионнике единственный конфликт - это обновление одной и той же записи из двух активных транзакций. Для этого, чтобы исключить все остальные конфликты между читателями и писателями, и придуман версионник.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958162
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvосторожно интересуюсьпростите, а если в 5-ти транзакциях я захочу изменить одну и ту же запись , в порядке 1.2.3.4.5, так и не заккомитив ни одну из.
то что у меня произойдет, и в каком случае ?
при чем тут коммиты? На втором же апдейте той же записи, что уже изменена в какой-то предыдущей транзакции, ты или получишь повисание в режиме wait, или получишь отлуп в режиме nowait с сообщением "update confict ...".
Тут вам не MS SQL с его inserted/updated/deleted.т.е. первая транзакция "модифицирует" (термин , устраивающий курильщика) ресурс "изменяемая запись" таким образом, что он становится недоступен второй транзакции.
-- вот это и есть "блокировка записи" здорового человека. (а не наличие записи в официальном некрологе блокировок)


вот ещё интересно, что это за ресурс такой -- "транзакция" ?
или уровень-то он --"тарнзакции", а лочатся вполне себе реальные ресурсы ?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958357
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv<...>
а ответ на ваш вопрос -
если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то или выдается сообщение об обломе (в режиме nowait), или происходит повисание по wait с ожиданием результата завершения (commit/rollback) транзакции, которая успела обновить запись первой.

<...> Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки".
ну вот это всё -- про реализацию "блокировки здорового человека" в FB.

немного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот.

ну да ладно, с вашей бандой аутистов разговаривать надо на языке конкретной реализации, про абстракцию или, не дай бог, инварианты -- это к "более другим" людям (из писателей доки интербейса).
да и к такому разговору -- про реализацию -- у вас вот только сибиряков, hvlad местами, и ещё какой-то перец из разрабов были готовы. Но и те через слово вставали в позу, лицом к мекке, и начинали правоверные мантры. а уж рядовые пользователи -- так те вполне ожидаемо не поддерживают каких либо интрефейсов к внешнему миру -- ни тебе об общеупотребительных абстракциях, ни о тонкостях реализации
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958403
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более
старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный
снепшот.
И такой механизм существует. Сравнивается номер текущей транзакции с номером транзакции,
создавшей версию. Оффигительно сложный такой "механизм": сравнение двух целых чисел на
больше/меньше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958456
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот.
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958599
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvэттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот.
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как?
У меня ощущение что InterBase пытается продемонстрировать какие-то преимущества путем переопределения терминов.

Например: "lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy."

Так вот, механизм, который "если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то..." по этому определению является lock-ом, потому что он "enforcing limits on access to a resource" и "designed to enforce a mutual exclusion concurrency control policy". Кстати, семафор --- это вид lock-а. Далее, "происходит повисание по wait с ожиданием результата" (ожидание lock-а) называется блокировкой .

Поэтому как это там называют разработчики InterBase --- это "их личные половые проблемы".
Может быть, не стоит передёргивать у людей на глазах?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958630
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovэттавас спрашивать ни о чём не имеет смысла
Ну, если мои ответы не укладываются в Ваше видение мира, это, конечно, достойный повод их
игнорировать. Зашоренность нынче в моде.

Просто Вы говорите на разных языках.
Он вас спрашивает про механизм запрета второй транзакцией создавать новую версию строки, если первая такую строку создала и не завершилась.
Вы говорите - у нас такого механизма нет, мы пользуемся семафорами.

P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958633
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

Следует читать не строку создала , а версию .
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958653
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.
Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же
спрошу: блокировкой чего именно это называется?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958665
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Блокировкой операции по созданию новой версии строки.
В общем случае в пределах бранча (в нотаци того же Oracle - workspace если я не путаю).

Естественно это отличается от блокировки на изменение текущего состояния строки. Просто версионник по другому текущее состояние строки не изменяет. Или он не версионник.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958676
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

И к стати там не одна блокировка. Порой версионники блокируют возможность чтения из измененной версии незавершенной транзакции.
Так же в этот момент может появляться блокировка на изменение структуры таблицы.
И куча еще каких.
Трудно себе представить систему с конкурирующими процессами без блокировок (не путать с ожиданиями).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958724
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousУ меня ощущение что InterBase пытается продемонстрировать какие-то преимущества путем переопределения терминов.

Например: "lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy."

во-первых, я бы не советовал увлекаться упомянутой статьей Билла Тодда, потому что там много всякой херни понаписано для тех, кто кроме блокировочников ничего не знает. И терминология там как раз для них. В том числе там в основном про "блокировки" идет информация про транзакции consistency, которые являются специфическими для ИБ-ФБ, и там уже действительно есть блокировки на таблицы целиком по чтению или записи (без версий).

Версия записи, создаваемая update или delete, не является "блокировкой", она является версией. Если никто эту запись обновлять больше не будет, то при commit эта созданная версия просто "превратится" в актуальную версию для всех остальных транзакций.
Эффект "блокировки" конкурирующего update - это ПРАВИЛО, по которому одна запись не может быть обновлена одновременно из двух конкурирующих транзакций.

В общем, как хотите.

Сергей АрсеньевПорой версионники блокируют возможность чтения из измененной версии незавершенной транзакции.
если транзакция создала версию (изменила и удалила запись), то никто кроме этой транзакции эту версию видеть не может (и не должен), в принципе, пока транзакция не завершится commit-ом. Этим обеспечивается примитивный уровень изолированности read committed.
Если версионник не блокирует чтение non-committed версии, то ... мы получаем уровень изолированности dirty read, смысл которого в версионнике не очень понятен.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958729
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv<>
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как?

Я уже писал когда-то , что как только мне войдёт в голову воспользоваться жаренным или его соплеменниками -- я перестану задавать глупые вопросы там, где можно кратенько rtfm.

[и начну во множестве иных случаев]

но вот пока найдена только одна причина думать в эту сторону (и очень много -- против).

т.ч. ничего, если я знающих людей поспрашиваю ?

Пусть даже иноязычных.

И да, вы правы -- я давно ничего не читаю сплошь. Только по диагоналям и квадратно--гнездовым.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958737
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.
Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же
спрошу: блокировкой чего именно это называется?

если мы теряем возможность работать с неким ресурсом, как с незатронутым -- то блокировкой этого ресурса.

в данном случае теряется возможность работать с записью. т.е. блокируется запись.

повторяю, на всякий случай, что блокировка -- это абстракция, а не пудовый замок, учтённый в некоем специально лежащем журнале. журнал и прочее -- моменты реализации. их может и не быть.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958744
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевПорой версионники блокируют возможность чтения из измененной версии
незавершенной транзакции.
Ещё раз: что в данном случае для Вас означает "блокируют"? Процесс, пытающийся прочитать
изменённую версию, повиснет на ожидании завершения конкурирующей транзакции? Нет, такого
не случается. Изменённые версии свободно читаются кем угодно. Только в result set они
никогда не попадают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958752
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv<>
если транзакция создала версию (изменила и удалила запись), то никто кроме этой транзакции эту версию видеть не может (и не должен), в принципе, пока транзакция не завершится commit-ом. Этим обеспечивается примитивный уровень изолированности read committed.
<>
ну как же , а движок птицы должен где-то наблюдать наличие блокировки "конфликта"

т.е. как минимум он (движок) -- видеть должен.


ditry read (опционально доступный по особой просьбе) мог бы привнести некоторые забавные возможности ["сообщения" между конкурентами -- в частности]. Но вот проблем в неокрепшие умы -- гораздо больше. Поэтому его естественно опасаться. А т.к. что-то опасное реализовывать ещё и лениво -- то его и не реализовывают.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958756
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
Не теряется. Запись по-прежнему можно свободно читать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958767
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
Не теряется. Запись по-прежнему можно свободно читать.
ага, движком.
но не клиентом.

или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту
тогда это становится интересным.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958776
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттав данном случае теряется возможность работать с записью. т.е. блокируется запись.
читать предыдущую версию записи в версионнике никто не запрещает.

эттат.е. как минимум он (движок) -- видеть должен.
разумеется, движок видит весь пакет версий, и определяет, какие версии может видеть конкретная транзакция.

эттаа движок птицы должен где-то наблюдать наличие блокировки "конфликта"
в смысле "понимать, что версия создана еще активной транзакцией, и другая транзакция обновить эту запись не может" - да. Но видите-ли, до момента конкурирующего update движок никаких "наличий блокировки "конфликта"" не видит, потому что в этот момент никаких конфликтов быть не может.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958782
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаDimitry Sibiryakovпропущено...

Не теряется. Запись по-прежнему можно свободно читать.
ага, движком.
но не клиентом.

или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту
тогда это становится интересным.

-- ах, да , я-то про версию -- читать



то что можно читать старую версию -- это естественно (её ж никто не лочил в версионнике)
то что нельзя писать в запись -- это потеря возможности работы с ресурсом
-- и именно это и есть блокировка записи (на запись, но не на чтение)

-- т.к. это очевидно козлу, а вы им явно не являетесь -- то дима,гоги,я детектед
и вообще, -- ну фуу.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958787
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаага, движком.
но не клиентом.
вот говорю - прочитайте мою статью. Нет, валяет дурака.

- транзакция 10 создает запись, делает commit
- транзакция 20 читает версию, созданную транзакцией 10.
- транзакция 30 обновляет запись, пока не завершается
- транзакция 20 продолжает спокойно читать версию, созданную транзакцией 10.
- транзакция 30 делает commit
- если транзакция 20 - snapshot, то она продолжает читать версию, созданную транзакцией 10.
- если транзакция 20 - read committed, то она читает версию, созданную транзакцией 30.

какая вам тут радость от того, что все это время движок читает все версии? Иначе и быть не может, на то он и движок, чтобы управлять всем этим.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958837
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
этта-- ах, да , я-то про версию -- читать
то что можно читать старую версию -- это естественно (её ж никто не лочил в
версионнике)
Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958894
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта-- идёт спор о неумении пользоваться общеупотребительными абстракциями.
на уровне видимости записей и уровней изолированности у версионника нет тех абстракций, которые есть у блокировочника (и наоборот). Поэтому применение этих самых абстракций не к месту вызывает впечатление, что человек чего-то не понимает.
update в версионнике как "блокировка" воспринимается только при конкурентном update. Вы, конечно, можете считать что "создание новой версии является накладыванием блокировки", это ваше право, особенно если вам так проще воспринимать внутренности версионника.

Иногда, кстати, отсутствие возможности блокировать запись в версионнике для некоторых прикладных случаев является проблемой. Об этом тоже есть статья
http://www.ibase.ru/devinfo/pslock.htm
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958967
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.
Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них,

Кот бы говорил. ;)
Dimitry Sibiryakovно всё же спрошу: блокировкой чего именно это называется?

Изменения записи, насколько я вижу.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958980
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИзменения записи, насколько я вижу.
То есть, ты утверждаешь, что второй/третий/четвёртый писатель будут ждать события
освобождения записи. Так?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959026
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :)
Да, в принципе можно, только все как-то привыкли к одноверсионной Вселенной. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959029
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousИзменения записи, насколько я вижу.
То есть, ты утверждаешь, что второй/третий/четвёртый писатель будут ждать события
освобождения записи. Так?

Хм, а разве нет (я напомню, мы обсуждаем вариант "происходит повисание по wait с ожиданием результата")?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959055
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousХм, а разве нет (я напомню, мы обсуждаем вариант "происходит
повисание по wait с ожиданием результата")?
Ну это ты мне скажи: "да, я именно это утверждаю" или "нет, я утверждаю совсем другое".
Мой телепатер не справляется это угадать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959119
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
этта-- ах, да , я-то про версию -- читать
то что можно читать старую версию -- это естественно (её ж никто не лочил в
версионнике)
Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже...

тебе написали уже -- запись блокируется "на запись".
ресурс для записи недоступен.

когда я говорю SELECT ...FOR UPDATE -- я блокирую запись
на запись
но читать её я могу сколько угодно.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959164
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousХм, а разве нет (я напомню, мы обсуждаем вариант "происходит
повисание по wait с ожиданием результата")?
Ну это ты мне скажи: "да, я именно это утверждаю" или "нет, я утверждаю совсем другое".
Мой телепатер не справляется это угадать.

Я утверждаю, что подчёркнутое --- это блокировка:

Dimitry Sibiryakovupdate обломится с ошибкой "update conflict" либо сразу, либо после коммита первой транзакции в зависимости от параметров транзакции


То впечатление, что в InterBase "второй/третий/четвёртый писатель будут ждать события освобождения записи", я вынес из постов в этой теме.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959171
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЯ утверждаю, что подчёркнутое --- это блокировка:
Ну тогда привет, КО, открывший для себя, что даже в версионниках писатели блокируют писателей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959182
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovпосле коммита первой транзакции
PgSQLAnonymousТо впечатление, что в InterBase "второй/третий/четвёртый писатель
будут ждать события освобождения записи", я вынес из постов в этой теме.
Хреновый у тебя выноситель впечатления, если он из слов "после коммита транзакции" вынес
"событие освобождения записи", ибо это две большие разницы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959193
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov<>
Хреновый у тебя выноситель впечатления, если он из слов "после коммита транзакции" вынес
"событие освобождения записи", ибо это две большие разницы.
ну при роллбеке же она таки освободится

а при коммите -- будет негодна из-за кривого базового уровня изоляции. освободится проброс исключений, а не запись-пись

а вот при человеческом рид--коммитеде была бы годна в дело, но здесь вам не тут...то было.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959194
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттану при роллбеке же она таки освободится
Запись, вообще-то, может освободиться (то есть исчезнет незакоммиченная версия) задолго до
конца транзакции.

эттаосвободится проброс исключений, а не запись-пись
Чо?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959216
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousЯ утверждаю, что подчёркнутое --- это блокировка:
Ну тогда привет, КО, открывший для себя, что даже в версионниках писатели блокируют писателей.


Надо же, а в теме я вот уже успел вычитать, что:

kdvя не знаю, как там у PosgreSQL, но у InterBase и Firebird нет никаких "блокировок для UPDATE".


kdvТо есть, как таковых блокировок в версионнике нет вообще. Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки".


Видно, не все это ещё открыли для себя. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959228
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovDimitry Sibiryakovпосле коммита первой транзакции
PgSQLAnonymousТо впечатление, что в InterBase "второй/третий/четвёртый писатель
будут ждать события освобождения записи", я вынес из постов в этой теме.
Хреновый у тебя выноситель впечатления, если он из слов "после коммита транзакции" вынес
"событие освобождения записи", ибо это две большие разницы.

Честно говоря, после того, как я прочитал про InterBase и увидел какие-то странные уровни изоляции
и отсутствие SERIALIZABLE, разбираться в его особенностях мне стало как-то неинтересно...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959321
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousстранные уровни изоляции
например?

PgSQLAnonymousотсутствие SERIALIZABLE
а кому-нибудь в жизни потом эта туфля пригодилась? (с)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959323
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrа кому-нибудь в жизни потом эта туфля пригодилась? (с)Тем более, что она есть.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959337
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrPgSQLAnonymousстранные уровни изоляции
например?

PgSQLAnonymousотсутствие SERIALIZABLE
а кому-нибудь в жизни потом эта туфля пригодилась? (с)
только эта туфля и рабочая
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959390
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitrPgSQLAnonymousстранные уровни изоляции
например?

READ COMMITTED RECORD_VERSION
READ COMMITTED NO RECORD_VERSION
SNAPSHOT
SNAPSHOT TABLE STABILITY

dimitrPgSQLAnonymousотсутствие SERIALIZABLE
а кому-нибудь в жизни потом эта туфля пригодилась? (с)
Естественно.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959391
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladdimitrа кому-нибудь в жизни потом эта туфля пригодилась? (с)Тем более, что она есть.
Как-то не заметил, можете показать?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959431
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymoushvladТем более, что она есть.
Как-то не заметил, можете показать?SNAPSHOT TABLE STABILITY
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959441
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousстранные уровни изоляции
...
SNAPSHOT
какой тонкий троллинг...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959458
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladSNAPSHOT TABLE STABILITY
ну, справедливости ради, это скорее инструмент для ручной эмуляции SERIALIZABLE. Кому надо автоматически да для ad-hoc запросов, то в сад.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959481
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrhvladSNAPSHOT TABLE STABILITY
ну, справедливости ради, это скорее инструмент для ручной эмуляции SERIALIZABLE. Кому надо автоматически да для ad-hoc запросов, то в сад.Ты говоришь о явном резервировании таблиц.
Которое указывается в предложении RESERVING.
А SNAPSHOT TABLE STABILITY как раз и есть автоматическое резервирование таблицы по ходу выполнения DML.

В Борландовской документации это описано вот так:
ApiGuideisc_tpb_consistency Table-locking transaction model. This mode is serializable.isc_tpb_consistency - это и есть SNAPSHOT TABLE STABILITY
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959503
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladPgSQLAnonymousпропущено...
Как-то не заметил, можете показать?SNAPSHOT TABLE STABILITY
Вот тут я прямо заинтересовался. Доказательства-то этому есть?


Вы можете показать, что будет, если сделать примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
-- Подготовка
-- Таблицы, чтобы взять SNAPSHOT-ы.
-- Они нужны, если в InterBase SNAPSHOT начинается не с BEGIN TRANSACTION,
-- а с первого запроса (как во многих других СУБД).
CREATE TABLE N1(n INT)
INSERT INTO N1 VALUES(1)
CREATE TABLE N2(n INT)
INSERT INTO N2 VALUES(1)
-- Нужные таблицы:
CREATE TABLE A(n INT)
INSERT INTO A VALUES(0)
CREATE TABLE B(n INT)
INSERT INTO B VALUES(0)
-- Теперь две сессии, T1 и T2.
-- В каждой нужно установить уровень изоляции SNAPSHOT TABLE STABILITY так,
-- чтобы он действовал в дальнейших транзакциях, или же устанавливать его
-- внутри каждой транзакции (не знаю, как в InterBase делается)
----------------------------------------------
-- Далее тест:
-- T1:
BEGIN TRANSACTION
SELECT * FROM N1
-- T2:
BEGIN TRANSACTION
SELECT * FROM N2
-- T1:
INSERT INTO B
SELECT COUNT(*)
  FROM A
COMMIT
-- T2:
INSERT INTO A
SELECT COUNT(*)
  FROM B
COMMIT


Какие данные теперь в таблицах A и B?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959543
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladавтоматическое резервирование таблицы по ходу выполнения DML
я как-то не уверен, что это можно назвать serializable, чтобы там борманы не писали на этот счет. Но возможно я слишком строг :-) Насколько я понимаю, без RESERVE работает оптимистический подход ("резервирование по ходу"), который может приводить к ошибкам сериализации в рантайме (хотя бы вследствие встречной блокировки A->B и B->A). А с RESERVE (упреждающие блокировки при старте транзакции) можно обеспечить бесконфликтную (читай: последовательную) работу конкурентов, но придется поработать ручками. Поправь меня, если ошибаюсь.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959549
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymous,
у вас ус отклеился

у вас там таблички N непришейкобылехвост. [стюдент рука--лицо ]

и да -- в пж при сериалайзебл будет откат второй
Код: plaintext
1.
2.
ОШИБКА:  не удалось сериализовать доступ из-за зависимостей чтения/записи между транзакциями
DETAIL:  Reason code: Canceled on identification as a pivot, during write.
HINT:  Транзакция может завершиться успешно при следующей попытке.

а при repeatable read -- количество во второй будет соответствовать снепшоту при старте, а не нормальному, при read commited текущему состоянию.

резюме -- те, кто не умеют писать серверную логику [полк их надысь пополнился випросом] -- хотят сериалазебла, чтобы клиентская реализация чисто серверного функционала хоть как-то ползала.

кто умеет -- пишут инкрементальную, а не агрегатную логику на сервере, и требуют именно readcommited-а, а не маргинальных снапшотов и т.п.

все маргинальные уровни изоляции требуются только для развесистых агрегатов типа отчетов по плохо связанным наборам. -- чтобы синхронизировать снапшоты отдельных расчётов
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959568
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВот тут я прямо заинтересовался. Доказательства-то этому есть?Моего слова не достаточно ?
Сессия 1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
firebird>isql localhost:c:\temp\a.fdb
Database:  localhost:c:\temp\a.fdb
SQL> CREATE TABLE N1(n INT);
SQL> CREATE TABLE N2(n INT);
SQL> CREATE TABLE A(n INT);
SQL> CREATE TABLE B(n INT);
SQL>
SQL> INSERT INTO N1 VALUES(1);
SQL> INSERT INTO N2 VALUES(1);
SQL> INSERT INTO A VALUES(0);
SQL> INSERT INTO B VALUES(0);
SQL> COMMIT;
SQL>


Сессия 2
Код: sql
1.
isql localhost:c:\temp\a.fdb


Сессия 1
Код: sql
1.
2.
3.
4.
5.
6.
SQL> SET TRANSACTION SNAPSHOT TABLE STABILITY;
SQL> SELECT * FROM N1;

           N
============
           1


Сессия 2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> SET TRANSACTION SNAPSHOT TABLE STABILITY;
Commit current transaction (y/n)?y
Committing.
SQL> SELECT * FROM N2;

           N
============
           1


Сессия 1
Код: sql
1.
2.
3.
4.
SQL> INSERT INTO B
CON> SELECT COUNT(*)
CON>   FROM A;
SQL> COMMIT;


Сессия 2
Код: sql
1.
2.
3.
4.
SQL> INSERT INTO A
CON> SELECT COUNT(*)
CON>   FROM B;
SQL> COMMIT;



Сессия 1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> SELECT * FROM A;

           N
============
           0
           1

SQL> SELECT * FROM B;

           N
============
           0
           1

...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959575
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrПоправь меня, если ошибаюсь.Не ошибаешься. А чем это противоречит сериализации ?
Или ты имеешь в виду, что в теории serializable тр-ции не могут получить ошибки из-за конкурентов ?
Ну, тогда - да, нет в FB такого уровня изоляции. А где есть ?
И - да, "вручную" (с явным резервированием) его таки можно достичь. А у других как ?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959586
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladНу, тогда - да, нет в FB такого уровня изоляции. А где есть ?

MS SQL.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959615
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladPgSQLAnonymousВот тут я прямо заинтересовался. Доказательства-то этому есть?Моего слова не достаточно ?

Конечно, недостаточно. Вы сами-то посмотрели на результат? ;)
Вот из этого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> SELECT * FROM A;
           N
============
           0
           1
SQL> SELECT * FROM B;
           N
============
           0
           1



Следует, что этот SNAPSHOT TABLE STABILITY ни разу не SERIALIZABLE.
Получиться-то должно было так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> SELECT * FROM A;
           N
============
           0
           1
SQL> SELECT * FROM B;
           N
============
           0
           2


или так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> SELECT * FROM A;
           N
============
           0
           2
SQL> SELECT * FROM B;
           N
============
           0
           1



Мораль: если производитель InterBase где-то утверждает, что "SNAPSHOT TABLE STABILITY" = SERIALIZABLE, это очередное переопределение терминов.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959625
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаPgSQLAnonymous,
у вас ус отклеился

у вас там таблички N непришейкобылехвост. [стюдент рука--лицо ]

Там написано , зачем они нужны, стюдент. ;)

эттаи да -- в пж при сериалайзебл будет откат второй

И это правильно.

эттарезюме -- те, кто не умеют писать серверную логику [полк их надысь пополнился випросом] -- хотят сериалазебла, чтобы клиентская реализация чисто серверного функционала хоть как-то ползала.

кто умеет -- пишут инкрементальную, а не агрегатную логику на сервере, и требуют именно readcommited-а, а не маргинальных снапшотов и т.п.

все маргинальные уровни изоляции требуются только для развесистых агрегатов типа отчетов по плохо связанным наборам. -- чтобы синхронизировать снапшоты отдельных расчётов


А я говорю, что всё это болтовня, и аргументы я уже приводил в других ветках. Реальные контраргументы будут?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959630
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymous,

так, как хочется стюденту, "должно быть" при read commited
а при serializable д.б. ошибка изоляции, как оно и происходит в пж


рука--лицо, сюдент, рука--лицо

а птичка тут продемонстрировала банальный repeatable read
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959636
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаPgSQLAnonymous,
так, как хочется стюденту, "должно быть" при read commited
а при serializable д.б. ошибка изоляции, как оно и происходит в пж

С чего ты взял, что мне так хочется?! Ты вообще читать умеешь, стюдент?!
Так я повторю так, чтоб ты увидел:

PgSQLAnonymous
И это правильно.



эттаа птичка тут продемонстрировала банальный repeatable read
Таки да. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959640
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymous<>
А я говорю, что всё это болтовня, и аргументы я уже приводил в других ветках. Реальные контраргументы будут?откат 100500 конкурентов выше по ветке

обусловленный 2--мя ошибками "архитектора" -- кривым дизайном (с пересекающимся в конкурентной работе с аггрегирующими сущностями) и неверным уровнем изоляции (который с таким дизайном вообще не ползает, не то, чтобы трепыхаться). я этот дизайн ещё могу оживить. Будет ползать с очередями. Хотя он и левый. Вы -- никогда.

и это всё е-болтовня, что ты якобы что-то где-то как-то приводил. ибо не по сеньке шапка, стюдент.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959641
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousПолучиться-то должно было так:Читаем что такое снапшот. 3 раза каждый день на ночь.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959664
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladPgSQLAnonymousПолучиться-то должно было так:Читаем что такое снапшот. 3 раза каждый день на ночь.

Обожемой, ты же даже не понял.
Читаем, что такое SERIALIZABLE, хоть 3 раза каждый день на ночь.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959676
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot этта]PgSQLAnonymous<>
обусловленный 2--мя ошибками "архитектора" -- кривым дизайном (с пересекающимся в конкурентной работе с аггрегирующими сущностями) и неверным уровнем изоляции (который с таким дизайном вообще не ползает, не то, чтобы трепыхаться). я этот дизайн ещё могу оживить. Будет ползать с очередями. Хотя он и левый. Вы -- никогда.

А покажи-ка "правый" дизайн для этой задачи, умник. Болтать --- не мешки таскать.


эттаи это всё е-болтовня, что ты якобы что-то где-то как-то приводил. ибо не по сеньке шапка, стюдент.
А это ты попросту соврал. Кому надо --- найдёт, почитает.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959679
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаоткат 100500 конкурентов выше по ветке
Считаем на пальцах: пусть транзакция у анонимуса идёт 10 минут (иначе 100500 конкурентов
ну никак не накопятся), пусть он заставил из сериализоваться. Тогда последний конкурент
дождётся своей очереди на получение денег аккурат так через 10050000 минут. Умрёт от
старости он, пожалуй, гораздо раньше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959693
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinhvladНу, тогда - да, нет в FB такого уровня изоляции. А где есть ?

MS SQL.Т.е. там не будет дедлока при "перекрёстных" writes ? Позвольте не поверить :)
Или мы снова говорим о разном.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959698
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousОбожемой, ты же даже не понял. Ты таки не видишь в своём собственном примере тупой ошибки с расстановкой коммитов ? Обожемой (ц)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959711
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladPgSQLAnonymousОбожемой, ты же даже не понял. Ты таки не видишь в своём собственном примере тупой ошибки с расстановкой коммитов ? Обожемой (ц)
Никакой ошибки там нет . Это провоцирующий тест на сериализацию, который InterBase провалил .
Что будет в настоящей ACID-СУБД, тебе уже показали на примере PostgreSQL. Я бы посоветовал перечитывать, пока не дойдёт.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959721
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladpkarklinпропущено...
MS SQL.Т.е. там не будет дедлока при "перекрёстных" writes ? Позвольте не поверить :)
Или мы снова говорим о разном.
Да (кажется), там будет DEADLOCK, и это, опять-таки, правильно .
А InterBase просто тихо покоцал данные, и это то, чего не должно быть.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959732
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousв настоящей ACID-СУБД
оставьте этот пафос, ей богу. Поддержка SERIALIZABLE и ACID вещи ортогональные. Или может вспомним, что ваша "настоящая" СУБД до 2011 года была "ненастоящей" и вовсю баловалась "подменой терминов"?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959742
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymous,

последняя попытка тебе образумиться:
- в момент старта каждой тр-ции в таблицах A и B было по 1-ой записи
- соотвественно инсерты видели по одной записи и позже вставили единицы, ибо это снапшот - он не может видеть
чужих изменений по-определению
- т.к. ты коммитишь первый инсерт до того, как выполнить второй инсерт, то конкуренции в твоём тесте нет вообще, ноль
- если сделать insert (1), insert (2), commit(1), commit (2), то insert (2) будет ждать commit(1) и, есс-но, вставит всё равно 1,
ибо в момент старта тр-ции (2) в таблице была 1 запись

PS То, что ты выдаёшь за единственно правильное, в IB\FB достигается с READ COMMITTED + RESERVING, но это я тут жевать не намерен.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959749
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitrPgSQLAnonymousв настоящей ACID-СУБД
оставьте этот пафос, ей богу. Поддержка SERIALIZABLE и ACID вещи ортогональные.

Ничего подобного. Поддержка SERIALIZABLE --- это обязательный компонент ACID, потому что он обеспечивает свойство ISOLATION.

dimitrИли может вспомним, что ваша "настоящая" СУБД до 2011 года была "ненастоящей" и вовсю баловалась "подменой терминов"?
Да была, да, баловалась. Я так подозреваю, что это было тупо содрано с некоторой СУБД, на которую PostgreSQL пытался быть похожим.
И что из того? Некоторые-то до сих пор "ненастоящие" и балуются.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959754
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousПоддержка SERIALIZABLE --- это _обязательный_ компонент ACID, потому
что он обеспечивает свойство ISOLATION.
А вот нефиг читать комиксы в сокращённом варианте. Читай полную статью:
http://en.wikipedia.org/wiki/Isolation_(database_systems)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959756
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladPgSQLAnonymous,

последняя попытка тебе образумиться:
- в момент старта каждой тр-ции в таблицах A и B было по 1-ой записи
- соотвественно инсерты видели по одной записи и позже вставили единицы, ибо это снапшот - он не может видеть
чужих изменений по-определению
- т.к. ты коммитишь первый инсерт до того, как выполнить второй инсерт, то конкуренции в твоём тесте нет вообще, ноль
- если сделать insert (1), insert (2), commit(1), commit (2), то insert (2) будет ждать commit(1) и, есс-но, вставит всё равно 1,
ибо в момент старта тр-ции (2) в таблице была 1 запись

PS То, что ты выдаёшь за единственно правильное, в IB\FB достигается с READ COMMITTED + RESERVING, но это я тут жевать не намерен.
Последняя попытка тебе образумиться: ты утверждал, что этот "SNAPSHOT TABLE STABILITY" --- это SERIALIZABLE.
В SERIALIZABLE должен был получиться один из двух указанных результатов. Тест показал, что это не так . Следовательно, "SNAPSHOT TABLE STABILITY" --- это не SERIALIZABLE , и все твои объяснения к делу не относятся.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959762
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттаоткат 100500 конкурентов выше по ветке
Считаем на пальцах: пусть транзакция у анонимуса идёт 10 минут (иначе 100500 конкурентов
ну никак не накопятся), пусть он заставил из сериализоваться. Тогда последний конкурент
дождётся своей очереди на получение денег аккурат так через 10050000 минут. Умрёт от
старости он, пожалуй, гораздо раньше.

То есть ссылки на статистику NASDAQ и объяснения ты просто проигнорировал (потому что в твою картину мира они не укладываются)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959767
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousТо есть ссылки на статистику NASDAQ и объяснения ты просто
проигнорировал (потому что в твою картину мира они не укладываются)?
Я их проигнорировал, поскольку во-первых, ты их не привёл, а во-вторых, там транзакции не
длятся по 10 минут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959772
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousПоддержка SERIALIZABLE --- это _обязательный_ компонент ACID, потому
что он обеспечивает свойство ISOLATION.
А вот нефиг читать комиксы в сокращённом варианте. Читай полную статью:
http://en.wikipedia.org/wiki/Isolation_(database_systems)

О, вот и ссылки на мурзилку появились. ;) Кстати, где ты там это вычитал?
Если тебе так нравится этот журнал, я оттуда поцитирую http://en.wikipedia.org/wiki/ACID :
The isolation property ensures that the concurrent execution of transactions results in a system state
that would be obtained if transactions were executed serially, i.e., one after the other.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959777
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то вы тут разошлись, 11 страниц для такого простого вопроса многовато...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959778
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЯ их проигнорировал, поскольку во-первых, ты их не привёл, а во-вторых, там транзакции не длятся по 10 минут.


Во-первых:
PgSQLAnonymousКороче говоря, в некоторых условиях у достаточно крупного брокера тысячи транзакций могут пересечься.
Или все проблемы с конкурентным доступом нужно решать их отрицанием? ;)

Кстати, вот можно оценить объёмы транзакций на бирже: http://www.nasdaqtrader.com/Trader.aspx?id=DailyMarketSummary

И это только сделки, заявок (которые используются в моём примере) за день делается гораздо больше.

Во-вторых, в этом примере ни одна транзакция не длится по 10 минут.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959780
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВо-вторых, в этом примере ни одна транзакция не длится по 10
минут.
А теперь берём цифры по ссылке, делим количество сделок на количество брокеров, а потом на
длину рабочего для и получаем 38 сделок в минуту на брокера. Где там 100500 откатов?

Кстати, строгого контроля овердрафта там тоже нет, так что счёт брокера вообще не является
конкурентным ресурсом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959804
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladMS SQL.Т.е. там не будет дедлока при "перекрёстных" writes ? Позвольте не поверить :)
Или мы снова говорим о разном.[/quot]

Казалось бы, причем здесь SERIALIZABLE TIL?!
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959811
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousВо-вторых, в этом примере ни одна транзакция не длится по 10
минут.
А теперь берём цифры по ссылке, делим количество сделок на количество брокеров, а потом на
длину рабочего для и получаем 38 сделок в минуту на брокера. Где там 100500 откатов?

Попробую в третий раз:
PgSQLAnonymousИ это только сделки, заявок (которые используются в моём примере) за день делается гораздо больше.


Dimitry SibiryakovКстати, строгого контроля овердрафта там тоже нет, так что счёт брокера вообще не является
конкурентным ресурсом.

Почему ты в этом уверен?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959830
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinКазалось бы, причем здесь SERIALIZABLE TIL?!
При том, что, согласно ПГанонимусу, он сериализует транзакции, что делает невозможным
конфликты и дедлоки в принципе.

PgSQLAnonymousПочему ты в этом уверен?
Потому что так работают все биржи. Баланс контролируется только по закрытию торгов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959841
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovpkarklinКазалось бы, причем здесь SERIALIZABLE TIL?!
При том, что, согласно ПГанонимусу, он сериализует транзакции, что делает невозможным
конфликты и дедлоки в принципе.
Что ты несёшь?! Я никогда такого не говорил! Как раз конфликты и дедлоки при сериализации неизбежны в некоторых ситуациях.

Dimitry SibiryakovPgSQLAnonymousПочему ты в этом уверен?
Потому что так работают все биржи. Баланс контролируется только по закрытию торгов.

А биржа тут причём? Речь идёт об обработке у брокера .
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959844
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

авторПри том, что, согласно ПГанонимусу, он сериализует транзакции, что делает невозможным
конфликты и дедлоки в принципе.

Видимо я не внимательно читал топик, что не увидел такой трактовки сериализации от указанного автора.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959853
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЧто ты несёшь?! Я никогда такого не говорил!
А вот это тогда чьё?

PgSQLAnonymous Если тебе так нравится этот журнал, я оттуда поцитирую
http://en.wikipedia.org/wiki/ACID :
The isolation property ensures that the concurrent execution of transactions results
in a system state that would be obtained if transactions were executed serially, i.e., one
after the other.

Какие могут быть дедлоки при выполнении транзакций "one after the other"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959856
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPgSQLAnonymousЧто ты несёшь?! Я никогда такого не говорил!
А вот это тогда чьё?

PgSQLAnonymous Если тебе так нравится этот журнал, я оттуда поцитирую
http://en.wikipedia.org/wiki/ACID :
пропущено...


Какие могут быть дедлоки при выполнении транзакций "one after the other"?..


А зачем сюда притаскивать за уши дедлоки, если здесь описан результат применения SERIALIZABLE - после выполнения двух транзакций хоть как последовательно, так и параллельно, система имеет одно и тоже конечное состояние?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959864
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv11 страниц для такого простого вопроса многовато...
да тут нам serializable впаривают как панацею.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959869
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousЧто ты несёшь?! Я никогда такого не говорил!
А вот это тогда чьё?

PgSQLAnonymous Если тебе так нравится этот журнал, я оттуда поцитирую
http://en.wikipedia.org/wiki/ACID :
пропущено...


Какие могут быть дедлоки при выполнении транзакций "one after the other"?..

Да обычные, потому что не "выполнении транзакций one after the other", а would be obtained if transactions were executed serially. То есть идентичное состояние было бы получено, если бы транзакции выполнялись последовательно, одна за другой.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959871
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvMasterZiv11 страниц для такого простого вопроса многовато...
да тут нам serializable впаривают как панацею.
Потому что он ею и является, сюрприз. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959874
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousДа обычные, потому что не "выполнении транзакций one after the
other", а would be obtained if transactions were executed serially. То есть идентичное
состояние было бы получено, если бы транзакции выполнялись последовательно, одна за
другой.
Ну так я повторяю вопрос: как можно получить состояние, идентичное дэдлоку при
последовательном выполнении транзакций?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959876
зз топ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymousЕсли тебе так нравится этот журнал, я оттуда поцитирую http://en.wikipedia.org/wiki/ACID :
The isolation property ensures that the concurrent execution of transactions results in a system state
that would be obtained if transactions were executed serially, i.e., one after the other.

Цитата приведена не полностью. Там дальше еще есть:
Depending on concurrency control method (i.e. if it uses strict - as opposed to relaxed - serializability), the effects of an incomplete transaction might not even be visible to another transaction.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959904
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PgSQLAnonymous,

тебе с порога было написано: вместо пересекающихся по конкурентам сущностей-- "агрегатов" Счет [Клиента|Брокера], должны быть индивидуальные Сущности "СчетКлиентаУБрокера". точка.

никаких агрегатных [по всем клиентам] сущностей. Пока можно агрегировать "счет брокера" в моменте. Как только уже нельзя -- долго агрегировать -- так начинаем чесать репу.

чесать репувыход 1 -- организовать очередь на агрегирующем ресурсе, с инкрементальным навариванием "ресурса" [read commited only]. Ограниченно годен -- при большом числе конкурентов и большой длине "слайса очереди" (т.е. средней протяженности от захвата ресурса до коммита, отдающего очередь) встанет колом.

выход 2 -- не иметь уникального агрегирующего ресурса "СчетБрокера", а иметь "размазанный, периодически сворачиваемый" "многострочный" агрегат , нужно следить за видимостями при свёртках (можно сворачивать и в снепшоте (repeatable-read-е), как показывал сибиряков, можно сворачивать в commited-е -- по всякому, в pg -- в т.ч. через cte -- у которого единый снепшот [WITH del AS (DELETE ... RETURNING...) ]. а вот с сериалайзебл будет велик шанс облома сериализации. патамушто гладиолус).

и т.п.


простите отвлёкся работкой, забыл запостить
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959971
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousДа обычные, потому что не "выполнении транзакций one after the
other", а would be obtained if transactions were executed serially. То есть идентичное
состояние было бы получено, если бы транзакции выполнялись последовательно, одна за
другой.
Ну так я повторяю вопрос: как можно получить состояние, идентичное дэдлоку при
последовательном выполнении транзакций?

А нет никакого состояния базы, "идентичного дэдлоку". ;)
База переходит из одного консистентного состояния в другое только по COMMIT-ам транзакций.
У меня ощущение, что пересказываю базовые вещи.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959979
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА нет никакого состояния базы, "идентичного дэдлоку". ;)
Отсюда следует, что транзакции, впадающие в дэдлок - не serializable.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959991
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

нет, просто понятие "состояние базы" в контексте про сериализацию -- это некая обсракция [~~~#состояние данных#], отличная от физического понятия "состояние базы и её СУБД", которым пытаетесь оперировать вы

оперируйте пожалуйста обсракциями здорового человека
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960004
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаоперируйте пожалуйста обсракциями здорового человека
Да нет проблем: две параллельные транзакции, впавшие в дэдлок, не могут быть закоммичены.
Следовательно, они не могут привести БД в состояние, в которое они привели бы её, если бы
выполнялись последовательно. Следовательно, такие транзакции - не serializable.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960032
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттаоперируйте пожалуйста обсракциями здорового человека
Да нет проблем: две параллельные транзакции, впавшие в дэдлок, не могут быть закоммичены.
Следовательно, они не могут привести БД в состояние, в которое они привели бы её, если бы
выполнялись последовательно. Следовательно, такие транзакции - не serializable.
не-а
вы оперируете не обсракцией здорового человек "транзакция"
а обсракцией курильщика "транзакция в конкретном конкурентном окружении"

они (как, объекты вне окружения, self) таки приводятся в чувство процедурой снятия одной из 2-х и выстраиванием её в хвост к закоммиченной. т.е. serializable.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960036
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаони (как, объекты вне окружения, self) таки приводятся в чувство процедурой
снятия одной из 2-х и выстраиванием её в хвост к закоммиченной. т.е. serializable.
А снимать её, такую всю без окружения, а потом ещё и повторять полностью от начала - кто
будет?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960039
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттаони (как, объекты вне окружения, self) таки приводятся в чувство процедурой
снятия одной из 2-х и выстраиванием её в хвост к закоммиченной. т.е. serializable.
А снимать её, такую всю без окружения, а потом ещё и повторять полностью от начала - кто
будет?..


"PgSQLAnonymous" же
ему оно упало -- вот пусть и колупается
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960048
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ps а снимет-то -- пж
снимет легко
у него это в serializable не заржавеет

ононимусу только повторять придется.

и так --100499 раз в 100500/2 в среднем транзакциях
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960074
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаPgSQLAnonymous,
у вас ус отклеился

у вас там таблички N непришейкобылехвост. [стюдент рука--лицо ]

и да -- в пж при сериалайзебл будет откат второй
Код: plaintext
1.
2.
ОШИБКА:  не удалось сериализовать доступ из-за зависимостей чтения/записи между транзакциями
DETAIL:  Reason code: Canceled on identification as a pivot, during write.
HINT:  Транзакция может завершиться успешно при следующей попытке.

а при repeatable read -- количество во второй будет соответствовать снепшоту при старте, а не нормальному, при read commited текущему состоянию.

резюме -- те, кто не умеют писать серверную логику [полк их надысь пополнился випросом] -- хотят сериалазебла, чтобы клиентская реализация чисто серверного функционала хоть как-то ползала.

кто умеет -- пишут инкрементальную, а не агрегатную логику на сервере, и требуют именно readcommited-а, а не маргинальных снапшотов и т.п.

все маргинальные уровни изоляции требуются только для развесистых агрегатов типа отчетов по плохо связанным наборам. -- чтобы синхронизировать снапшоты отдельных расчётов

клиентов много, пишущие их разной квалификации и т.д.
создание и управление "золотой записи" (как в МДМ) святой долг СУБД, но для этого СУБД должна себе представлять, что такое "золотая запись" и какие правила ее формирования
имеющегося набора всяких чахлых констрейнтов и т.д. инструментария не хватает для интерпретации данных со стороны СУБД
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960126
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИ, кстати, знай добавляй RAM и "будет расти iops-ы". ;)
это как? можно поподробнее?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960131
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаDimitry Sibiryakovпропущено...

А снимать её, такую всю без окружения, а потом ещё и повторять полностью от начала - кто
будет?..


"PgSQLAnonymous" же
ему оно упало -- вот пусть и колупается
Ну а кто же ещё будет повторять-то? ;) Естественно, клиент.
Более того, каждый клиент в норме обязан быть готов это сделать.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960162
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЕстественно, клиент.
Более того, каждый клиент в норме обязан быть готов это сделать.

Ага, это мне напомнило времена, когда тут ещё появлялись Фокспрошники: "нашей СУБД не
нужны транзакции, мы легко эмулируем их с помощью временных таблиц".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960164
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInfernal V. RavenНу так обоснуйте.
Обосновываю: существует всего два вероятных исхода: "блондинка встретит динозавра" и
"блондинка не встретит динозавра". Согласно теории вероятности, вероятность каждого
отдельного исхода равна единице, делённой на число возможных исходов. Следовательно, у
блондинки есть вероятность 50% на встречу с динозавром. Сможете опровергнуть?


так это ведь только в самом общем случае при отсутствии информации о популяции блондинок и динозавров
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960192
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyock2Dimitry Sibiryakovпропущено...

Обосновываю: существует всего два вероятных исхода: "блондинка встретит динозавра" и
"блондинка не встретит динозавра". Согласно теории вероятности, вероятность каждого
отдельного исхода равна единице, делённой на число возможных исходов. Следовательно, у
блондинки есть вероятность 50% на встречу с динозавром. Сможете опровергнуть?


так это ведь только в самом общем случае при отсутствии информации о популяции блондинок и динозавров

зачем вы спорите с бредом.

оступление 1:
есть примитивный способ отъёма денех -- бросается 3 кубика, исходы -- от 3 до 18 побиты на 3 неравные части. банкующий сидит на короткой средней стороне (где мало исходов), игроку предлагает любую другую (из 3-х), но в среднем выигрывает сам.

поскольку его исходы комбинаторно более значимы.



теория вероятности не устанавливает вероятности какого либо исхода. они полагаются априорно известными. (например в комбинаторных задачах -- по числу комбинаций примитивных событий приводящих к исходу. от общего числа комбинаций). или считается известной (или хотя бы определённой) плотность вероятности (равномерная по комбинациям [но не исходам] -- в случае комбинаторных задач). ну и т.п.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960250
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в контексте данной темы интересно, как в тяжелых тиражируемых системах удается сделать поддержку СУБД с разной реализацией уровней изоляции, особенно блокировочников и версионников одновременно (т.е. какой-то один на выбор приобретателя системы)

там пишется разный код бизнес логики приложения для разных СУБД?
Подразумевается, что в СУБД логики по минимуму (без хранимых процедур, если так бывает, или хранимые процедуры только для тяжелых отчетов), почти вся логика в бизнес слое приложения
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960257
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyock2в контексте данной темы интересно, как в тяжелых тиражируемых системах удается сделать поддержку СУБД с разной реализацией уровней изоляции, особенно блокировочников и версионников одновременно (т.е. какой-то один на выбор приобретателя системы)

там пишется разный код бизнес логики приложения для разных СУБД?
Подразумевается, что в СУБД логики по минимуму (без хранимых процедур, если так бывает, или хранимые процедуры только для тяжелых отчетов), почти вся логика в бизнес слое приложения
Как-как... обычно хреново, т.е. используется минимальное общее подмножество возможностей, а потом разработчики под эту систему долбаются с результатом. :(
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960259
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаPgSQLAnonymous,

тебе с порога было написано: вместо пересекающихся по конкурентам сущностей-- "агрегатов" Счет [Клиента|Брокера], должны быть индивидуальные Сущности "СчетКлиентаУБрокера". точка.

никаких агрегатных [по всем клиентам] сущностей. Пока можно агрегировать "счет брокера" в моменте. Как только уже нельзя -- долго агрегировать -- так начинаем чесать репу.

чесать репувыход 1 -- организовать очередь на агрегирующем ресурсе, с инкрементальным навариванием "ресурса" [read commited only]. Ограниченно годен -- при большом числе конкурентов и большой длине "слайса очереди" (т.е. средней протяженности от захвата ресурса до коммита, отдающего очередь) встанет колом.

выход 2 -- не иметь уникального агрегирующего ресурса "СчетБрокера", а иметь "размазанный, периодически сворачиваемый" "многострочный" агрегат , нужно следить за видимостями при свёртках (можно сворачивать и в снепшоте (repeatable-read-е), как показывал сибиряков, можно сворачивать в commited-е -- по всякому, в pg -- в т.ч. через cte -- у которого единый снепшот [WITH del AS (DELETE ... RETURNING...) ]. а вот с сериалайзебл будет велик шанс облома сериализации. патамушто гладиолус).

и т.п.


Ну это всё как-то слишком общо... Не видно, как достигается цель: не допустить ухода в минус счёта брокера.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960267
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyock2PgSQLAnonymousИ, кстати, знай добавляй RAM и "будет расти iops-ы". ;)
это как? можно поподробнее?
Вы бы контекста-то побольше оставляли: ;)

PgSQLAnonymousGgg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.

Вообще-то кеширование в основном скрывает эти различия, и как блокировки (которые тоже могут храниться на диске), так и версии (которые тоже можно хранить в RAM) обычно находятся именно в RAM. И, кстати, знай добавляй RAM и "будет расти iops-ы". ;)

Если не хватает RAM для блокировок, они обычно эскалируются (например, блокировки записей превращаются в блокировки страниц или таблиц), поэтому производительность может страдать. Добавление RAM может предотвратить это, только и всего (основное влияние на производительность происходит за счёт кэширования, конечно).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960268
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще интересно, как думаете, теоретически возможно в DB2 появление включаемой версионности аналогично MSSQL?
или IBMвцы принципиально не хотят версионник
или это слишком сложно конкретно в случае DB2
или или ...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960270
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanyock2в контексте данной темы интересно, как в тяжелых тиражируемых системах удается сделать поддержку СУБД с разной реализацией уровней изоляции, особенно блокировочников и версионников одновременно (т.е. какой-то один на выбор приобретателя системы)

там пишется разный код бизнес логики приложения для разных СУБД?
Подразумевается, что в СУБД логики по минимуму (без хранимых процедур, если так бывает, или хранимые процедуры только для тяжелых отчетов), почти вся логика в бизнес слое приложения
все эти системы монопольно используют СУБД, все конфликты разрешается через промежуточный слой к СУБД
но как только какая та другая система в обход этого промежуточного слоя идет в БД, так сразу все гавкается
и все это потому что у СУБД нет мозгов
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960271
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousЕстественно, клиент.
Более того, каждый клиент в норме обязан быть готов это сделать.

Ага, это мне напомнило времена, когда тут ещё появлялись Фокспрошники: "нашей СУБД не
нужны транзакции, мы легко эмулируем их с помощью временных таблиц".

А какая-то СУБД гарантирует , что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам?
Реальный мир не напоминает? ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960273
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousDimitry Sibiryakovпропущено...

Ага, это мне напомнило времена, когда тут ещё появлялись Фокспрошники: "нашей СУБД не
нужны транзакции, мы легко эмулируем их с помощью временных таблиц".

А какая-то СУБД гарантирует , что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам?
Реальный мир не напоминает? ;)
любая СУБД это может делать, если он знает свои обязанности и права
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960274
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и при этом набор прав и обязанностей должен быть полной для разрешения любого типа конфликта
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960277
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а то блин орловский мент одни правила применяет, а московский другие - вот жисть то блин
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960282
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymoussanyock2пропущено...
это как? можно поподробнее?
Вы бы контекста-то побольше оставляли: ;)


в смысле это было образно про то, что с помощью оперативки получится смасштабировать любое количество сессий большого динозавра? и под "iops" подразумевалось TPS вместо iops? чето я запутался, вообще конечно тяжелая ветка в целом для моего понимания, может быть из-за отсутствия опыта программирования высоконагруженных БД
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960287
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosвсе конфликты разрешается через промежуточный слой к СУБД
т.е. они по разному разрешаются в зависимости от используемой СУБД, для каждой свой конфликт манагер создается?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960290
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousА какая-то СУБД гарантирует, что для любой транзакции не будет ни
DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам?
Да любая, у которой есть "настоящий serializable". Ты же сам говорил, что знаешь одну такую.

PS: Джим Старки пару лет назад говорил, что в одном из своих свежих поделий (то ли в
Nexus, то ли в Nuo) решил проблему конкуренции полной сериализацией транзакций. Типа, это
упростило и ускорило движок до невозможности, так что TPS взлетели до небес.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960292
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanyock2ViPRosвсе конфликты разрешается через промежуточный слой к СУБД
т.е. они по разному разрешаются в зависимости от используемой СУБД, для каждой свой конфликт манагер создается?
они по разному разрешается в каждой системе написанной для этой СУБД, что и приводит к бардаку
все эти аппсерверы пытаются закрыть дыры СУБД по части разрешения конфликтов
а поставщики СУБД не занимаются этим вопросом по причине гонки за "производительностью", а то бы давно был стандартный менеджер разрешения любых!!! конфликтов за счет утяжеления описания данных, семантичнеский анализ поступающих запросов и т.д.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960293
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPgSQLAnonymousА какая-то СУБД гарантирует, что для любой транзакции не будет ни
DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам?
Да любая, у которой есть "настоящий serializable". Ты же сам говорил, что знаешь одну такую.

PS: Джим Старки пару лет назад говорил, что в одном из своих свежих поделий (то ли в
Nexus, то ли в Nuo) решил проблему конкуренции полной сериализацией транзакций. Типа, это
упростило и ускорило движок до невозможности, так что TPS взлетели до небес.

пиздит
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960294
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosпиздит
С чего бы?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960295
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovViPRosпиздит
С чего бы?

ускорения невозможно добиться
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960296
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя если у него до этого было совсем говно, то почему бы и нет
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960299
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousА какая-то СУБД гарантирует, что для любой транзакции не будет ни
DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам?
Да любая, у которой есть "настоящий serializable". Ты же сам говорил, что знаешь одну такую.

Нда. И с чего ты взял, что "настоящий serializable" --- это отсутствие вышеперечисленного?
Тем более, после того , как тебе здесь неоднократно указали, что это не так?

PgSQLAnonymousPS: Джим Старки пару лет назад говорил, что в одном из своих свежих поделий (то ли в
Nexus, то ли в Nuo) решил проблему конкуренции полной сериализацией транзакций. Типа, это упростило и ускорило движок до невозможности, так что TPS взлетели до небес.

Поживём-увидим. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960300
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosускорения невозможно добиться
Ага, ещё добавь "у меня же не получилось".

Рецепт-то простой: NoSQL, in-memory, autocommit. Всё, телемаркет: миллиард транзакций в
секунду выдаётся на гора легко. Фигня, что эти "транзакции" - увеличение числа на единицу,
кому-нибудь и такое требуется. Например, гуглю посещения считать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960303
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRosони по разному разрешается в каждой системе написанной для этой СУБД, что и приводит к бардаку
все эти аппсерверы пытаются закрыть дыры СУБД по части разрешения конфликтов
а поставщики СУБД не занимаются этим вопросом по причине гонки за "производительностью", а то бы давно был стандартный менеджер разрешения любых!!! конфликтов за счет утяжеления описания данных, семантичнеский анализ поступающих запросов и т.д.
А алгоритмы-то есть какие-нибудь на эту тему? А то мечтать-то можно...
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960307
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИ с чего ты взял, что "настоящий serializable" --- это отсутствие
вышеперечисленного?
По определению: нет параллельных транзакций - порядок записи не важен, нет не то что
взаимоблокировок на записях, вообще никаких других блокировок нет, уже изменённую запись
никто не пытается изменять заново.

PgSQLAnonymousТем более, после того, как тебе здесь неоднократно указали, что это
не так?

Здесь неоднократно показали, что та хрень, которая гордо называется "serializable" в PG и
Оракуле - никакого отношения к serializable не имеет. Ничего более.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960308
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyock2в смысле это было образно про то, что с помощью оперативки получится смасштабировать любое количество сессий большого динозавра?
Да, где-то как-то так. ;)

sanyock2и под "iops" подразумевалось TPS вместо iops? чето я запутался, вообще конечно тяжелая ветка в целом для моего понимания, может быть из-за отсутствия опыта программирования высоконагруженных БД
Если для выполнения запроса клиента СУБД нужно прочитать 100000 страниц,
и в одном случае на это уходит 2 сек, а в другом 1, то похоже на то,
что во втором случае IOPS вдвое больше (что может быть просто эффектом кэширования). ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960314
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovПо определению: нет параллельных транзакций - порядок записи не важен, нет не то что
взаимоблокировок на записях, вообще никаких других блокировок нет, уже изменённую запись
никто не пытается изменять заново.

Нет, ты замучал уже. Советую перечитывать эту тему, стандарт SQL,
документацию настоящих СУБД (мурзилку, наконец) пока до тебя не дойдёт,
что такое ACID, ISOLATION, serializability и SERIALIZABLE.

Dimitry SibiryakovЗдесь неоднократно показали, что та хрень, которая гордо называется "serializable" в PG и
Оракуле
Не надо Oracle и PostgreSQL мешать в одну кучу в этом вопросе.

Dimitry Sibiryakov - никакого отношения к serializable не имеет. Ничего более.

Да, да, чёрное — это белое. Война — это мир. Свобода — это рабство. Незнание — сила. Ложь — это правда.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960321
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousСоветую перечитывать эту тему, стандарт SQL, документацию настоящих
СУБД (мурзилку, наконец) пока до тебя не дойдёт, что такое ACID, ISOLATION,
serializability и SERIALIZABLE.
А какое слово из "если бы транзакции выполнялись последовательно, одна за другой" не
понимаешь ты? Если транзакции на самом деле выполняются строго последовательно,
одна за другой - это и есть истинный TIL serializable. Потому что (сурпрайз!) транзакции
при нём действительно сериализованы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960331
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousЕсли для выполнения запроса клиента СУБД нужно прочитать 100000 страниц,
и в одном случае на это уходит 2 сек, а в другом 1, то похоже на то,
что во втором случае IOPS вдвое больше (что может быть просто эффектом кэширования). ;)

под IOPS, насколько я понимаю, принято считать количество блочных операций с дисковой энергонезависимой подсистемой?
причем тут кэширование через оперативку?
кэширование через SSD как часть файловой системы, например ZIL, еще можно рассматривать в контексте IOPS

наглядно видно в db2top, есть physical reads и logical reads (из буферов), но writes ТОЛЬКО physical, потому что СУБД ожидает от файловой системы честные sync-и на каждый ее commit, хоть и страхуется через журнал, который желательно иметь в другой файловой системе

конечно, можно выкрутить в ZFS sync-и в disabled, когда она все, что пока еще влазит, пишет только в оперативу, почти с таким же камикадзовским успехом можно использовать обычный RAM drive без сверхнадежного питания под часть базы

кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS, может и потребности от приложения не было, поэтому?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960333
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это все к тому, что IOPS увеличивается за счет количества шпинделей, а не за счет оперативки или сверхновых винтов с огромной скоростью последовательной записи, каждые несколько стареньких винтов в правильном массиве легко уделают каждый один новенький по IOPS
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960334
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS

вернее прироста количества записываемых записей (или страниц в чем он там считает) в единицу времени по db2top
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960345
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyock2PgSQLAnonymousЕсли для выполнения запроса клиента СУБД нужно прочитать 100000 страниц,
и в одном случае на это уходит 2 сек, а в другом 1, то похоже на то,
что во втором случае IOPS вдвое больше (что может быть просто эффектом кэширования). ;)

под IOPS, насколько я понимаю, принято считать количество блочных операций с дисковой энергонезависимой подсистемой?
причем тут кэширование через оперативку?

Строго говоря — нипричём. Но упомянутому клиенту-то какая разница? ;)

sanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS, может и потребности от приложения не было, поэтому?
А может быть, потому, что sync реально не выполнялся и до этого? Вы проверяли?

sanyock2это все к тому, что IOPS увеличивается за счет количества шпинделей, а не за счет оперативки или сверхновых винтов с огромной скоростью последовательной записи, каждые несколько стареньких винтов в правильном массиве легко уделают каждый один новенький по IOPS

А на SSD как считать шпиндели?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960358
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymoussanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS, может и потребности от приложения не было, поэтому?
А может быть, потому, что sync реально не выполнялся и до этого? Вы проверяли?

да куда бы он делся то в ZFS
и "zfs get all | grep sync" того же мнения

PgSQLAnonymoussanyock2это все к тому, что IOPS увеличивается за счет количества шпинделей, а не за счет оперативки или сверхновых винтов с огромной скоростью последовательной записи, каждые несколько стареньких винтов в правильном массиве легко уделают каждый один новенький по IOPS

А на SSD как считать шпиндели?

для начала надо понять, что такое есть шпиндель в обычном винте с точки зрения производительности
для винтов IOPS по спекам обычно в районе 150-250, для простоты пусть будет 200
это значит, что головка его патифона может успевать не более 200 раз в секунду ерзать по поверхности его грампластинки в поисках места расположения очередного блока

в SSD физика другая, IOPS в зависимости от навороченности может быть в сотни и тысячи раз больше винтов
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960370
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смешались в кучу кони, люди... ((с) Бородино) IOPsы, кэширование, SSD и т.п. в приложении к разным СУБД.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960376
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа нет проблем: две параллельные транзакции, впавшие в дэдлок, не могут быть закоммичены.
Следовательно, они не могут привести БД в состояние, в которое они привели бы её, если бы
выполнялись последовательно. Следовательно, такие транзакции - не serializable.

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

Т.е. ты опять всё поставил с ног на голову. Уровень изоляции не гарантирует обязательность выполнения (фиксации) транзакций. Он лишь определяет результат (состояние системы) после их фиксации.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960380
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinУровень изоляции не гарантирует обязательность выполнения (фиксации)
транзакций. Он лишь определяет результат (состояние системы) после их фиксации.
А в чём разница? Если одна из транзакций не смогла зафиксироваться, значит заданный
результат не достигнут и система не соответствует требованиям, предъявляемым к данному уровню.

Короче: параллельное выполнение => операции одной транзакции не выполнились,
последовательное выполнение => выполнились операции обоих транзакций. Разница налицо и,
следовательно, данный уровень не соответствует стандарту на serializable как его описывает
ПГанонимус.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960383
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

авторЕсли одна из транзакций не смогла зафиксироваться, значит заданный результат не достигнут и система не соответствует требованиям, предъявляемым к данному уровню.

Необходимые и достаточные условия - это фиксирование обеих транзакций. Если этого не произошло - не выполнены исходные требования к системе.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960385
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinНеобходимые и достаточные условия - это фиксирование обеих транзакций.
Необходимое - да. Достаточное - нет. Одна транзакция делает update set f=f+3, вторая -
update set f=f+4. Если обе транзакции закоммитились, а в результате поле увеличилось не на
7, то условие для serializable не выполнено.

pkarklinЕсли этого не произошло - не выполнены исходные требования к системе.
И таки да, как я уже сказал два раза: раз одна из транзакций не смогла закоммититься,
значит система не выполняет условия для ношения гордого звания "поддерживает TIL
serializable".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960396
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

авторНеобходимое - да. Достаточное - нет. Одна транзакция делает update set f=f+3, вторая -
update set f=f+4. Если обе транзакции закоммитились, а в результате поле увеличилось не на
7, то условие для serializable не выполнено.
Нет, Дима, условия не такие...
авторИ таки да, как я уже сказал два раза: раз одна из транзакций не смогла закоммититься ,
значит система не выполняет условия для ношения гордого звания "поддерживает TIL
serializable".

Ой, а тынц на стандарт ANSI можно?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960491
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymoussanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS, может и потребности от приложения не было, поэтому?
А может быть, потому, что sync реально не выполнялся и до этого? Вы проверяли?


скорее всего потому что ZFS пишет sync-и сначала в ZIL (Intent Log) ПОСЛЕДОВАТЕЛЬНО,
а у HDD при последовательном доступе пропускная способность по IOPS в сотни раз выше, чем при случайном
http://storageioblog.com/part-ii-iops-hdd-hhdd-ssd/
нагрузка в десятки тысяч IOPs у меня очень редко бывает, поэтому наверно и разницы не было при "записи" sync-ов в RAM

только странно то, что ZIL тогда был еще на общих винтах а не на отдельном SLOG device, в пуле ведь еще и случайные чтения точно были, хотя возможно спасал RAM cache для чтения
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960540
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyock2PgSQLAnonymousпропущено...

А может быть, потому, что sync реально не выполнялся и до этого? Вы проверяли?

да куда бы он делся то в ZFS
и "zfs get all | grep sync" того же мнения

А Вы джентельменам верите на слово? ;) Не имеет значения , что он там выдаёт. Вы тестировали , что Ваша дисковая система "на всём протяжении" (ФС, драйвер, RAID, диски) действительно делает fsync? Если частота fsync-ов при тестировнании превышает те IOPS-ы, которые у Вас должны быть, то, возможно, у меня для Вас плохие новости. ;)

sanyock2скорее всего потому что ZFS пишет sync-и сначала в ZIL (Intent Log) ПОСЛЕДОВАТЕЛЬНО,

Подождите, а что это значит? Она гарантирует , что при исчезновении питания все эти fsync-и будут выполнены при его восстановлении?

Вот ссылка в тему: http://brad.livejournal.com/2116715.html
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960548
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinНет, Дима, условия не такие...

По-моему, ему это всё равно. ;)

pkarklinОй, а тынц на стандарт ANSI можно?
Вряд ли он там это найдёт, потому что там написано следующее (подчёркивания мои):

An SQL-transaction is terminated by a <commit statement> or a <rollback statement>.
If an SQL-transaction is terminated by successful execution of a <commit statement>,
then all changes made to SQL-data or schemas by that SQL-transaction are made
persistent and accessible to all concurrent and subsequent SQL-transactions.

If an SQL-transaction is terminated by a <rollback statement> or unsuccessful execution of a <commit statement>,
then all changes made to SQL-data or schemas by that SQL-transaction are canceled.

The execution of concurrent SQL-transactions at isolation level SERIALIZABLE is guaranteed to be serializable.

A serializable execution is defined to be an execution of the operations of concurrently executing
SQL-transactions that produces the same effect as some serial execution of those same SQL-transactions.

A serial execution is one in which each SQL-transaction executes to completion before the next SQL-transaction begins.

The execution of a <rollback statement> may be initiated implicitly by an SQL-implementation
when it detects the inability to guarantee the serializability of two or more concurrent SQL-transactions.
When this error occurs, an exception condition is raised: transaction rollback — serialization failure.


Так вот ROLLBACK-и и DEADLOCK-и и есть "implicit rollback".
Вот, кстати, соотвествующие стандарту SQLSTATE-ы PostgreSQL в этих случаях:

Код: plaintext
1.
2.
3.
4.
5.
6.
Class 40 — Transaction Rollback
40000 	transaction_rollback
40002 	transaction_integrity_constraint_violation
40001 	serialization_failure
40003 	statement_completion_unknown
40P01 	deadlock_detected
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960552
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousThe execution of concurrent SQL-transactions at isolation level
SERIALIZABLE is guaranteed to be serializable.
PgSQLAnonymousThe execution of a <rollback statement> may be initiated implicitly
by an SQL-implementation when it detects the inability to guarantee the
serializability of two or more concurrent SQL-transactions.
When this error occurs, an exception condition is raised: transaction rollback —
serialization failure.
Ты сам-то видишь противоречие этих двух заявлений? Или слова "уровень изоляции
SERIALIZABLE гарантирует сериализацию " - пустой звук?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960554
sanyock2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymoussanyock2пропущено...

да куда бы он делся то в ZFS
и "zfs get all | grep sync" того же мнения

А Вы джентельменам верите на слово? ;) Не имеет значения , что он там выдаёт. Вы тестировали , что Ваша дисковая система "на всём протяжении" (ФС, драйвер, RAID, диски) действительно делает fsync? Если частота fsync-ов при тестировнании превышает те IOPS-ы, которые у Вас должны быть, то, возможно, у меня для Вас плохие новости. ;)


у меня не тестовая лаборатория и я не тестер, чтобы тестировать commodity железки и софтины

разве fsync не возвращает результат: успешно или нет, да и просто может находиться в состоянии ожидания? СУБД может сделать вывод о дальнейших действиях?

кэш записи в контроллере отключен, диски проброшены как JBOD, ZFS - транзакционная файловая система, хорошо переживает hard reset, на старте обрабатывает журнал аналогично СУБД

dstat показывает постоянную ежесекундную активность на запись - коммиты DB2, а не раз в 5 секунд как sync по умолчанию, даже и потеря транзакций за последние 5 секунд не так уже страшна в моем случае
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960558
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousThe execution of concurrent SQL-transactions at isolation level
SERIALIZABLE is guaranteed to be serializable.
PgSQLAnonymousThe execution of a <rollback statement> may be initiated implicitly
by an SQL-implementation when it detects the inability to guarantee the
serializability of two or more concurrent SQL-transactions.
When this error occurs, an exception condition is raised: transaction rollback —
serialization failure.
Ты сам-то видишь противоречие этих двух заявлений? Или слова "уровень изоляции
SERIALIZABLE гарантирует сериализацию " - пустой звук?..


Нет, не вижу. И стандарт не видит. И разработчики большинства СУБД (я уже не уверен насчёт InterBase ;)) не видят. Как же так?!

И вообще, как я уже говорил:
PgSQLAnonymousПо-моему, ему это всё равно. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38960566
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИ разработчики большинства СУБД (я уже не уверен насчёт InterBase ;))
не видят. Как же так?!
А так, что разработчики СУБД под названием "serializable" делают обычный "snapshot".
Поскольку выполнить требование гарантировать сериализуемость не в силах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38961440
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕщё раз: что в данном случае для Вас означает "блокируют"?

Значит запрет на совершение определенного действия .
Бывают блокировки на чтение , изменение , создание новых элементов, и т.д.
Т.е. в случае версионника - может быть блокировка на создание новой версии, чтение промежуточного результата незафиксированной транзакции и т.д.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38961486
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПоскольку выполнить требование гарантировать сериализуемость не в силах.

Да хватит уже спорить о том, что реальный мир отличается от идеального.
Да в общем случае не всегда возможно найти ту последовательность действий, которая эквивалентна одновременному выполнению этих действий.
Все что в этом случае может сделать реальная система - сказать: "упс! не могу". Как и в случае если у нее вдруг пропал доступ к подсистеме хранения, и по другим причинам.
Но мы все понимаем, что реально последовательные системы доступа к данным можно сделать из любой БД с мало мальскими блокировками - только это нафиг никому не сдалось.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38963697
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев блокировка ... чтение промежуточного результата незафиксированной транзакции и т.д.
нету у версионника такой блокировки. иначе нафиг он нужен.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38964060
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Как бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38966880
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевКак бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read.
в InterBase и Firebird режима dirty read нет в принципе. Хотя, теоретически, его можно реализовать. Но в здравом уме разработчики это делать не собираются.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38966892
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot kdv]Сергей АрсеньевНо в здравом уме разработчики это делать не собираются.

Напомнило: "Если в Oracle этого нет - значит это никому не нужно!"
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967663
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinНапомнило: "Если в Oracle этого нет - значит это никому не нужно!"
Те кому нужен dirty reads, тому не нужны ни версионники ни блокировочники.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967774
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей АрсеньевpkarklinНапомнило: "Если в Oracle этого нет - значит это никому не нужно!"
Те кому нужен dirty reads, тому не нужны ни версионники ни блокировочники.ну вот я могу придумать разумную задачу (вернее она у меня есть), где чтение заведомо [ONLY] dirty данных в версионнике мне бы сильно облегчила жизнь.

набросок постановкипримерно так -- реализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом.

Зная, какие значения ещё болтаются в dirty -- я это сделаю без лишних телодвижений. Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом.

Иначе мне как-то придется либо организовывать очередь в порядке коммитов с лишними метками (всего закоммиченного) этой самой очередью, т.е. не вдоль сиквенса. Либо сигнализировать себе (изо всех других транзакций) через сомнительные механизмы типа автономий и т.п. -- о запаздывающих значениях
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967782
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттавот я могу придумать
Фантазия у проктостоматологов как всегда буйная.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967801
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттареализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом.
...
Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом.
...

Если я правильно понимаю,
задача можно сформулировать: "реализовать асинхронный SEQUENCE/SERIAL с возможностью заполнения пропусков"?

Если да, то сценарий реализации в блокировочнике прост:

0. есть таблица с уникальным констрейнтом на id, и признаком "id_reserved bool "

1. сессия в dirty read резервирует себе id по алгоритму:
1) найди минимальный id, у которого id_reserved = false;
2) если нашёл, обнови ему id_reserved = true, при ошибке повтори 1)
3) иначе вставь (id, id_reserved) = (max(id)+1, true), при ошибке повтори 3).

Есть нюанс, таки есть периоды, когда пропуски существуют: между "rollback сесии не с последним id" и "ближайшей попыткой резервирования".
Больше волнует другой вопрос: что за прикладная задача-то такая?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967850
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойэттареализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом.
...
Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом.
...

Если я правильно понимаю,
задача можно сформулировать: "реализовать асинхронный SEQUENCE/SERIAL с возможностью заполнения пропусков"?

неправильно понимаете.

хочу например обновлять статистику по вставкам, но не триггерно, с тормозами на each rows
а джобиком , по очереди, пачечками.

или слайсать очередь сообщений по вставкам , без создание навороченного журналирования "порядка коммитов" или чего иного -- этакого
АнатоЛойЕсли да, то сценарий реализации в блокировочнике прост:
<>
2) если нашёл, обнови ему id_reserved = true, при ошибке повтори 1)
<>хоть задачу не ту решаете --

и на кой мне на лям вставок -- лям "дед ровсов" ещё ? я чо, похож на больного ?

а всего то ведь нужен журнал достигнутого, с одной записью-писью. и возможность only dirty read-а.

с COALESCE (dirty_min-1,commited_max) -- в журнале.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967884
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта
хочу например обновлять статистику по вставкам, но не триггерно, с тормозами на each rows
а джобиком , по очереди, пачечками.

"статистику по вставкам" - это сам факт вставки, не анализируя, что же там вставляется?
Т.е. всего-то видеть, что кто-то зарезервировал запись ("очень вероятно, что я закоммичу запись, и чуть менее вероятно, что её содержимое останется таким как сейчас").
Правильно?

эттаили слайсать очередь сообщений по вставкам , без создание навороченного журналирования "порядка коммитов" или чего иного -- этакого

значение "слайсать" в данном контексте не понял. "слайсать" для чего? прикладной пример можно?

эттаа всего то ведь нужен журнал достигнутого, с одной записью-писью. и возможность only dirty read-а.

с COALESCE (dirty_min-1,commited_max) -- в журнале.
Понял. У вас типа ТОЛЬКО вставка идёт. И хотелось бы не только получить закоммиченное, а ещё и получить данные о незакоммиченных.
Если некую статистику посчитать - (учитывая, что статистика сама по себе "больше чем наглая ложь"), куда ни шло.

А кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967972
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойА кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)-- вот под минимальный из них [-1] я очередью отработаю, его [-1] запишу в журнал джоба [как "достигнутого"], и эта единственная запись -- вместо "апдейтить, апдейтить и апдейтить", как вы пердлагаете -- все накладные расходы механизма.

а в следующий раз ломтик для обсчет джобом стартану от журнала, и до текущего "из них[-1]"


дёшево, это было бы, по сравнению с тем, что требуется сейчас.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968135
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевkdv,

Как бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read.
Я как-то интересовался можно-ль "грязно-чтение" в Ораклах заюзать для сбора статики.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968199
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаАнатоЛойА кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)-- вот под минимальный из них [-1] я очередью отработаю, его [-1] запишу в журнал джоба [как "достигнутого"], и эта единственная запись -- вместо "апдейтить, апдейтить и апдейтить", как вы пердлагаете -- все накладные расходы механизма.

а в следующий раз ломтик для обсчет джобом стартану от журнала, и до текущего "из них[-1]"


дёшево, это было бы, по сравнению с тем, что требуется сейчас.
почему [-1]? У вас один писатель всего?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968298
Alexander RyndinПростите, какой-то поток сознания про RAM и диски. Какие такие версионники хранят блокировки на диске? Про Oracle могу сказать, что информация о блокировках хранится в заголовке блока данных, который в свою очередь лежит в оперативке.

стыдоба, ты видимо не слыхала про select генерящий redo (щито?). почитай про т. н. чистку блоков.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968306
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойэттапропущено...
-- вот под минимальный из них [-1] я очередью отработаю<>.
почему [-1]? У вас один писатель всего?

авторс COALESCE (dirty_min-1,commited_max) -- в журнале.
чо то оппонент совсем не всасывает
не всасывает, Карл
печалька
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968469
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаАнатоЛойпропущено...

почему [-1]? У вас один писатель всего?

авторс COALESCE (dirty_min-1,commited_max) -- в журнале.
чо то оппонент совсем не всасывает
не всасывает, Карл
печалька
всасывает, Клара, но низко-низко.
теперь понял. :)

Как я ещё понял, ONLY DIRTY - это когда в запросе ТОЛЬКО данные незафиксированные транзакцией. така фича имеется в реализации какой-то СУБД? Или dirty_min будем получать как min(dirty_as_all union committed)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968486
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправился
АнатоЛойИли dirty_min будем получать как min(dirty_as_all MINUS committed)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968674
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛой
Как я ещё понял, ONLY DIRTY - это когда в запросе ТОЛЬКО данные незафиксированные транзакцией. така фича имеется в реализации какой-то СУБД?науке такая субд неизвестна

, но поиски ведутся

-- очевидно, что самой субд это знание более чем доступно
остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии.
АнатоЛойИли dirty_min будем получать как min(dirty_as_all EXCEPT committed)?
а вот это уже дорого, слишком дорого, Карл
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968706
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта-- очевидно, что самой субд это знание более чем доступно
остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии.
Вряд ли. Вот запускаю я full scan по таблице, который идет 2 часа. При прохождении блока данных N я понимаю, что он грязный. Ок. Идем дальше. Но в это время какое-то приложение меняет блоки N-100. Т.е. мой запрос не закончился, блок N-100 уже проверен - он был чистый, а значит я не увижу данные из этого блока и в будущем.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968752
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndinэтта-- очевидно, что самой субд это знание более чем доступно
остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии.
Вряд ли. Вот запускаю я full scan по таблице, который идет 2 часа. При прохождении блока данных N я понимаю, что он грязный. Ок. Идем дальше. Но в это время какое-то приложение меняет блоки N-100. Т.е. мой запрос не закончился, блок N-100 уже проверен - он был чистый, а значит я не увижу данные из этого блока и в будущем.

на самом деле я интересуюсь не вообще dirty и вообще закоммиченными, а их соотношением на некий момент

т.ч. не знаю на предмет блокировочника
но в версионнике есть снепшот, относительно которого я свою задачу порешаю.

думаю в блокировочнике увидеть одним стейтментом и то и другое -- тоже бы не составило труда. на "размазанный момент чтения записи" , который меня бы тоже устроил [просто по сути задачи], если я буду видеть статус [dirty|commited] каждой из.

другое дело -- выковырять в ноздре некую универсалию, сферически независимую от движка, и внести её в стандарт -- вот это, пожалуй, будет уже сложно и в постановке, и в реализации.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968955
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттана самом деле я интересуюсь не вообще dirty и вообще закоммиченными, а их
соотношением на некий момент

т.ч. не знаю на предмет блокировочника
но в версионнике есть снепшот, относительно которого я свою задачу порешаю.
Нету там такого снапшота.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969100
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэтта<>
но в версионнике есть снепшот, относительно которого я свою задачу порешаю.
Нету там такого снапшота.

снапшот -- взять всё живое, что есть, и отсеять то, что по id транзакции не входит в видимость сессии.

мне вот вместо вот этого: "отсеять всё то" -- нужно напротив -- взять всё [вернее -- кое что] живое, что есть, но не входит в видимость (и, отдельной строкой -- кое-что, что входит).

если в fb это не реализуемо (вам виднее) -- не очевидно, что не реализуемо на других движках.

-- кстати, можете рассказать, почему оно там не реализуемо
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969114
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаможете рассказать, почему оно там не реализуемо
Потому что "взять всё живое на момент старта транзакции/запроса" и сделать неизменяемую
копию - чертовски дорогое занятие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969156
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттаможете рассказать, почему оно там не реализуемо
Потому что "взять всё живое на момент старта транзакции/запроса" и сделать неизменяемую
копию - чертовски дорогое занятие.

в том то и мякотка, что мне в задачу не нужно неизменяемый снапшот по dirty.

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


понятно, что задача сильно специальная. сцепить синхронную логику с асинхронной -- но она всюду, где мы что-то хотим делать не тотчас.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969180
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта... статус [dirty|commited] каждой из ....

Хм... Ну, насколько я знаю, для блокировочного IBM Informix Dynamic Server, например, такая задача теоретически разрешима: в таблицах системного каталога сервера есть таблица с блокировками, поэтому INNER JOIN легко даст ONLY DIRTY, а LEFT OUTER + COALESCE() - [dirty|commited]... С производительностью только может не всё ладно случиться, но утверждать с ходу плохого не буду...
...
Рейтинг: 0 / 0
370 сообщений из 370, показаны все 15 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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