|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Привет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2015, 20:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
db2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird? Смотря каких запросов. Если часть из этих пользователей делает огромные выборки по половине базы, а остальные активно меняют те же самые данные, по которым проходят выборки, то может Oracle и выиграет несколько, в некоторых конкретных условиях. Вообще, не помню, что бы мне под DB2 хотелось бы версионности. Кстати, по моему опыту, большая часть backend-разработчиков о такой вещи, как версионники не знает и думает, что читатели писателей блокируют. Что приводит к интересным результатам, особенно в биллингах ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2015, 20:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
db2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird? Ну, возможно, что отличие не в чистой производительности, а в производительности "чистого" чтения. Т.е. в теории пишущий до коммита, к примеру, записал в блок грязные данные, которые отражают только часть операций транзакции. К пример, умножил зарплату в двое, но еще не добавил 100000. Т.е. там данные неправильные. Тогда читающий прочитает неправильные данные и примет не правильное решение. Чтобы избежать этого блокировочник имеет возможность заблокировать блок. Т.е. его читать до завершения транзакции нельзя: падение производительности. Но может иметь возможность позволить читать грязные данные, тогда производительность не страдает. Версионник создает копии меняемых блоков: несколько версий блока. Читающий видит копии правильных данных на момент запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2015, 21:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
vadiminfodb2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird? Ну, возможно, что отличие не в чистой производительности, а в производительности "чистого" чтения. Т.е. в теории пишущий до коммита, к примеру, записал в блок грязные данные, которые отражают только часть операций транзакции. К пример, умножил зарплату в двое, но еще не добавил 100000. Т.е. там данные неправильные. Тогда читающий прочитает неправильные данные и примет не правильное решение. Чтобы избежать этого блокировочник имеет возможность заблокировать блок. Т.е. его читать до завершения транзакции нельзя: падение производительности. Но может иметь возможность позволить читать грязные данные, тогда производительность не страдает. Версионник создает копии меняемых блоков: несколько версий блока. Читающий видит копии правильных данных на момент запроса.вообще-то неудачный пример - в обоих случаях читаются неправильные данные ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2015, 23:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
db2exc, обычно, приложения пишутся под конкретную СУБД, и поэтому (если разработчик хорошо знаком с архитектурой СУБД) проблем не возникает. Проблемы начинаются тогда, когда приложения, ориентированные на версионник пытаются перенести на блокировочник, и наоборот. По идее, проблем в направлении переноса версионник->блокировочник куда больше, чем в обратную сторону. Версионник, скажем так, "развращает" разработчика в том смысле, что блокировок в нем как таковых нет. Блокировочник наоборот, вызывает ожидание на блокировке ресурсов там, где его могло бы не быть при использовании версионника. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 00:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
vadiminfoТогда читающий прочитает неправильные данные среди старых и нынешних архитекторов Firebird есть мнение, что режим Dirty Read как таковой противопоказан любой СУБД, поэтому даже возможность (существующая) реализации Dirty Read в версионнике не обсуждается. К примеру, в Firebird (и InterBase) уже много-много лет есть режим read_committed no_rec_version, который выдает ошибку при попытке чтения non-committed версии. Казалось бы, легко реализовать возможность ее "показа", однако... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 01:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
db2excПривет всем! Собственно вопрос в сабже. Действительно ли при работе такого же DB2, при скажем 100 активных пользователей сильно проседает время отклика по сравнению с такой же структурой базы и запросами того же Postgre, Oracle или даже Firebird? Вопрос несколько бессмысленный, поскольку "такой же" практически не используется. Скажу так: для достижения хорошего быстродействия в блокировочниках, как правило, приходится запрещать длинные транзакции и использовать худшие (в смысле качества данных) уровни изоляции. SergSuperвообще-то неудачный пример - в обоих случаях читаются неправильные данные Думаю, "неправильные" - очень неудачное слово. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 01:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarerдля достижения хорошего быстродействия в блокировочниках, как правило, приходится запрещать длинные транзакции и использовать худшие (в смысле качества данных) уровни изоляции. в InterBase 1984-85 года выпуска был один уровень изолированности - snapshot, но тем не менее, для достижения хорошего быстродействия в версионнике и с read_committed длинные транзакции тоже не рекомендуются. Я не берусь оценивать эффекты быстродействия от длинных транзакций в обоих архитектурах, но если в блокировочнике длинные транзакции приводят к блокированию конкурирующих транзакций, то в версионнике длинные транзакции приводят к падению производительности из-за накопления версий и последующей сборки "мусора". Впрочем, полезность версионной архитектуры явно продемонстрирована ее поддержкой в MS SQL 2005, это кроме поддержки в Oracle, PostgreSQL и MySQL, не говоря про ее родоначальника InterBase и наследника Firebird. Однако, существуют задачи, где версионник только вреден - например, классическая "прокачка" данных через СУБД. Тут блокировочники рулят (как и аналоги dbf, впрочем). Хорошо, что такая задача составляет мизерный процент от остальных. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 01:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvв InterBase 1984-85 года выпуска был один уровень изолированности - snapshot, но тем не менее Я как раз об этом. Для блокировочника snapshot - это "крайне дорогое удовольствие". kdvдля достижения хорошего быстродействия в версионнике и с read_committed длинные транзакции тоже не рекомендуются. Для версионника уровень изоляции мало влияет на производительность, поскольку указывает в основном какую из версий выбрать. Для блокировочника же он очень сильно влияет на производительность, поскольку указывает, как долго удерживать блокировку на широко востребованном ресурсе. Поэтому для него и вводят всякие dirty read, with nolock etc. kdvЯ не берусь оценивать эффекты быстродействия от длинных транзакций в обоих архитектурах, Насколько я понимаю, они несравнимы. Суть в том, что в версионнике до достаточно большого порога замедление идёт линейно и в целом малокритично, в блокировочнике же нарастает снежный ком (заблокированная транзакция в свою очередь дольше держит блокировки и блокирует следующие транзакции итд). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 01:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
db2exc, А что хорошего в блокировочнике? В том, что люди приходят на форум чуть-ли не каждый день спрашивать "как залить в таблицу мильен-другой записей не блокируя таблицу на долго"? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 02:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvВерсионник, скажем так, "развращает" разработчика в том смысле, что блокировок в нем как таковых нет.предлагаю выдать коллеге нобелевскую премию. Это явно фундаментальное открытие ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 11:22 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvсреди старых и нынешних архитекторов Firebird есть мнение, что режим Dirty Read как таковой противопоказан любой СУБД, поэтому даже возможность (существующая) реализации Dirty Read в версионнике не обсуждается. А некоторые даже и на Read Committed смотрят косо. Ибо проблем с его поддержанием много, а полезного выхлопа - мало. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 13:20 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Relic Hunterdb2exc, А что хорошего в блокировочнике? В том, что люди приходят на форум чуть-ли не каждый день спрашивать "как залить в таблицу мильен-другой записей не блокируя таблицу на долго"? А что хорошего в версионнике? Бесконечные откаты при высокой конкуренции (даже тогда, когда они вовсе не нужны)? Особенно с учётом того, что чистый (полноценный) версионник (из известных RDBMS) только один (PostgreSQL)? ;) Вообще, я за гибридный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 15:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousБесконечные откаты при высокой конкуренции (даже тогда, когда они вовсе не нужны)? Особенно с учётом того, что чистый (полноценный) версионник (из известных RDBMS) только один (PostgreSQL)? ;) Если PG что-то постоянно при конкуренции откатывает, то это его, PG, личные проблемы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 15:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, эттот псевдо пж--ононимус к пг относится так же ,как я к балету -- оно любитель мастдайскуэля. и вероятно только , опять таки, как клиентопейсатель. в пг форуме имеет вопросы только относительно сериалайзебл режима (адепт исключительного сериалайзебла всегда и во всём [блокировочный моск, уле]) а то, что любая субд будет, будучи в сериалайзебле, то и дело что-то откатывать -- ну это какбе оксиома. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 16:08 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousБесконечные откаты при высокой конкуренции (даже тогда, когда они вовсе не нужны)? Особенно с учётом того, что чистый (полноценный) версионник (из известных RDBMS) только один (PostgreSQL)? ;) Если PG что-то постоянно при конкуренции откатывает, то это его, PG, личные проблемы. Ничего подобного. Как версионник может не откатывать? Это (традиционно) часть данного подхода к изоляции транзакций. И вообще, если транзакции конкурируют за какой-то ресурс, можно: Заблокировать одну из транзакций (подождать) --- подход блокировочника. Откатить одну из транзакций --- подход версионника. А какие ещё варианты-то? Или же вы имеете в виду использование блокировок в версионнике (что его частично превращает в блокировочник)? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 16:13 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаэттот псевдо пж--ононимус к пг относится так же ,как я к балету Что, зацепило тебя в прошлый раз, балерина, аж кушать не можешь? ;) этта-- оно любитель мастдайскуэля. Не угадал. эттаи вероятно только , опять таки, как клиентопейсатель. А ты у нас из PostgreSQL core team, значит? ;) эттав пг форуме имеет вопросы только относительно сериалайзебл режима (адепт исключительного сериалайзебла всегда и во всём [блокировочный моск, уле]) Да, я адепт консистентности (и SERIALIZABLE, который её гарантирует) и считаю, что смысла от быстрого перемалывания мусора никакого нет. А причём тут блокировки, я не понимаю. эттаа то, что любая субд будет, будучи в сериалайзебле, то и дело что-то откатывать -- ну это какбе оксиома. Любая СУБД иногда будет что-то откатывать (DEADLOCK-и, например). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 16:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousКак версионник может не откатывать? Это (традиционно) часть данного подхода к изоляции транзакций. Да в общем-то легко. И опять же если кто-то что-то традиционно откатывает, это его личные половые проблемы. Приведи конкретный пример когда откат транзакции необходим. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 16:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа в общем-то легко. Отличный ответ, просветляющий. ;) Не, ну если транзакции выполнять строго по одной, то без отката можно всегда обойтись. ;) Dimitry SibiryakovИ опять же если кто-то что-то традиционно откатывает, это его личные половые проблемы. Приведи конкретный пример когда откат транзакции необходим. Да классический DEADLOCK: Код: sql 1. 2. 3. 4.
Как тут кого-то не откатить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 17:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousДа классический DEADLOCK: Как тут кого-то не откатить? Во-первых, это не deadlock, а update conflict. Во-вторых, откатывать таки надо архитектора, который такую дурную логику в БД заложил. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 17:28 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВо-первых, это не deadlock, а update conflict. Или так, зависит от реализации. Но откатывать-то нужно ! Dimitry SibiryakovВо-вторых, откатывать таки надо архитектора, который такую дурную логику в БД заложил. А это уже не дело СУБД. ;) И вообще, это могут быть разные "архитекторы". Так, пример "когда откат транзакции необходим" я привёл. ;) И какой же общий способ не откатывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 17:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousТак, пример "когда откат транзакции необходим" я привёл. ;) И какой же общий способ не откатывать? Выбросить ошибку и пусть с ней приложение разбирается. Не дело СУБД проявлять неестественный интеллект и инициативу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 18:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВыбросить ошибку и пусть с ней приложение разбирается. То есть в какой-то момент СУБД выбросит ошибку и клиент должен вручную откатить все или часть изменений? Dimitry SibiryakovНе дело СУБД проявлять неестественный интеллект и инициативу. Не вижу тут никакого "интеллекта" и "инициативы". Всё по стандарту, не хотите полного отката --- используйте SAVEPOINT, что тут не так-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 18:56 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousТо есть в какой-то момент СУБД выбросит ошибку и клиент должен вручную откатить все или часть изменений? Клиент должен принять решение. Решит откатывать - пусть откатывает. Решит закоммитить как есть - пусть коммитит как есть. Решит использовать любую другую логику обработки конфликта - ему и карты в руки. Потому что это его бизнес-логика, его мабиноги. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 19:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovКлиент должен принять решение. Решит откатывать - пусть откатывает. Решит закоммитить как есть - пусть коммитит как есть. Решит использовать любую другую логику обработки конфликта - ему и карты в руки. Потому что это его бизнес-логика, его мабиноги. Ну так SAVEPOINT перед каждым запросом и всего делов. Я вот только не могу понять, как бизнес-логика связана с конфликтами и зачем ей вообще что-то о них знать? Зачем я в своих транзакциях должен использовать не SERIALIZABLE и предусматривать специальную обработку всех возможных ситуаций (в которой, IMHO, запросто могут ошибиться 99% программистов) вместо общего framework-а (при ошибке откатил-повторил)? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 19:43 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousНу так SAVEPOINT перед каждым запросом и всего делов. 1. Не очень понимаю, как savepoint спасёт от отката транзакции. 2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД "savepoint перед каждым запросом" обеспечивают автоматом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 19:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarer2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД "savepoint перед каждым запросом" обеспечивают автоматом. Ну так PG, видимо, не претендует... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 20:20 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousDimitry SibiryakovКлиент должен принять решение. Решит откатывать - пусть откатывает. Решит закоммитить как есть - пусть коммитит как есть. Решит использовать любую другую логику обработки конфликта - ему и карты в руки. Потому что это его бизнес-логика, его мабиноги. Ну так SAVEPOINT перед каждым запросом и всего делов. Я вот только не могу понять, как бизнес-логика связана с конфликтами и зачем ей вообще что-то о них знать? Зачем я в своих транзакциях должен использовать не SERIALIZABLE и предусматривать специальную обработку всех возможных ситуаций (в которой, IMHO, запросто могут ошибиться 99% программистов) вместо общего framework-а (при ошибке откатил-повторил)?Мне одному кажется, что вы какой-то бред несете? 1) В редких приложениях встречается жесткая конкуренция за одни и те же строки. Обычно в многопользовательском режиме пользователи меняют разные данные. Отсюда и deadlocks встречаются редко. Наличие большого количеств deadlock говорит либо о кривости самого приложения, либо о кривости СУБД (слишком крупные блокировки) 2) Exception на то и exception, что мы заранее не знаем, какой он может произойти. Может быть deadlock, а может и место на сервере закончиться. На каждый случай условных веток не напасешься. Но всегда есть возможность написать обработчик others, который будет всегда откатывать транзакцию, показывать юзеру текст exception и предлагать повторить всю транзакцию с нуля. Какие к черту SAVEPOINT? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 20:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinМне одному кажется, что вы какой-то бред несете? Да не то чтобы бред. Слова уважаемого коллеги напоминают мне поведение юного головастого студента с большим самомнением, который нахватался вершков теории и при нуле практики начал придумывать улучшения и прочие единственно правильные подходы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 20:28 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarer1. Не очень понимаю, как savepoint спасёт от отката транзакции. Может откатиться до него. softwarer2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД "savepoint перед каждым запросом" обеспечивают автоматом. О каких "обезьянках" речь? Если мне нужна будет "savepoint перед каждым запросом", я это легко реализую в клиентском (да и серверном) коде, а если не нужна --- не буду использовать. А в Ваших "нормальных СУБД" выбора нет, получается? И это Вы выдаёте за преимущество? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 21:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovsoftwarer2. Возможно, Вам нравится выступать обезьянкой, но нормальные СУБД "savepoint перед каждым запросом" обеспечивают автоматом. Ну так PG, видимо, не претендует... С чего это наличие или отсутствие произвольных ограничений вдруг стало определять "нормальность" СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 21:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousС чего это наличие или отсутствие произвольных ограничений вдруг стало определять "нормальность" СУБД? С тех пор как атомарность транзакции в целом и DML в частности стала стандартом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 21:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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? Те самые, которые есть в стандарте и во всех "нормальных СУБД"? Вот они все дураки-то, правда? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 21:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymoussoftwarer1. Не очень понимаю, как savepoint спасёт от отката транзакции. Может откатиться до него На предыдущем допросе (тм) Вы показали, что версионник должен отказывать транзакцию. Как откатиться до savepoint-а после отката транзакции и зачем? PgSQLAnonymousО каких "обезьянках" речь? Если мне нужна будет "savepoint перед каждым запросом", я это легко реализую в клиентском (да и серверном) коде, Вот именно о таких обезьянках. PgSQLAnonymousА в Ваших "нормальных СУБД" выбора нет, получается? И это Вы выдаёте за преимущество? ;) За преимущество я выдаю удобную и правильную работу. А мучающиеся с грязным чтением, мумпсом и прочим каменным веком имеют полное право гордиться тем, что у них зато есть выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 21:56 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousС чего это наличие или отсутствие произвольных ограничений вдруг стало определять "нормальность" СУБД? С тех пор как атомарность транзакции в целом и DML в частности стала стандартом. Извините, этого я не понял вообще. Стандарт ANSI SQL не требует implicit savepoints. О каком стандарте идёт речь и причём тут атомарность-то? Как вообще наличие или отсутвие implicit savepoints влияет на атомарность? Кстати, Вам не кажется, что Вы всё наоборот вывернули? Вот, например, если у меня есть "нормальная СУБД" и я выполняю: Код: sql 1. 2. 3. 4.
И у меня происходит ошибка в INSERT, то, как я понимаю, он откатывается и транзакция продолжается , и мне это поведение почему-то совсем не кажется "нормальным". Верни мои данные, проклятый сервер! ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 22:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarerAlexander RyndinМне одному кажется, что вы какой-то бред несете? Да не то чтобы бред. Слова уважаемого коллеги напоминают мне поведение юного головастого студента с большим самомнением, который нахватался вершков теории и при нуле практики начал придумывать улучшения и прочие единственно правильные подходы. А мне Ваши, может, тоже чего-то напоминают. А аргументы-то есть у Вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 22:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarerPgSQLAnonymousпропущено... Может откатиться до него На предыдущем допросе (тм) Вы показали, что версионник должен отказывать транзакцию. Как откатиться до savepoint-а после отката транзакции и зачем? Естественно, никак. Он может откатиться до savepoint-а вместо отката транзакции, если это нужно. softwarerPgSQLAnonymousО каких "обезьянках" речь? Если мне нужна будет "savepoint перед каждым запросом", я это легко реализую в клиентском (да и серверном) коде, Вот именно о таких обезьянках. Нда. То есть возможность наличие выбора и возможность тривиально реализовать implict savepoint --- это недостаток, а отсутвие выбора --- это преимущество? Интересная у Вас логика. softwarerЗа преимущество я выдаю удобную и правильную работу. А мучающиеся с грязным чтением, мумпсом и прочим каменным веком имеют полное право гордиться тем, что у них зато есть выбор. Как здесь появились "грязное чтение, мумпсом и прочий каменным век"? Ни с чем таким в PostgreSQL и MS SQL, например, где вышеописанный выбор есть, можно не мучаться (а с грязным чтением в PostgreSQL и не получится)... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 22:13 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousмне это поведение почему-то совсем не кажется "нормальным" Выше я уже писал про неестественный интеллект и инициативу. Ты явно и недвусмысленно приказал серверу закоммитить транзакцию не смотря ни на что. Он её закоммитил. Почему точное выполнение сервером твоих приказов ты считаешь ненормальным? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 22:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousмне это поведение почему-то совсем не кажется "нормальным" Выше я уже писал про неестественный интеллект и инициативу. Ты явно и недвусмысленно приказал серверу закоммитить транзакцию не смотря ни на что. Он её закоммитил. Почему точное выполнение сервером твоих приказов ты считаешь ненормальным? Я говорю, что мне это поведение кажется ненормальным, потому что я привык к другому. ;) Если его учитывать, то ничего плохого тут нет, я приказал --- он закоммитил, формально косяк здесь только мой. Но без implicit savepoints я могу выполнить это всё одним запросом/пакетом и знать, что данные не потеряются, а здесь нет, и это мне кажется ненормальным. ;( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 22:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousDimitry Sibiryakovпропущено... С тех пор как атомарность транзакции в целом и DML в частности стала стандартом. Извините, этого я не понял вообще. Стандарт ANSI SQL не требует implicit savepoints. О каком стандарте идёт речь и причём тут атомарность-то? Как вообще наличие или отсутвие implicit savepoints влияет на атомарность? Кстати, Вам не кажется, что Вы всё наоборот вывернули? Вот, например, если у меня есть "нормальная СУБД" и я выполняю: Код: sql 1. 2. 3. 4.
И у меня происходит ошибка в INSERT, то, как я понимаю, он откатывается и транзакция продолжается , и мне это поведение почему-то совсем не кажется "нормальным". Верни мои данные, проклятый сервер! ;) Я дико извиняюсь, что встреваю, но, в нормальной СУБД: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 23:21 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklinPgSQLAnonymousпропущено... Извините, этого я не понял вообще. Стандарт ANSI SQL не требует implicit savepoints. О каком стандарте идёт речь и причём тут атомарность-то? Как вообще наличие или отсутвие implicit savepoints влияет на атомарность? Кстати, Вам не кажется, что Вы всё наоборот вывернули? Вот, например, если у меня есть "нормальная СУБД" и я выполняю: Код: sql 1. 2. 3. 4.
И у меня происходит ошибка в INSERT, то, как я понимаю, он откатывается и транзакция продолжается , и мне это поведение почему-то совсем не кажется "нормальным". Верни мои данные, проклятый сервер! ;) Я дико извиняюсь, что встреваю, но, в нормальной СУБД: Код: sql 1.
А в другой нормальной СУБД: Код: sql 1. 2. 3. 4.
И что? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2015, 23:59 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИ что? ;) Это был намек, что скрипт был приведен "под ситуацию". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 00:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklin, а воще то все эти output и returning убожество мысли и отсутствие фантазии с целю достичь атомарности в некоторых простых случаях и говно тот субд который СВОЮ работу валит на плечи клиента, а дедлоки и конфликты именно работа субд, без оных нах субд и не нужна, кроме как читать она ни для чего не нужна ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 00:42 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander Ryndin1) В редких приложениях встречается жесткая конкуренция за одни и те же строки. Обычно в многопользовательском режиме пользователи меняют разные данные. это так кажется ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 00:48 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА что хорошего в версионнике? Бесконечные откаты при высокой конкуренцииЗвучит двусмысленно... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 14:22 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarer Думаю, "неправильные" - очень неудачное слово. Ну не очень неудачное. Как бы правило - читать в БД то, что в ней хранится в согласованном состоянии: т.е. результат завершенных транзакций. Несогласованные данные ("грязные") ну не правильные - таких не должно быть в БД. Согласованные типа как бы правильные. На момент запроса в БД именно такие данные. Хотя они в процессе изменения - как бы не совсем актуальные: раз меняют значит в там должны бы быть другие. Ну так это вопрос оперативности. Если это не правильно, то может быть, просто нужна типа система реального времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 18:36 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
vadiminfosoftwarerДумаю, "неправильные" - очень неудачное слово. Ну не очень неудачное. Как бы правило - читать в БД то, что в ней хранится в согласованном состоянии Именно. Насколько я понял Сергея, "неправильными" данными он назвал "те значения, которые вот-вот будут изменены, а мы их читаем". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 18:43 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
vadiminfoКак бы правило - читать в БД то, что в ней хранится в согласованном состоянии: т.е. результат завершенных транзакций. Несогласованные данные ("грязные") ну не правильные - таких не должно быть в БД. Согласованные типа как бы правильные. На момент запроса в БД именно такие данные. Неясно только зачем ограничиваться согласованностью данных на уровне запроса. На уровне транзакции оно гораздо полезнее: можно выдать сколько угодно запросов и полученные ими данные будут согласованы как унутре резалт-сета, так и между собой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 18:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarervadiminfoпропущено... Ну не очень неудачное. Как бы правило - читать в БД то, что в ней хранится в согласованном состоянии Именно. Насколько я понял Сергея, "неправильными" данными он назвал "те значения, которые вот-вот будут изменены, а мы их читаем". Ну я тоже так понял. Но это как бы это все же особые требования к оперативности. Но если данные про то, чего не могло быть не до не после изменения, то они совсем неправильные. Впрочем, я согласен, что термин "правильные" не подходит для строго описания. Выбран чисто для упрощения описания. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 19:13 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousЕстественно, никак. Он может откатиться до savepoint-а вместо отката транзакции, если это нужно. Замечательно. То есть предыдущее утверждение явно дезавуируем. PgSQLAnonymousНда. То есть возможность наличие выбора Выбор - не преимущество. Уместный выбор - преимущество. Неуместный выбор - недостаток. Установка savepoint-а бесплатна и ничему не мешает. Поэтому выбор - неуместен, и необходимость в каких-то дополнительных телодвижениях для того, чтобы он был поставлен - недостаток. PgSQLAnonymousКак здесь появились "грязное чтение, мумпсом и прочий каменным век"? Как пример "выборов", которые по Вашей логике, являются преимуществом. PgSQLAnonymousНи с чем таким в PostgreSQL и MS SQL, например, где вышеописанный выбор есть, можно не мучаться (а с грязным чтением в PostgreSQL и не получится)... Ну вот и очень плохо, что не получится Такие нехорошие, выбор отобрали ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 19:17 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
vadiminfoНу я тоже так понял. Но это как бы это все же особые требования к оперативности. Да даже не совсем так. Допустим, есть некие данные А. Допустим, у нас есть две транзакции: одна читает А и пишет Б, другая читает А и как-то их модифицирует. Так вот, с точки зрения состояния базы и вообще логики происходящего нет разницы между двумя ситуациями: прошла первая транзакция, через десять минут вторая обе транзакции идут параллельно, первая успевает ухватить старую версию изменяемых данных. Поэтому если мы считаем, что в первом случае всё нормально и данные правильные, нет ровно никаких резонов считать, что во втором они неправильные. Если мы хотим, чтобы Б всегда соответствовали последнему состоянию А - значит, нужно явно это указывать (то есть вызывать первую операцию в конце второй). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 19:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarervadiminfoНу я тоже так понял. Но это как бы это все же особые требования к оперативности. Да даже не совсем так. Допустим, есть некие данные А. Допустим, у нас есть две транзакции: одна читает А и пишет Б, другая читает А и как-то их модифицирует. Так вот, с точки зрения состояния базы и вообще логики происходящего нет разницы между двумя ситуациями: прошла первая транзакция, через десять минут вторая обе транзакции идут параллельно, первая успевает ухватить старую версию изменяемых данных. Поэтому если мы считаем, что в первом случае всё нормально и данные правильные, нет ровно никаких резонов считать, что во втором они неправильные. Если мы хотим, чтобы Б всегда соответствовали последнему состоянию А - значит, нужно явно это указывать (то есть вызывать первую операцию в конце второй). а порядок пушкин будет задавать, если первый запускает вася, а второй петя? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 19:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRosа порядок пушкин будет задавать, если первый запускает вася, а второй петя? А кто задаёт порядок в многопользовательской системе? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 19:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarerViPRosа порядок пушкин будет задавать, если первый запускает вася, а второй петя? А кто задаёт порядок в многопользовательской системе? тот кто проектирует ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 19:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarerТо есть предыдущее утверждение явно дезавуируем. Какое именно из них? softwarerВыбор - не преимущество. Уместный выбор - преимущество. Неуместный выбор - недостаток. А давайте не только Вы будете решать, какой выбор --- уместный, а какой --- нет? ;) softwarerУстановка savepoint-а бесплатна и ничему не мешает. Где-то бесплатна, а где-то нет. И пример, где мешает, я уже приводил. softwarerКак пример "выборов", которые по Вашей логике, являются преимуществом. Ясно. Ну некоторые из них (иногда) являются. Например, в блокировочниках обычно можно использовать READ UNCOMMITTED просто для того, чтобы оценить прогресс какой-нибудь "затормозившей" транзакции, смотря на ещё незакомиченные ею данные. Без него этой возможности (именно таким способом) нет. softwarerНу вот и очень плохо, что не получится Такие нехорошие, выбор отобрали Да нет, не очень. Отсутствие этих выборов легко можно пережить. Кстати, "нормальная" СУБД, о которой Вы говорите --- это Oracle? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 20:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
не теши себя, я имел ввиду что разработчики субд не осилили задачу многопользовательского доступа ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 20:03 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
так как их не интересовал (как и любого любителя теории множеств чего либо) содержание ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 20:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRossoftwarerпропущено... А кто задаёт порядок в многопользовательской системе? тот кто проектирует А зачем? Тут softwarer прав --- любой порядок пересекающихся транзакций корректен, хотя это и не очень интуитивно. Вот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны . Кстати, ничто не мешает какой-то гипотетической СУБД работать то так, то этак, и это тоже нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 20:15 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRosтак как их не интересовал (как и любого любителя теории множеств чего либо) содержание А в чём сила содержание, брат? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 20:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousя запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны. Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные перед изменением, а во второй - после него. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 20:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousак вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны . Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 21:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
miwaonlinePgSQLAnonymousак вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны . Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете по-моему тут как-то многими переоценивается значение версионности и примеры проводятся никак не демонстрирующие ее мне так кажется гораздо важнее что например не покажутся данные транзакции, которая будет откачена а прочитается что Петя у Васи снял деньги чуть раньше или чуть позже - разницы особой нет, все равно пока с этими прочитанными данными что-то сделают в базе они могут еще не раз поменяться ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 21:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousя запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны. Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные перед изменением, а во второй - после него. И были бы правы. Разве я где-то говорил, что это корректный результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 21:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
SergSuperерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете Нет, минуточку. ;) Если отчёт отображает состояние базы, которого никогда не было, он просто косой. Если СУБД не позволяет сделать отчёт, который бы не отображал таких состояний --- она тоже косая. ;) SergSuperа прочитается что Петя у Васи снял деньги чуть раньше или чуть позже - разницы особой нет, все равно пока с этими прочитанными данными что-то сделают в базе они могут еще не раз поменяться Вот именно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 22:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
miwaonlineНу да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел. Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 22:08 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousViPRosтак как их не интересовал (как и любого любителя теории множеств чего либо) содержание А в чём сила содержание, брат? ;) видишь как народ испугался слова "правильные"? а "правильность" требует осмысления (данные как информация) и тогда субд знал бы как упорядочить конкурирующие транзакции, что бы все было осмысленно не - целостно, атомарно, хренарно - а осмысленно ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 23:15 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousViPRosпропущено... тот кто проектирует А зачем? Тут softwarer прав --- любой порядок пересекающихся транзакций корректен, хотя это и не очень интуитивно. Вот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны . Кстати, ничто не мешает какой-то гипотетической СУБД работать то так, то этак, и это тоже нормально. В правильном блокировочнике отчет, который выполняется 3 дня просто не даст менять данные все эти 3 дня. Грязное чтение может приводить к совершенно причудливым искажениям отчета. Так, например, в какой-то момент процедуры ETL могут просто обнулить агрегатную таблицу перед пересчетом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2015, 23:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousРазве я где-то говорил, что это корректный результат? А процитировал я чьи слова?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 00:22 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousРазве я где-то говорил, что это корректный результат? А процитировал я чьи слова?.. Вы их, очевидно, не поняли. Dimitry SibiryakovНу, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные перед изменением, а во второй - после него. В случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 08:24 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу: Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 08:48 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousmiwaonlineНу да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел. Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то? То, что это один и тот же отчет, в котором нет состояния "до" и "после", а есть две части, которые, по непонятной мне логике, имеют право отображать разные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 08:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
SergSupermiwaonlineпропущено... Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете Я правильно понял, что несогласованный между собой (или противоречащий сам себе) отчет для вас - ерунда? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 08:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinPgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу: Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник? It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ). Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 09:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
miwaonlinePgSQLAnonymousпропущено... Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то? То, что это один и тот же отчет, в котором нет состояния "до" и "после", а есть две части, которые, по непонятной мне логике, имеют право отображать разные данные. Где Вы взяли какие-то "две части"? Я говорил о двух вариантах выполнения отчёта (в версионнике и блокировочнике). Нет никаких частей, никаких "разных данных", оба отчёта корректны. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 09:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousAlexander Ryndinпропущено... Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу: Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник? It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ). Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).Это как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия? Хорошо, что я решил задать вам этот вопрос, а не снес Oracle. А то мне показалось, что вы в прошлый раз сказали вот это: PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 09:13 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия? показываю магию. внимательно следите за руками ! вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 09:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinPgSQLAnonymousпропущено... It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ). Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).Это как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия? А вот так, магии-то не существует. ;) Alexander RyndinХорошо, что я решил задать вам этот вопрос, а не снес Oracle. Да ладно, снесли бы уж, что Вы всё сидите с не-ACID СУБД ;) (и это в 2015-то году! ) Alexander RyndinА то мне показалось, что вы в прошлый раз сказали вот это: PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации. Да, сказал. А в этом случае модификация реально будет выполнена только после отчёта, а не до. ;) Грубо говоря, в блокировочнике последовательность транзакций совпадает с последовательностью COMMIT-ов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 09:38 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.!Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия? показываю магию. внимательно следите за руками ! вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали. Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 09:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
в споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них. Изоляция и обеспечение непротеворечивости в течение непродолжтительного времени (например проведения платежа) или построение быстрого оперативного отчета (например выписка по счету за текущий день) можно и частично переложить на мехнизмы блокировок или версий. Практика показала, что версионный механизм так или иначе реализуется в субд. т.к. наличие выбора режима работы - это лучше чем только один вариант. Лично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:33 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.! вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.[/quot] Э, а какая магия дает возможность версионнику в реальном времени считать все движение по счетам за прошедшие 30 лет при каждом запросе, без всяких закрытых периодов? Банковский день/закрытый период вводились просто в те времена, когда нормальных materialized view и партиционирования еще не было. Да и память/ядра стоили дорого. Так что все-таки лучше без передергиваний. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousYo.!пропущено... показываю магию. внимательно следите за руками ! вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали. Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2. 1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные 2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы 3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander Ryndin, 2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы Мне кажется блокировать писателей явно "не комильфо"... от этого зависит отклик базы данных на запись.(оперативные журналы то не резиновые) И если в базу много пишут...и ровно также много делают аналитических отчётов...производительность по записи блокировочника может просесть по отношению к версионнику.(Ну тут уже выше говорилось,что версионник лучше масштабируется) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Ggg_oldв споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них. 3 дня было взято для того, чтобы подчеркнуть проблему. Та же самая проблема будет, если отчет выполняется 2 минуты. Это как раз из разряда оперативных отчетов, но эти отчеты также могут обращаться к нескольких таблицам, что может привести к рассинхрону. Городить "логику хранения данных в базе и учета изменения в них" ради этих отчетов в OLTP системе никто не будет. Ggg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных системЭто да. Не понятно к чем только фразы про shared nothing. Shared nothing может быть применен как к блокировочникам, так и к версионникам. Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.Простите, какой-то поток сознания про RAM и диски. Какие такие версионники хранят блокировки на диске? Про Oracle могу сказать, что информация о блокировках хранится в заголовке блока данных, который в свою очередь лежит в оперативке. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
miwaonlineSergSuperпропущено... ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете Я правильно понял, что несогласованный между собой (или противоречащий сам себе) отчет для вас - ерунда?неправильно ерунда в том что не получится что Петя должен Васе ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 и сколько это стоит - действительно важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 10:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Ggg_oldв споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них. Это потому что Вы так сказали? ;) А я вот считаю наоборот, и что? Ggg_oldИзоляция и обеспечение непротеворечивости в течение непродолжтительного времени (например проведения платежа) или построение быстрого оперативного отчета (например выписка по счету за текущий день) можно и частично переложить на мехнизмы блокировок или версий. Опять-таки, не согласен. Я считаю, что эта задача (обеспечение непротиворечивости при конкурентном доступе) должна решаться именно СУБД. Ggg_oldПрактика показала, что версионный механизм так или иначе реализуется в субд. т.к. наличие выбора режима работы - это лучше чем только один вариант. Согласен. Ggg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников. Вообще-то кеширование в основном скрывает эти различия, и как блокировки (которые тоже могут храниться на диске), так и версии (которые тоже можно хранить в RAM) обычно находятся именно в RAM. И, кстати, знай добавляй RAM и "будет расти iops-ы". ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH3PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :) а какой физический смысл у отчета про "состояние базы когда-то 3 дня назад". Еще раз повторюсь. 3 дня это для примера, чтобы усугубить. Абсолютно та же проблема будет и на запросе, который работает 1 день, 1 час и 1 минуту. Просто возникать она будет реже/чаще, а для пользователь будет создавать большие/меньшие проблемы. Естественно аналитическую систему с отчетами, работающими часами нужно отделять. В версионнике смешение двух нагрузок также ничего хорошего не приносит. Например, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:03 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinPgSQLAnonymousпропущено... Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2. 1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные 2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы 3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать. Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinНапример, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена. Слушайте, вот честно, когда Вы её в последний раз видели? Я, если не считать искусственно создаваемых примеров - на версии 8.1.7.4, лет двенадцать назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников. это не правда. ни postgres, ни mysql/innodb, ни mssql/snapshot не хранят локи в датафайлах. эта мудрая мысль заложена только только в оракл. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
softwarerAlexander RyndinНапример, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена. Слушайте, вот честно, когда Вы её в последний раз видели? Я, если не считать искусственно создаваемых примеров - на версии 8.1.7.4, лет двенадцать назад.Если честно, то полгода назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:09 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousAlexander Ryndinпропущено... Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2. 1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные 2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы 3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать. Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции)....и пусть весь мир подождет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:10 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH33) Версионники, почему-то, сложнее администрировать. По крайней мере, DBA для DB2 и MS SQL стоят дешевле, чем для Oracle/Postgre и часов на типовую задачу у них уходит меньше. Не знаю, проблемы с архитектурой или чем-то еще )Это по причине того, что вы сравниваете среднюю температуру по больнице. В вашу статистику попадают как DBA, сопровождающие банковские системы, так и DBA с 1С на MSSQL. Если вы начнете сравнивать яблоки с яблоками, то увидите, что классный MSSQL спец получает не меньше чем классный спец по Oracle. Просто крутых систем на MSSQL построено раз два и обчелся, а на Oracle куда не плюнь бизнес-критические системы. Ну те же банки возьмите - они в России сидят на Oracle в 90% случаев. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:16 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH3PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :) Это да. ;) DPH31) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2. В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам. Подпишусь. "Слушайте, слушайте, и не говорите, что не слышали!" ;) DPH3Ну и для реальных задач выбор между блокировочником и версионником не так уж и важен. А вот как реализовано партиционирование, материализованные представление, инкрементальный бакап, log shipping и сколько это стоит - действительно важно. Вообще-то да, но с учётом того, что "настоящих" (с полноценным версионным SERIALIZABLE) версионников не так уж и много, выбор всё равно важен. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH3часов на типовую задачу у них уходит меньше. Пример "типовой операции" - В СТУДИЮ!!! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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, которые ничего не блокируют, если честно. ;) А кроме того, чем плоха эта мысль? Потенциально-то это способствует масштабируемости. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:27 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinPgSQLAnonymousпропущено... Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции)....и пусть весь мир подождет. В худшем случае --- да. ;) А если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;) Уже наступил вечер, а транзакции всё откатывались. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
1) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2. В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам. А пропадают деньги у кого у оракла или дб2?... Судя по всему у оракла... Ну в принципе,если разработчики не занют разницы..это в принципе их косяк... Ведь версионник может эмулировать блокировочник. set transaction exclusive mode или select for update... И тогда нужный набор будет ждать. (Хотя для отчётов...значение иметь не будет всё равно...так же будут формироваться) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:36 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.!Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия? вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. Тока если блокировочник вдруг не эскалирует блокировку (а для 3-дневного отчета у него будут все причины это сделать). Тогда никакой закрытый период не поможет. Только если все в отдельные таблицы (считай базу) не переносить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH3Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :) Это вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик. А у версионника про это даже думать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH31) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2. В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам. ну это проблема просто ничто, на фоне того, что творят программисты db2. по скольку serializable на db2 по сути не работоспособен, обсолютно все используют RC, не подозревая какую кашу выдает этот уровень у db2. на RC db2 не способен гарантировать, что запрос не прочитает одну и ту же запись несколько раз из-за того, что кто-то ее проапдейтил и она невместившись переместилось в другое место. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:52 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;) Это что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 11:54 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Nitro_JunkiePgSQLAnonymousА если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;) Это что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции? Ну а если такая система? Версионник-то для этой задачи как-то очень не... ;) Мне бы хотелось, чтобы в одной СУБД можно было делать что-то вроде: Код: sql 1.
То есть выбирать механизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 12:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Nitro_Junkie Это что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции? а в чем проблема ? смотрите TPC-C, те самые 100500 пишущих примитивных транзакций, версионный оракл там всех делает в одни ворота и именно на идентичной технике ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 12:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.!смотрите TPC-C Хранимых агрегатов нет, конкуренции по складам - 1% максимум. Да, да, отличный пример... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 12:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.!Nitro_JunkieЭто что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции? а в чем проблема ? смотрите TPC-C, те самые 100500 пишущих примитивных транзакций, версионный оракл там всех делает в одни ворота и именно на идентичной технике Как конкретно он там всех делает, т.е. какие запросы используются (хотя бы cсылкой не поделитесь)? Меня в основном интересует вот что: Там только SERIALIZABLE и никаких SELECT FOR UPDATE? Там именно 100500 конкурирующих за те же записи "пишущих примитивных транзакций"? И вообще, если я правильно помню, в TPC-C измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 12:36 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 13:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс? Ваших релевантных постов тоже что-то не находится. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 13:48 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousНе нашёл по ссылкам ответов на свои вопросы (или где именно на tpc.org посмотреть, как реализовано в Oracle): может вам балетом заняться ? откройте любой Full Disclosure Report, там листинг все сторед процедур прилагается. общее описание тут http://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-C_V5-11.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 13:56 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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.
И я повторю вопрос: если я правильно помню, в TPC-C измеряется производительность транзакции, которая вставляет новые заказы, разве там высокая конкуренция за один ресурс? Не знаете / не хотите --- не отвечайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 15:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА может, Вам? Так трудно ответить (если знаете), а не в Full Disclosure Report посылать (а то мне прямо делать больше нечего, кроме как искать это в исходниках в 300-страничном отчёте)? конечно, ведь это так сложно найти PROCEDURE neworder в документе и посмотреть, что там за что конкурирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 15:17 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.!PgSQLAnonymousА может, Вам? Так трудно ответить (если знаете), а не в Full Disclosure Report посылать (а то мне прямо делать больше нечего, кроме как искать это в исходниках в 300-страничном отчёте)? конечно, ведь это так сложно найти PROCEDURE neworder в документе и посмотреть, что там за что конкурирует. Знаете что, это Вы утверждали, что TPC-C является хорошей иллюстрацией к обсуждаемому вопросу (100500 транзакций конкурируют за один ресурс), вот Вы и приводите конкретные доказательства. А то я нашёл, посмотрел и теперь думаю --- причём тут это?! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 16:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, человек который не мог найти процедуру в паре строк кода смотрит и думает, да ладно шутить, чем он там думает ! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 16:26 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Nitro_JunkieDPH3Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :) Это вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик. А у версионника про это даже думать не надо.тут то как раз грязное чтение можно использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 16:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Yo.!PgSQLAnonymous, человек который не мог найти процедуру в паре строк кода смотрит и думает, да ладно шутить, чем он там думает ! А что, существо, которое привело не относящийся к делу пример и ещё требует, чтоб я что-то в нём искал, по теме сказать нечего? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 давно не связывался. А больше сравнивать-то и не с кем ) Хотя да, это совсем "личный" опыт, статистики нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
irbis_alА пропадают деньги у кого у оракла или дб2?... У Оракла, у Оракла ) Ну в принципе,если разработчики не занют разницы..это в принципе их косяк... Ведь версионник может эмулировать блокировочник. Да кто-бы спорил, что это их косяк. Но увы, очень мало разработчиков реально разбираются в БД. Хотя при этом считают, что все хорошо знают и даже не думаю о консультациях или проверке по документации. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:33 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Nitro_JunkieЭто вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик. А у версионника про это даже думать не надо. Вот да, и не думают. В результате по запросу на всю базу на каждый чих - с соответствующем результатом. Вообще, такие данные надо прямо из кэша на applayer забирать. Или получать dirtyread, благо точность не важна. Или с реплики (в CQRS-style системах). А вот если у нас жесткий лимит на количество реализации за период и нельзя за него выходить - то и на версионнике сразу вылезет select for update со всеми радостями ) Особенно весело, если таких лимитов несколько десятков нужно проверять на каждую транзакцию ) У меня, кстати, обычно именно такие задачи ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:38 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Nitro_JunkieЭто что у вас за система такая? Торговля резервными валютами или фьючерсами по нефти, что у вас 100500 ПИШУЩИХ транзакций пересекаются по ИЗМЕНЯЕМЫМ данных? Или вы прибыль предприятия решили материализовать и обновлять в каждой транзакции? Ну, например, перевод комиссии с забалансового счета на счет популярного мерчанта. Или перевод выигрышей с забалансового счета на счет кастомера. Во всех случаях - жесткие требования к овердрафту (кроме всего прочего). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:43 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH3Вообще, такие данные надо прямо из кэша на applayer забирать. Или получать dirtyread, благо точность не важна. Или с реплики (в CQRS-style системах). А вот если у нас жесткий лимит на количество реализации за период и нельзя за него выходить - то и на версионнике сразу вылезет select for update со всеми радостями ) Как данные забирать - так с кэша на апплаере, а как лимит контролировать, так позарез в БД. Ню-ню... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
DPH3А вот если у нас жесткий лимит на количество реализации за период и нельзя за него выходить - то и на версионнике сразу вылезет select for update со всеми радостями ) Ничего такого там не вылезает. Я ещё раз повторюсь, из популярных СУБД полноценный версионник только один, и никаких "select for update" там не нужно. Просто используете SERIALIZABLE для всех модифицирующих транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:48 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovDPH3Вообще, такие данные надо прямо из кэша на applayer забирать. Или получать dirtyread, благо точность не важна. Или с реплики (в CQRS-style системах). А вот если у нас жесткий лимит на количество реализации за период и нельзя за него выходить - то и на версионнике сразу вылезет select for update со всеми радостями ) Как данные забирать - так с кэша на апплаере, а как лимит контролировать, так позарез в БД. Ню-ню... (удивлённо оглядывась на других участников) А что, с блокировочниками кто-то не грешен dirty read на таких задачах (точность-то не важна)? А если серьёзно, то кэш на application layer тут вполне подойдёт. А кто хочет, может и в базу сходить... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 17:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousПросто используете SERIALIZABLE для всех модифицирующих транзакций. Угу, просто загоните его в однопользовательский режим и забудьте слово "масштабирование". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 18:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а других способов и нет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 18:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousПросто используете SERIALIZABLE для всех модифицирующих транзакций. Угу, просто загоните его в однопользовательский режим и забудьте слово "масштабирование". С чего бы это (я вот никогда не использовал БД, в которой только один разделяемый ресурс)? Это у Вас иррациональный страх / одержимость "производительностью" или реальная статистика использования? ;) Люди-то используют и не знают. ;) Кстати, результаты упоминавшегося тут TPC-C, который выполняется на этом самом SERIALIZABLE и показывает нормальные TPS-ы, Вам ни о чём не говорят? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 19:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousрезультаты упоминавшегося тут TPC-C, который выполняется на этом самом SERIALIZABLE и показывает нормальные TPS-ы, Вам ни о чём не говорят? ;) Мне это говорит о том, что Вы таки не понимаете как устроен этот TPC-C и что он призван продемонстрировать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 19:24 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousпоказывает нормальные TPS-ы Кстати говоря, вас не смущчет, что тот "единственный полноценный версионник", которого вы предлагаете мучить SERIALIZABLE и тот, кто "показывает нормальные TPS-ы" - совершенно разные СУБД?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 19:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousрезультаты упоминавшегося тут TPC-C, который выполняется на этом самом SERIALIZABLE и показывает нормальные TPS-ы, Вам ни о чём не говорят? ;) Мне это говорит о том, что Вы таки не понимаете как устроен этот TPC-C и что он призван продемонстрировать. Ещё раз, аргументы есть? Не нужно бросать что-то "свысока", меня это не впечатляет. ;) А TPC-C, по идее, моделирует какую-то приближенную к реальной задачу. А по-Вашему, что он призван продемонстрировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 20:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА TPC-C, по идее, моделирует какую-то приближенную к реальной задачу Да щаззз... Этой задаче до реальности ещё дальше чем Вашим 100500 откатам. И единственное, что TPC-C демонстрирует, это мысль "партишенинг рулит, остальное суксь". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 20:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousпоказывает нормальные TPS-ы Кстати говоря, вас не смущчет, что тот "единственный полноценный версионник", которого вы предлагаете мучить SERIALIZABLE и тот, кто "показывает нормальные TPS-ы" - совершенно разные СУБД?.. А Вас не смущает, что PostgreSQL --- это community project и даже не собирается участвовать в TPC (насколько я помню, тратить на это деньги и ресурсы сообщество считает нецелесообразным)? Вы вообще можете показать там результат хоть одной opensource СУБД? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 20:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousА TPC-C, по идее, моделирует какую-то приближенную к реальной задачу Да щаззз... Этой задаче до реальности ещё дальше чем Вашим 100500 откатам. И единственное, что TPC-C демонстрирует, это мысль "партишенинг рулит, остальное суксь". А обоснование будет? Т.е. вот дураки сидели, чего-то упорно моделировали, а тут пришёл весь такой умный Dimitry Sibiryakov и сразу всё объяснил? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 21:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА обоснование будет? Спецификацию его прочитай уже. И раньше этого - не возвращайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2015, 21:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousА обоснование будет? Спецификацию его прочитай уже. И раньше этого - не возвращайся. То есть, не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2015, 09:40 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousBTW, who are you to fucking lecture me?! вот именно, вылез какой-то PgSQLAnonymous, который троллит и прикидывается, а может и не прикидывается. Судя по вашим сообщениям, вам еще учиться и учиться, а вы тут шашкой машете. Удивительно, что есть люди, которые ведутся на ваши удивительные откровения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2015, 18:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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, в отличие от моих. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2015, 19:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousВ Вашем сообщении агрументов ровно 0, в отличие от моих. Да, да. Но пример, в котором необходимы 100500 откатов, мы увидим когда-нибудь?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2015, 20:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousВ Вашем сообщении агрументов ровно 0, в отличие от моих. Да, да. Но пример, в котором необходимы 100500 откатов, мы увидим когда-нибудь?.. Какой именно? Такой 17619422 ? И вообще, я уже говорил, если по условиям задачи есть высокая конкуренция за ресурс, то 17608256 . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2015, 22:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousКакой именно? Такой? Нет, такой, который потребует 100500 откатов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2015, 22:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousКакой именно? Такой? Нет, такой, который потребует 100500 откатов. Хорошо, в чём именно вопрос? Чем не устраивают вышеприведённые? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2015, 23:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousв чём именно вопрос? Чем не устраивают вышеприведённые? В них нет конкуренции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 00:42 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousв чём именно вопрос? Чем не устраивают вышеприведённые? В них нет конкуренции. Странно. Хорошо, следующий пример: БД брокера, у которого есть 100500 клиентов. В ней есть таблица счетов этих клиентов и самого брокера, типа такой: Код: sql 1. 2. 3. 4.
Брокер предоставляет клиентам займы для совершения сделок (пропорционально их средствам), если у него самого они есть ( 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.
Есть здесь конкуренция за счёт_брокера или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 12:36 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousЕсть здесь конкуренция за счёт_брокера или нет? Нету. Во-первых, потому что займ без одобрения брокера не получить, а во-вторых, тервер и квантмех сильно против твоего допущения, что все 100500 клиентов захотели это сделать в одну и ту же миллисекунду. Поэтому - конкуренции нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 13:03 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, кривая реализация. В этой реализации никто и никогда не узнает куда же делись деньги со счёта. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 13:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousЕсть здесь конкуренция за счёт_брокера или нет? Нету. Во-первых, потому что займ без одобрения брокера не получить, Ерунда. В современной торговле акциями этот займ зачастую предоставляется автоматически . Dimitry Sibiryakov а во-вторых, тервер и квантмех сильно против твоего допущения, что все 100500 клиентов захотели это сделать в одну и ту же миллисекунду. Поэтому - конкуренции нет. Во-первых, разве я говорил о миллисекунде? И, во-вторых, "тервер и квантмех" имеют мало отношения к биржевым торгам, особенно при резких движениях рынка. ;) Короче говоря, в некоторых условиях у достаточно крупного брокера тысячи транзакций могут пересечься. Или все проблемы с конкурентным доступом нужно решать их отрицанием? ;) Кстати, вот можно оценить объёмы транзакций на бирже: http://www.nasdaqtrader.com/Trader.aspx?id=DailyMarketSummary И это только сделки, заявок (которые используются в моём примере) за день делается гораздо больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 13:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Симонов ДенисPgSQLAnonymous, кривая реализация. В этой реализации никто и никогда не узнает куда же делись деньги со счёта. И это Вы увидели из отрывка транзакции, приведённого для демонстрации конкуренции? ;) И что именно в нём не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 13:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousВо-первых, разве я говорил о миллисекунде? А сколько тогда по времени работает твоя процедура? Достаточно долго для того, чтобы быть вызванной ещё 100500 раз прежде чем она завершится?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 13:52 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousВо-первых, разве я говорил о миллисекунде? А сколько тогда по времени работает твоя процедура? Достаточно долго для того, чтобы быть вызванной ещё 100500 раз прежде чем она завершится?.. Достаточно долго для того, чтобы 100500 выполняющих её транзакций успели пересечься. А потом 100499, а потом 100498 ... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 14:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousДостаточно долго для того, чтобы 100500 выполняющих её транзакций успели пересечься. Два селекта + два апдейта по первичному ключу длятся так долго? Ну, неудивительно, что PG предпочитает не светиться в публичных тестах быстродействия. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 14:10 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousДостаточно долго для того, чтобы 100500 выполняющих её транзакций успели пересечься. Два селекта + два апдейта по первичному ключу длятся так долго? Ну, неудивительно, что PG предпочитает не светиться в публичных тестах быстродействия. Это отрывок транзакции, приведённый для демонстрации конкуренции. Многоточия и комментарии явно на это указывают. А по теме: есть здесь конкуренция за счёт_брокера или нет? Я вот всё не пойму: вы что, пытаетесь отрицать саму возможность конкуренции за ресурс в БД? Или к чему ведут все эти ответы? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 14:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, я к тому что при проектировании обычно конкуренцию стараются избегать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 14:42 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousЯ вот всё не пойму: вы что, пытаетесь отрицать саму возможность конкуренции за ресурс в БД? Теоретическую возможность возникновения update conflict я, конечно же, не отрицаю. Практическую возможность 100500 откатов - отрицаю начисто. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2015, 14:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТеоретическую возможность возникновения update conflict я, конечно же, не отрицаю. Практическую возможность 100500 откатов - отрицаю начисто. Этого не может быть, потому что этого не может быть никогда! (с) мультфильм. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 10:46 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Не, конечно, блондинки могут выйти на улицу и встретить динозавра: вероятность-то 50/50... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 11:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНе, конечно, блондинки могут выйти на улицу и встретить динозавра: вероятность-то 50/50... Ну так обоснуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 11:42 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Infernal V. RavenНу так обоснуйте. Обосновываю: существует всего два вероятных исхода: "блондинка встретит динозавра" и "блондинка не встретит динозавра". Согласно теории вероятности, вероятность каждого отдельного исхода равна единице, делённой на число возможных исходов. Следовательно, у блондинки есть вероятность 50% на встречу с динозавром. Сможете опровергнуть? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 11:56 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСможете опровергнуть?А без передергиваний можете по теме? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 13:30 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Infernal V. RavenА без передергиваний можете по теме? Доказательство несуществования это практически невозможная вещь. Так что лучше Вы расскажите о том, при каких обстоятельствах на Вашей системе при реальной эксплуатации 100500 транзакций сошлись на update conflict-е и 100499 из них откатились. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 13:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну как же -- следите за руками -- у пассажыра 100500 клиентов обновляют свои счета, и счет общего брокера без создания на нем [счёте брокера] очереди блокированием (см его структуру счетов выше, и бред с транзакцией там же). т.е. всё -- в сериалайзебле. вот они все остальные и откатятся -- т.к. как только первый закоммитит и когда придет пора оставшихся сперматозоидов изменить счет брокера -- им скажут, что сериалайзеблейность -- йок. гуляйте, братцы, до следующей овуляции. Модератор: давайте без перехода на личности ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 14:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттану как же -- следите за руками -- у пассажыра 100500 клиентов обновляют свои счета, и счет общего брокера без создания на нем [счёте брокера] очереди блокированием (см его структуру счетов выше, и бред с транзакцией там же). А создание блокировки --- это, внезапно, подход блокировочника. ;) Кстати, в чём бред с транзакцией, конкретно ? И вообще, у меня есть другой вопрос к аудитории (по определениям): как отличить блокировочник от версионника? ;) Вот MS SQL 2012 с его версионным SNAPSHOT (эквивалентным REPEATABLE READ в PostgreSQL или SERIALIZABLE в Oracle) и чисто (без использования версий) блокировочным SERIALIZABLE --- это блокировочник или версионник? А PostgreSQL 9.4 с его чисто версионным SERIALIZABLE и возможностью накладывать блокировки на записи --- блокировочник или версионник? А MySQL + InnoDB с его наложением блокировок в SERIALIZABLE и версионными другими уровнями (если я правильно помню) --- блокировочник или версионник? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 16:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИ вообще, у меня есть другой вопрос к аудитории (по определениям): как отличить блокировочник от версионника? ;) Хооо... Поциент внезапно признался, что не знает, о чём, собственно, спорил. Ты не поверишь, но эти термины обозначают технологии взаимодействия читателей с писателями для получения первыми консистентных данных, а вовсе не писателей между собой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 16:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСогласно теории вероятности, вероятность каждого отдельного исхода равна единице, делённой на число возможных исходов. Пурга ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 18:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
OFFTOPIC ON mikron, Вы о чем? Про динозавра? Так ведь это АКСИОМА (т.е. Вещь, не требующая доказательств) Поискал в И-нет.... на другом форуме уже на 6 посте вероятность встречи динозавра превысила 4/5 ))) botmihailm Итог вероятность поднялась до 4/5 Умоляю, остановитесь! Я уже на улицу выходить боюсь ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 18:30 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 19:52 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous Гарантирует только использование протоколов изоляции, например SS2PL (Strong Strict Two-Phase Locking), SSI (Serializable Snapshot Isolation) или даже OCC (Optimistic Concurrency Control). О, какая знакомая песенка... Скатился-таки в накатанное русло. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 20:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Дима, вы что-то можете понять в постах ПГАнонима. Как по мне он несет какую-то нелепицу. К нему не обращаюсь, так как, если я не могу понять в постах ничего, то в его объяснениях и подавно, а коль вы с ним спорите, наверное все же понимаете о чем идет речь. Мне кажется здесь перемешаны понятия и термины. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2015, 21:26 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, опять ты бредятину несешь. 1. MS SQL с включенной версионностью является версионником. Без - блокировочником. 2. при сериализуемых транзакциях отсутствует понятие "блокировочности" или "версионности". Нафига ты тут про сериализацию вталкиваешь - непонятно. 3. какие нафиг "протоколы изоляции" для версионника? какие там еще блокировки, тем более двухфазные? Версионность придумана в 1974 году чтобы не было блокировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 13:54 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvPgSQLAnonymous, опять ты бредятину несешь. Да нет, только ты. kdv1. MS SQL с включенной версионностью является версионником. Без - блокировочником. А почему? kdv2. при сериализуемых транзакциях отсутствует понятие "блокировочности" или "версионности". Нафига ты тут про сериализацию вталкиваешь - непонятно. Отсутствует только в твоей голове. Ещё раз, есть протоколы изоляции для блокировочника (SS2PL) и для версионника (SSI). kdv3. какие нафиг "протоколы изоляции" для версионника? какие там еще блокировки, тем более двухфазные? Версионность придумана в 1974 году чтобы не было блокировок. Я же эти протоколы даже указал , ты читать умеешь? Обычные блокировки для UPDATE-ов, ты не знал? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 14:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИ вообще, у меня есть другой вопрос к аудитории (по определениям): как отличить блокировочник от версионника? ;) Трудно с этими жаргонизмами. 1. Есть БД с полным набором блокировок. 2. Есть БД с возможностью работы с несколькими версиями одних и тех же данных (например на разные моменты времени). Собственно сами по себе эти понятия не являются антагонистами. Эти методы можно использовать для обеспечения изоляции транзакций. Соответственно если используется 1 подход, то называем блокировочник. Если второй - версионник. Если третий - ни то ни сё. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 15:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Топикстартеру рекомендую почитать хорошую инженерную статью, где уже все давно разложено: SQLPERFOMANCE.com:The SNAPSHOT Isolation Level ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 15:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousОбычные блокировки для UPDATE-ов, ты не знал? ;) я не знаю, как там у PosgreSQL, но у InterBase и Firebird нет никаких "блокировок для UPDATE". ты бы лучше почитал, хоть что-нибудь, как версионность организована, и где в блокировочнике блокировки возникают. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 16:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvPgSQLAnonymousОбычные блокировки для UPDATE-ов, ты не знал? ;) я не знаю, как там у PosgreSQL, но у InterBase и Firebird нет никаких "блокировок для UPDATE". ты бы лучше почитал, хоть что-нибудь, как версионность организована, и где в блокировочнике блокировки возникают. осторожно интересуюсь за интербейс простите, а если в 5-ти транзакциях я захочу изменить одну и ту же запись , в порядке 1.2.3.4.5, так и не заккомитив ни одну из. то что у меня произойдет, и в каком случае ? что будет происходить , когда я попытаюсь закоммитить например сразу 5-ю ? приведите листинг, если не затруднит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 17:16 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсьчто у меня произойдет, и в каком случае ? Облом во всех случаях. "Lost updates" считаются недопустимыми. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 17:24 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, т.е. блокировок не будет, но облом произойдёт ? а какими словесами и абстракциями он будет оформлен. -- в пж просто тупо выстроится очередь (за блокировками), если в каждой последующей не пытаться специально сказать предварительное SELECT .... FOR UPDATE NOWAIT; поэтому сказать commit в 5-ю просто не удастся-- она будет занята ожиданием. единственно, куда можно будет сказать 1-й коммит -- это первая. Второй -- только во вторую. И т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 17:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсьа какими словесами и абстракциями он будет оформлен. update обломится с ошибкой "update conflict" либо сразу, либо после коммита первой транзакции в зависимости от параметров транзакции (которых у Interbase гораздо больше чем только уровень изоляции). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 17:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а организовать примитивную очередь --- никак ? ил всё же можно и по человечески ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсьа организовать примитивную очередь --- никак ? Interbase служит для хранения и обработки данных. Для организации очередей есть более другой софт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:10 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovосторожно интересуюсьа организовать примитивную очередь --- никак ? Interbase служит для хранения и обработки данных. Для организации очередей есть более другой софт. для чего мне нужна очередь на ресурс -- я вас вообще то не спрашивал. спасибо. так могу я организовать очередь на ресурс, если к примеру хочу согласованно обновлять "агрегатное" значение некой "суммирующей" таблички, не прерывая транзакции, по касательной наваривающие ту же строку ? или в интербейс есть "более другие" [не надо вводить это в обыденность, это таки речевая ошибка светы из иваново] методы подсчета таких инкрементально навариваемых агрегатов ? если есть -- то какие ? (факультативный интерес, да. к маргинальным технологиям, да.) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсьесли есть -- то какие ? Например такие: http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl= Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, смотрб на первый пост, и задаюсь вопросом -- а что. между подсчетом тотала в первом стейтменте и делетом -- никто не может вставить и закоммитить запись ? почему ? а если может -- то в тотал сумма не попадёт, а в делете (в стандартном read commited) -- очень может. Или у вас снепшот для всех стейтментов определен началом транзакции ? как уровень изоляции зовётся ? -- т.е. я такое умею в пж в read commited, но я по суррогатному id удаляю. чтобы лишнего не хапнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:35 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсь, а какая проблема со снапшотом? Главное чтобы он долгим не был. И как раз хранимые агрегаты помогают в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсьИли у вас снепшот для всех стейтментов определен началом транзакции ? как уровень изоляции зовётся ? Зовётся "concurency" и является умолчательным уровнем изоляции от начала времён. Соответствует свежеизобретённому в MS "snapshot". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovосторожно интересуюсьесли есть -- то какие ? Например такие: http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept?hl= для неаддитивных агрегатов -- не взлетит. печалька. а я кое где люблю иметь неаддитивтные (неперестановочные) array-и в агрегатных полях -- в порядке денормализации, позволяющей хитромудрые поисковые индексы по разным комбинациям полей и выражений. в основном -- функциональные. Часто -- условные. Да и полей -- поболее одного ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Симонов Денисосторожно интересуюсь, а какая проблема со снапшотом? Главное чтобы он долгим не был. И как раз хранимые агрегаты помогают в этом. до "repeatable read" я предпочитаю без нужды не подыматься, почти всегда можно и в "read commited" либо на суррогатах чеки, либо на служебных xmin/xmax выстроить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсья кое где люблю иметь неаддитивтные (неперестановочные) array-и в агрегатных полях -- в порядке денормализации, позволяющей хитромудрые поисковые индексы по разным комбинациям полей и выражений Но деталями ты, конечно же, не поделишься. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:52 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovосторожно интересуюсья кое где люблю иметь неаддитивтные (неперестановочные) array-и в агрегатных полях -- в порядке денормализации, позволяющей хитромудрые поисковые индексы по разным комбинациям полей и выражений Но деталями ты, конечно же, не поделишься. а детали простые -- агрегируется нечто, в порядке очереди. используется с учетом порядка в массивах (он же -- порядок операций) . используется вынужденно, типа "поисковое матвью" под поисковые запросы, плохо ложащиеся на изначальную модель данных (запросы с учетом порядка операций по объекту -- и индексы -- по функциям, от порядка в т.ч.). всё сделано хендджобом, т.к. матвью "из корбки" пока куцые. скучная проза жызни одним словом. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Ggg_oldТопикстартеру рекомендую почитать хорошую инженерную статью, где уже все давно разложено: SQLPERFOMANCE.com:The SNAPSHOT Isolation Level Кстати да, статья хорошая. Только про SSI там ничего, естественно, нет. Про него можно прочитать здесь https://wiki.postgresql.org/wiki/SSI и далее по ссылкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 19:27 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 и ожидание --- это блокировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 19:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА вот это вот "сразу" и ожидание "после коммита первой" за счёт чего достигается? ;) За счёт параметров транзакции wait/nowait. PgSQLAnonymousЯ вот тут что-то нашёл про Interbase: Где нашёл? PgSQLAnonymousПо-моему, lock и ожидание --- это блокировка. Да. Но эта блокировка не относится ни к строкам, ни к таблицам. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 19:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousА вот это вот "сразу" и ожидание "после коммита первой" за счёт чего достигается? ;) За счёт параметров транзакции wait/nowait. Я имел в виду --- за счёт какого механизма? Dimitry SibiryakovГде нашёл? http://conferences.embarcadero.com/article/32280/ Dimitry SibiryakovДа. Но эта блокировка не относится ни к строкам, ни к таблицам. В процитированном фрагменте 5 раз повторяется слово row и указан row level write lock. То есть весь этот фрагмент неправильный? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 20:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousЯ имел в виду --- за счёт какого механизма? Семафоры и события. PgSQLAnonymousТо есть весь этот фрагмент неправильный? Правильный. Только упрощённый для понимания чайниками. Не расписывать же последовательность действий на три страницы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 20:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousЯ имел в виду --- за счёт какого механизма? Семафоры и события. PgSQLAnonymousТо есть весь этот фрагмент неправильный? Правильный. Только упрощённый для понимания чайниками. Не расписывать же последовательность действий на три страницы. вот токо не надо переводим на человеческий: "для понимания чайниками" == "годная правильная абстракция" , которой оперируют правильные аффтары , но не способны местные адепты жаренного питуха или вы думаете, что роу-лок в других субд реализован как мужик с пудовым замком , сидящий прямо на секторе диска с записью ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 20:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаили вы думаете, что роу-лок в других субд реализован как мужик с пудовым замком , сидящий прямо на секторе диска с записью ? Зачем думать, когда можно просто точно знать, что в лок-менеджере Interbase нет объекта блокировки класса "запись"?.. "Страница", "транзакция", "таблица" и т.д. и т.п. - есть. "Запись" - нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 21:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, т.е. блокировки записей осуществляются помимо "официального" лок-манагера. немного более другим механизмом бываит. но осуществляются же ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 21:33 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттано осуществляются же ? Нет, не осуществляются. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 21:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, то, что у вас аспергер -- я давно понял т.е. вас спрашивать ни о чём не имеет смысла бывает ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 22:09 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттавас спрашивать ни о чём не имеет смысла Ну, если мои ответы не укладываются в Ваше видение мира, это, конечно, достойный повод их игнорировать. Зашоренность нынче в моде. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 22:40 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
осторожно интересуюсьпростите, а если в 5-ти транзакциях я захочу изменить одну и ту же запись , в порядке 1.2.3.4.5, так и не заккомитив ни одну из. то что у меня произойдет, и в каком случае ? при чем тут коммиты? На втором же апдейте той же записи, что уже изменена в какой-то предыдущей транзакции, ты или получишь повисание в режиме wait, или получишь отлуп в режиме nowait с сообщением "update confict ...". Тут вам не MS SQL с его inserted/updated/deleted. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 01:54 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттат.е. блокировки записей осуществляются помимо "официального" лок-манагера. немного более другим механизмом бываит. но осуществляются же ? вас, анонимов, не поймешь. Либо это чудик с PostgreSQL, который про его версионность вообще ничего не знает (или вообще про версионность), либо вы просто человек, впервые с версионностью столкнувшийся. Популярно про версионность в InterBase/Firebird изложено в статьях на ibase.ru. Например, можно читать отсюда http://www.ibase.ru/devinfo/mga.htm а ответ на ваш вопрос - если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то или выдается сообщение об обломе (в режиме nowait), или происходит повисание по wait с ожиданием результата завершения (commit/rollback) транзакции, которая успела обновить запись первой. То есть, как таковых блокировок в версионнике нет вообще. Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 02:03 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттат.е. блокировки записей осуществляются помимо "официального" лок-манагера. немного более другим механизмом я еще добавлю, что по крайней мере в InterBase/Firebird "официальный лок-манагер" никак не виден на уровне записей. Еще раз повторю, что в версионнике единственный конфликт - это обновление одной и той же записи из двух активных транзакций. Для этого, чтобы исключить все остальные конфликты между читателями и писателями, и придуман версионник. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 02:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvосторожно интересуюсьпростите, а если в 5-ти транзакциях я захочу изменить одну и ту же запись , в порядке 1.2.3.4.5, так и не заккомитив ни одну из. то что у меня произойдет, и в каком случае ? при чем тут коммиты? На втором же апдейте той же записи, что уже изменена в какой-то предыдущей транзакции, ты или получишь повисание в режиме wait, или получишь отлуп в режиме nowait с сообщением "update confict ...". Тут вам не MS SQL с его inserted/updated/deleted.т.е. первая транзакция "модифицирует" (термин , устраивающий курильщика) ресурс "изменяемая запись" таким образом, что он становится недоступен второй транзакции. -- вот это и есть "блокировка записи" здорового человека. (а не наличие записи в официальном некрологе блокировок) вот ещё интересно, что это за ресурс такой -- "транзакция" ? или уровень-то он --"тарнзакции", а лочатся вполне себе реальные ресурсы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 08:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdv<...> а ответ на ваш вопрос - если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то или выдается сообщение об обломе (в режиме nowait), или происходит повисание по wait с ожиданием результата завершения (commit/rollback) транзакции, которая успела обновить запись первой. <...> Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки". ну вот это всё -- про реализацию "блокировки здорового человека" в FB. немного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот. ну да ладно, с вашей бандой аутистов разговаривать надо на языке конкретной реализации, про абстракцию или, не дай бог, инварианты -- это к "более другим" людям (из писателей доки интербейса). да и к такому разговору -- про реализацию -- у вас вот только сибиряков, hvlad местами, и ещё какой-то перец из разрабов были готовы. Но и те через слово вставали в позу, лицом к мекке, и начинали правоверные мантры. а уж рядовые пользователи -- так те вполне ожидаемо не поддерживают каких либо интрефейсов к внешнему миру -- ни тебе об общеупотребительных абстракциях, ни о тонкостях реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот. И такой механизм существует. Сравнивается номер текущей транзакции с номером транзакции, создавшей версию. Оффигительно сложный такой "механизм": сравнение двух целых чисел на больше/меньше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот. то есть, вы не способны прочитать простейшую статью http://www.ibase.ru/devinfo/mga.htm в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 --- это "их личные половые проблемы". Может быть, не стоит передёргивать у людей на глазах? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 13:28 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттавас спрашивать ни о чём не имеет смысла Ну, если мои ответы не укладываются в Ваше видение мира, это, конечно, достойный повод их игнорировать. Зашоренность нынче в моде. Просто Вы говорите на разных языках. Он вас спрашивает про механизм запрета второй транзакцией создавать новую версию строки, если первая такую строку создала и не завершилась. Вы говорите - у нас такого механизма нет, мы пользуемся семафорами. P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 13:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев, Следует читать не строку создала , а версию . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 13:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата" (ожидание lock-а) называется блокировкой. Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же спрошу: блокировкой чего именно это называется? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 13:59 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Блокировкой операции по созданию новой версии строки. В общем случае в пределах бранча (в нотаци того же Oracle - workspace если я не путаю). Естественно это отличается от блокировки на изменение текущего состояния строки. Просто версионник по другому текущее состояние строки не изменяет. Или он не версионник. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:03 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев, И к стати там не одна блокировка. Порой версионники блокируют возможность чтения из измененной версии незавершенной транзакции. Так же в этот момент может появляться блокировка на изменение структуры таблицы. И куча еще каких. Трудно себе представить систему с конкурирующими процессами без блокировок (не путать с ожиданиями). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:08 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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, смысл которого в версионнике не очень понятен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdv<> то есть, вы не способны прочитать простейшую статью http://www.ibase.ru/devinfo/mga.htm в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как? Я уже писал когда-то , что как только мне войдёт в голову воспользоваться жаренным или его соплеменниками -- я перестану задавать глупые вопросы там, где можно кратенько rtfm. [и начну во множестве иных случаев] но вот пока найдена только одна причина думать в эту сторону (и очень много -- против). т.ч. ничего, если я знающих людей поспрашиваю ? Пусть даже иноязычных. И да, вы правы -- я давно ничего не читаю сплошь. Только по диагоналям и квадратно--гнездовым. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:40 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата" (ожидание lock-а) называется блокировкой. Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же спрошу: блокировкой чего именно это называется? если мы теряем возможность работать с неким ресурсом, как с незатронутым -- то блокировкой этого ресурса. в данном случае теряется возможность работать с записью. т.е. блокируется запись. повторяю, на всякий случай, что блокировка -- это абстракция, а не пудовый замок, учтённый в некоем специально лежащем журнале. журнал и прочее -- моменты реализации. их может и не быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:46 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей АрсеньевПорой версионники блокируют возможность чтения из измененной версии незавершенной транзакции. Ещё раз: что в данном случае для Вас означает "блокируют"? Процесс, пытающийся прочитать изменённую версию, повиснет на ожидании завершения конкурирующей транзакции? Нет, такого не случается. Изменённые версии свободно читаются кем угодно. Только в result set они никогда не попадают. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdv<> если транзакция создала версию (изменила и удалила запись), то никто кроме этой транзакции эту версию видеть не может (и не должен), в принципе, пока транзакция не завершится commit-ом. Этим обеспечивается примитивный уровень изолированности read committed. <> ну как же , а движок птицы должен где-то наблюдать наличие блокировки "конфликта" т.е. как минимум он (движок) -- видеть должен. ditry read (опционально доступный по особой просьбе) мог бы привнести некоторые забавные возможности ["сообщения" между конкурентами -- в частности]. Но вот проблем в неокрепшие умы -- гораздо больше. Поэтому его естественно опасаться. А т.к. что-то опасное реализовывать ещё и лениво -- то его и не реализовывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:54 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттав данном случае теряется возможность работать с записью. т.е. блокируется запись. Не теряется. Запись по-прежнему можно свободно читать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:54 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттав данном случае теряется возможность работать с записью. т.е. блокируется запись. Не теряется. Запись по-прежнему можно свободно читать. ага, движком. но не клиентом. или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту тогда это становится интересным. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттав данном случае теряется возможность работать с записью. т.е. блокируется запись. читать предыдущую версию записи в версионнике никто не запрещает. эттат.е. как минимум он (движок) -- видеть должен. разумеется, движок видит весь пакет версий, и определяет, какие версии может видеть конкретная транзакция. эттаа движок птицы должен где-то наблюдать наличие блокировки "конфликта" в смысле "понимать, что версия создана еще активной транзакцией, и другая транзакция обновить эту запись не может" - да. Но видите-ли, до момента конкурирующего update движок никаких "наличий блокировки "конфликта"" не видит, потому что в этот момент никаких конфликтов быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаDimitry Sibiryakovпропущено... Не теряется. Запись по-прежнему можно свободно читать. ага, движком. но не клиентом. или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту тогда это становится интересным. -- ах, да , я-то про версию -- читать то что можно читать старую версию -- это естественно (её ж никто не лочил в версионнике) то что нельзя писать в запись -- это потеря возможности работы с ресурсом -- и именно это и есть блокировка записи (на запись, но не на чтение) -- т.к. это очевидно козлу, а вы им явно не являетесь -- то дима,гоги,я детектед и вообще, -- ну фуу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаага, движком. но не клиентом. вот говорю - прочитайте мою статью. Нет, валяет дурака. - транзакция 10 создает запись, делает commit - транзакция 20 читает версию, созданную транзакцией 10. - транзакция 30 обновляет запись, пока не завершается - транзакция 20 продолжает спокойно читать версию, созданную транзакцией 10. - транзакция 30 делает commit - если транзакция 20 - snapshot, то она продолжает читать версию, созданную транзакцией 10. - если транзакция 20 - read committed, то она читает версию, созданную транзакцией 30. какая вам тут радость от того, что все это время движок читает все версии? Иначе и быть не может, на то он и движок, чтобы управлять всем этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттав данном случае теряется возможность работать с записью. т.е. блокируется запись. этта-- ах, да , я-то про версию -- читать то что можно читать старую версию -- это естественно (её ж никто не лочил в версионнике) Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:30 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
этта-- идёт спор о неумении пользоваться общеупотребительными абстракциями. на уровне видимости записей и уровней изолированности у версионника нет тех абстракций, которые есть у блокировочника (и наоборот). Поэтому применение этих самых абстракций не к месту вызывает впечатление, что человек чего-то не понимает. update в версионнике как "блокировка" воспринимается только при конкурентном update. Вы, конечно, можете считать что "создание новой версии является накладыванием блокировки", это ваше право, особенно если вам так проще воспринимать внутренности версионника. Иногда, кстати, отсутствие возможности блокировать запись в версионнике для некоторых прикладных случаев является проблемой. Об этом тоже есть статья http://www.ibase.ru/devinfo/pslock.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 16:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата" (ожидание lock-а) называется блокировкой. Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, Кот бы говорил. ;) Dimitry Sibiryakovно всё же спрошу: блокировкой чего именно это называется? Изменения записи, насколько я вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 17:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИзменения записи, насколько я вижу. То есть, ты утверждаешь, что второй/третий/четвёртый писатель будут ждать события освобождения записи. Так? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 17:08 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :) Да, в принципе можно, только все как-то привыкли к одноверсионной Вселенной. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 17:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousИзменения записи, насколько я вижу. То есть, ты утверждаешь, что второй/третий/четвёртый писатель будут ждать события освобождения записи. Так? Хм, а разве нет (я напомню, мы обсуждаем вариант "происходит повисание по wait с ожиданием результата")? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 17:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousХм, а разве нет (я напомню, мы обсуждаем вариант "происходит повисание по wait с ожиданием результата")? Ну это ты мне скажи: "да, я именно это утверждаю" или "нет, я утверждаю совсем другое". Мой телепатер не справляется это угадать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 17:45 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттав данном случае теряется возможность работать с записью. т.е. блокируется запись. этта-- ах, да , я-то про версию -- читать то что можно читать старую версию -- это естественно (её ж никто не лочил в версионнике) Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже... тебе написали уже -- запись блокируется "на запись". ресурс для записи недоступен. когда я говорю SELECT ...FOR UPDATE -- я блокирую запись на запись но читать её я могу сколько угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 18:30 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousХм, а разве нет (я напомню, мы обсуждаем вариант "происходит повисание по wait с ожиданием результата")? Ну это ты мне скажи: "да, я именно это утверждаю" или "нет, я утверждаю совсем другое". Мой телепатер не справляется это угадать. Я утверждаю, что подчёркнутое --- это блокировка: Dimitry Sibiryakovupdate обломится с ошибкой "update conflict" либо сразу, либо после коммита первой транзакции в зависимости от параметров транзакции То впечатление, что в InterBase "второй/третий/четвёртый писатель будут ждать события освобождения записи", я вынес из постов в этой теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 19:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousЯ утверждаю, что подчёркнутое --- это блокировка: Ну тогда привет, КО, открывший для себя, что даже в версионниках писатели блокируют писателей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 19:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovпосле коммита первой транзакции PgSQLAnonymousТо впечатление, что в InterBase "второй/третий/четвёртый писатель будут ждать события освобождения записи", я вынес из постов в этой теме. Хреновый у тебя выноситель впечатления, если он из слов "после коммита транзакции" вынес "событие освобождения записи", ибо это две большие разницы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 19:56 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov<> Хреновый у тебя выноситель впечатления, если он из слов "после коммита транзакции" вынес "событие освобождения записи", ибо это две большие разницы. ну при роллбеке же она таки освободится а при коммите -- будет негодна из-за кривого базового уровня изоляции. освободится проброс исключений, а не запись-пись а вот при человеческом рид--коммитеде была бы годна в дело, но здесь вам не тут...то было. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 20:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттану при роллбеке же она таки освободится Запись, вообще-то, может освободиться (то есть исчезнет незакоммиченная версия) задолго до конца транзакции. эттаосвободится проброс исключений, а не запись-пись Чо? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 20:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousЯ утверждаю, что подчёркнутое --- это блокировка: Ну тогда привет, КО, открывший для себя, что даже в версионниках писатели блокируют писателей. Надо же, а в теме я вот уже успел вычитать, что: kdvя не знаю, как там у PosgreSQL, но у InterBase и Firebird нет никаких "блокировок для UPDATE". kdvТо есть, как таковых блокировок в версионнике нет вообще. Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки". Видно, не все это ещё открыли для себя. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 20:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovDimitry Sibiryakovпосле коммита первой транзакции PgSQLAnonymousТо впечатление, что в InterBase "второй/третий/четвёртый писатель будут ждать события освобождения записи", я вынес из постов в этой теме. Хреновый у тебя выноситель впечатления, если он из слов "после коммита транзакции" вынес "событие освобождения записи", ибо это две большие разницы. Честно говоря, после того, как я прочитал про InterBase и увидел какие-то странные уровни изоляции и отсутствие SERIALIZABLE, разбираться в его особенностях мне стало как-то неинтересно... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 21:09 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousстранные уровни изоляции например? PgSQLAnonymousотсутствие SERIALIZABLE а кому-нибудь в жизни потом эта туфля пригодилась? (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 01:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
dimitrа кому-нибудь в жизни потом эта туфля пригодилась? (с)Тем более, что она есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 01:09 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
dimitrPgSQLAnonymousстранные уровни изоляции например? PgSQLAnonymousотсутствие SERIALIZABLE а кому-нибудь в жизни потом эта туфля пригодилась? (с) только эта туфля и рабочая ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 03:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
dimitrPgSQLAnonymousстранные уровни изоляции например? READ COMMITTED RECORD_VERSION READ COMMITTED NO RECORD_VERSION SNAPSHOT SNAPSHOT TABLE STABILITY dimitrPgSQLAnonymousотсутствие SERIALIZABLE а кому-нибудь в жизни потом эта туфля пригодилась? (с) Естественно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 08:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladdimitrа кому-нибудь в жизни потом эта туфля пригодилась? (с)Тем более, что она есть. Как-то не заметил, можете показать? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 08:24 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymoushvladТем более, что она есть. Как-то не заметил, можете показать?SNAPSHOT TABLE STABILITY ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 09:28 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousстранные уровни изоляции ... SNAPSHOT какой тонкий троллинг... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 09:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladSNAPSHOT TABLE STABILITY ну, справедливости ради, это скорее инструмент для ручной эмуляции SERIALIZABLE. Кому надо автоматически да для ad-hoc запросов, то в сад. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 09:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:16 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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.
Какие данные теперь в таблицах A и B? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladавтоматическое резервирование таблицы по ходу выполнения DML я как-то не уверен, что это можно назвать serializable, чтобы там борманы не писали на этот счет. Но возможно я слишком строг :-) Насколько я понимаю, без RESERVE работает оптимистический подход ("резервирование по ходу"), который может приводить к ошибкам сериализации в рантайме (хотя бы вследствие встречной блокировки A->B и B->A). А с RESERVE (упреждающие блокировки при старте транзакции) можно обеспечить бесконфликтную (читай: последовательную) работу конкурентов, но придется поработать ручками. Поправь меня, если ошибаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, у вас ус отклеился у вас там таблички N непришейкобылехвост. [стюдент рука--лицо ] и да -- в пж при сериалайзебл будет откат второй Код: plaintext 1. 2.
а при repeatable read -- количество во второй будет соответствовать снепшоту при старте, а не нормальному, при read commited текущему состоянию. резюме -- те, кто не умеют писать серверную логику [полк их надысь пополнился випросом] -- хотят сериалазебла, чтобы клиентская реализация чисто серверного функционала хоть как-то ползала. кто умеет -- пишут инкрементальную, а не агрегатную логику на сервере, и требуют именно readcommited-а, а не маргинальных снапшотов и т.п. все маргинальные уровни изоляции требуются только для развесистых агрегатов типа отчетов по плохо связанным наборам. -- чтобы синхронизировать снапшоты отдельных расчётов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousВот тут я прямо заинтересовался. Доказательства-то этому есть?Моего слова не достаточно ? Сессия 1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Сессия 2 Код: sql 1.
Сессия 1 Код: sql 1. 2. 3. 4. 5. 6.
Сессия 2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Сессия 1 Код: sql 1. 2. 3. 4.
Сессия 2 Код: sql 1. 2. 3. 4.
Сессия 1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
dimitrПоправь меня, если ошибаюсь.Не ошибаешься. А чем это противоречит сериализации ? Или ты имеешь в виду, что в теории serializable тр-ции не могут получить ошибки из-за конкурентов ? Ну, тогда - да, нет в FB такого уровня изоляции. А где есть ? И - да, "вручную" (с явным резервированием) его таки можно достичь. А у других как ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladНу, тогда - да, нет в FB такого уровня изоляции. А где есть ? MS SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:26 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladPgSQLAnonymousВот тут я прямо заинтересовался. Доказательства-то этому есть?Моего слова не достаточно ? Конечно, недостаточно. Вы сами-то посмотрели на результат? ;) Вот из этого: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Следует, что этот SNAPSHOT TABLE STABILITY ни разу не SERIALIZABLE. Получиться-то должно было так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
или так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Мораль: если производитель InterBase где-то утверждает, что "SNAPSHOT TABLE STABILITY" = SERIALIZABLE, это очередное переопределение терминов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:44 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаPgSQLAnonymous, у вас ус отклеился у вас там таблички N непришейкобылехвост. [стюдент рука--лицо ] Там написано , зачем они нужны, стюдент. ;) эттаи да -- в пж при сериалайзебл будет откат второй И это правильно. эттарезюме -- те, кто не умеют писать серверную логику [полк их надысь пополнился випросом] -- хотят сериалазебла, чтобы клиентская реализация чисто серверного функционала хоть как-то ползала. кто умеет -- пишут инкрементальную, а не агрегатную логику на сервере, и требуют именно readcommited-а, а не маргинальных снапшотов и т.п. все маргинальные уровни изоляции требуются только для развесистых агрегатов типа отчетов по плохо связанным наборам. -- чтобы синхронизировать снапшоты отдельных расчётов А я говорю, что всё это болтовня, и аргументы я уже приводил в других ветках. Реальные контраргументы будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, так, как хочется стюденту, "должно быть" при read commited а при serializable д.б. ошибка изоляции, как оно и происходит в пж рука--лицо, сюдент, рука--лицо а птичка тут продемонстрировала банальный repeatable read ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:52 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаPgSQLAnonymous, так, как хочется стюденту, "должно быть" при read commited а при serializable д.б. ошибка изоляции, как оно и происходит в пж С чего ты взял, что мне так хочется?! Ты вообще читать умеешь, стюдент?! Так я повторю так, чтоб ты увидел: PgSQLAnonymous И это правильно. эттаа птичка тут продемонстрировала банальный repeatable read Таки да. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous<> А я говорю, что всё это болтовня, и аргументы я уже приводил в других ветках. Реальные контраргументы будут?откат 100500 конкурентов выше по ветке обусловленный 2--мя ошибками "архитектора" -- кривым дизайном (с пересекающимся в конкурентной работе с аггрегирующими сущностями) и неверным уровнем изоляции (который с таким дизайном вообще не ползает, не то, чтобы трепыхаться). я этот дизайн ещё могу оживить. Будет ползать с очередями. Хотя он и левый. Вы -- никогда. и это всё е-болтовня, что ты якобы что-то где-то как-то приводил. ибо не по сеньке шапка, стюдент. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousПолучиться-то должно было так:Читаем что такое снапшот. 3 раза каждый день на ночь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladPgSQLAnonymousПолучиться-то должно было так:Читаем что такое снапшот. 3 раза каждый день на ночь. Обожемой, ты же даже не понял. Читаем, что такое SERIALIZABLE, хоть 3 раза каждый день на ночь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
[quot этта]PgSQLAnonymous<> обусловленный 2--мя ошибками "архитектора" -- кривым дизайном (с пересекающимся в конкурентной работе с аггрегирующими сущностями) и неверным уровнем изоляции (который с таким дизайном вообще не ползает, не то, чтобы трепыхаться). я этот дизайн ещё могу оживить. Будет ползать с очередями. Хотя он и левый. Вы -- никогда. А покажи-ка "правый" дизайн для этой задачи, умник. Болтать --- не мешки таскать. эттаи это всё е-болтовня, что ты якобы что-то где-то как-то приводил. ибо не по сеньке шапка, стюдент. А это ты попросту соврал. Кому надо --- найдёт, почитает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:22 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаоткат 100500 конкурентов выше по ветке Считаем на пальцах: пусть транзакция у анонимуса идёт 10 минут (иначе 100500 конкурентов ну никак не накопятся), пусть он заставил из сериализоваться. Тогда последний конкурент дождётся своей очереди на получение денег аккурат так через 10050000 минут. Умрёт от старости он, пожалуй, гораздо раньше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:24 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklinhvladНу, тогда - да, нет в FB такого уровня изоляции. А где есть ? MS SQL.Т.е. там не будет дедлока при "перекрёстных" writes ? Позвольте не поверить :) Или мы снова говорим о разном. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousОбожемой, ты же даже не понял. Ты таки не видишь в своём собственном примере тупой ошибки с расстановкой коммитов ? Обожемой (ц) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:31 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladPgSQLAnonymousОбожемой, ты же даже не понял. Ты таки не видишь в своём собственном примере тупой ошибки с расстановкой коммитов ? Обожемой (ц) Никакой ошибки там нет . Это провоцирующий тест на сериализацию, который InterBase провалил . Что будет в настоящей ACID-СУБД, тебе уже показали на примере PostgreSQL. Я бы посоветовал перечитывать, пока не дойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:38 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladpkarklinпропущено... MS SQL.Т.е. там не будет дедлока при "перекрёстных" writes ? Позвольте не поверить :) Или мы снова говорим о разном. Да (кажется), там будет DEADLOCK, и это, опять-таки, правильно . А InterBase просто тихо покоцал данные, и это то, чего не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousв настоящей ACID-СУБД оставьте этот пафос, ей богу. Поддержка SERIALIZABLE и ACID вещи ортогональные. Или может вспомним, что ваша "настоящая" СУБД до 2011 года была "ненастоящей" и вовсю баловалась "подменой терминов"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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, но это я тут жевать не намерен. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:52 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
dimitrPgSQLAnonymousв настоящей ACID-СУБД оставьте этот пафос, ей богу. Поддержка SERIALIZABLE и ACID вещи ортогональные. Ничего подобного. Поддержка SERIALIZABLE --- это обязательный компонент ACID, потому что он обеспечивает свойство ISOLATION. dimitrИли может вспомним, что ваша "настоящая" СУБД до 2011 года была "ненастоящей" и вовсю баловалась "подменой терминов"? Да была, да, баловалась. Я так подозреваю, что это было тупо содрано с некоторой СУБД, на которую PostgreSQL пытался быть похожим. И что из того? Некоторые-то до сих пор "ненастоящие" и балуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:59 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousПоддержка SERIALIZABLE --- это _обязательный_ компонент ACID, потому что он обеспечивает свойство ISOLATION. А вот нефиг читать комиксы в сокращённом варианте. Читай полную статью: http://en.wikipedia.org/wiki/Isolation_(database_systems) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 , и все твои объяснения к делу не относятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттаоткат 100500 конкурентов выше по ветке Считаем на пальцах: пусть транзакция у анонимуса идёт 10 минут (иначе 100500 конкурентов ну никак не накопятся), пусть он заставил из сериализоваться. Тогда последний конкурент дождётся своей очереди на получение денег аккурат так через 10050000 минут. Умрёт от старости он, пожалуй, гораздо раньше. То есть ссылки на статистику NASDAQ и объяснения ты просто проигнорировал (потому что в твою картину мира они не укладываются)? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:09 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousТо есть ссылки на статистику NASDAQ и объяснения ты просто проигнорировал (потому что в твою картину мира они не укладываются)? Я их проигнорировал, поскольку во-первых, ты их не привёл, а во-вторых, там транзакции не длятся по 10 минут. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:12 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Что-то вы тут разошлись, 11 страниц для такого простого вопроса многовато... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ их проигнорировал, поскольку во-первых, ты их не привёл, а во-вторых, там транзакции не длятся по 10 минут. Во-первых: PgSQLAnonymousКороче говоря, в некоторых условиях у достаточно крупного брокера тысячи транзакций могут пересечься. Или все проблемы с конкурентным доступом нужно решать их отрицанием? ;) Кстати, вот можно оценить объёмы транзакций на бирже: http://www.nasdaqtrader.com/Trader.aspx?id=DailyMarketSummary И это только сделки, заявок (которые используются в моём примере) за день делается гораздо больше. Во-вторых, в этом примере ни одна транзакция не длится по 10 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousВо-вторых, в этом примере ни одна транзакция не длится по 10 минут. А теперь берём цифры по ссылке, делим количество сделок на количество брокеров, а потом на длину рабочего для и получаем 38 сделок в минуту на брокера. Где там 100500 откатов? Кстати, строгого контроля овердрафта там тоже нет, так что счёт брокера вообще не является конкурентным ресурсом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
hvladMS SQL.Т.е. там не будет дедлока при "перекрёстных" writes ? Позвольте не поверить :) Или мы снова говорим о разном.[/quot] Казалось бы, причем здесь SERIALIZABLE TIL?! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousВо-вторых, в этом примере ни одна транзакция не длится по 10 минут. А теперь берём цифры по ссылке, делим количество сделок на количество брокеров, а потом на длину рабочего для и получаем 38 сделок в минуту на брокера. Где там 100500 откатов? Попробую в третий раз: PgSQLAnonymousИ это только сделки, заявок (которые используются в моём примере) за день делается гораздо больше. Dimitry SibiryakovКстати, строгого контроля овердрафта там тоже нет, так что счёт брокера вообще не является конкурентным ресурсом. Почему ты в этом уверен? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 13:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklinКазалось бы, причем здесь SERIALIZABLE TIL?! При том, что, согласно ПГанонимусу, он сериализует транзакции, что делает невозможным конфликты и дедлоки в принципе. PgSQLAnonymousПочему ты в этом уверен? Потому что так работают все биржи. Баланс контролируется только по закрытию торгов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovpkarklinКазалось бы, причем здесь SERIALIZABLE TIL?! При том, что, согласно ПГанонимусу, он сериализует транзакции, что делает невозможным конфликты и дедлоки в принципе. Что ты несёшь?! Я никогда такого не говорил! Как раз конфликты и дедлоки при сериализации неизбежны в некоторых ситуациях. Dimitry SibiryakovPgSQLAnonymousПочему ты в этом уверен? Потому что так работают все биржи. Баланс контролируется только по закрытию торгов. А биржа тут причём? Речь идёт об обработке у брокера . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, авторПри том, что, согласно ПГанонимусу, он сериализует транзакции, что делает невозможным конфликты и дедлоки в принципе. Видимо я не внимательно читал топик, что не увидел такой трактовки сериализации от указанного автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:15 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousЧто ты несёшь?! Я никогда такого не говорил! А вот это тогда чьё? PgSQLAnonymous Если тебе так нравится этот журнал, я оттуда поцитирую http://en.wikipedia.org/wiki/ACID : пропущено... Какие могут быть дедлоки при выполнении транзакций "one after the other"?.. А зачем сюда притаскивать за уши дедлоки, если здесь описан результат применения SERIALIZABLE - после выполнения двух транзакций хоть как последовательно, так и параллельно, система имеет одно и тоже конечное состояние? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:28 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
MasterZiv11 страниц для такого простого вопроса многовато... да тут нам serializable впаривают как панацею. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:34 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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. То есть идентичное состояние было бы получено, если бы транзакции выполнялись последовательно, одна за другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:40 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdvMasterZiv11 страниц для такого простого вопроса многовато... да тут нам serializable впаривают как панацею. Потому что он ею и является, сюрприз. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousДа обычные, потому что не "выполнении транзакций one after the other", а would be obtained if transactions were executed serially. То есть идентичное состояние было бы получено, если бы транзакции выполнялись последовательно, одна за другой. Ну так я повторяю вопрос: как можно получить состояние, идентичное дэдлоку при последовательном выполнении транзакций? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:42 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 14:43 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymous, тебе с порога было написано: вместо пересекающихся по конкурентам сущностей-- "агрегатов" Счет [Клиента|Брокера], должны быть индивидуальные Сущности "СчетКлиентаУБрокера". точка. никаких агрегатных [по всем клиентам] сущностей. Пока можно агрегировать "счет брокера" в моменте. Как только уже нельзя -- долго агрегировать -- так начинаем чесать репу. чесать репувыход 1 -- организовать очередь на агрегирующем ресурсе, с инкрементальным навариванием "ресурса" [read commited only]. Ограниченно годен -- при большом числе конкурентов и большой длине "слайса очереди" (т.е. средней протяженности от захвата ресурса до коммита, отдающего очередь) встанет колом. выход 2 -- не иметь уникального агрегирующего ресурса "СчетБрокера", а иметь "размазанный, периодически сворачиваемый" "многострочный" агрегат , нужно следить за видимостями при свёртках (можно сворачивать и в снепшоте (repeatable-read-е), как показывал сибиряков, можно сворачивать в commited-е -- по всякому, в pg -- в т.ч. через cte -- у которого единый снепшот [WITH del AS (DELETE ... RETURNING...) ]. а вот с сериалайзебл будет велик шанс облома сериализации. патамушто гладиолус). и т.п. простите отвлёкся работкой, забыл запостить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 15:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousДа обычные, потому что не "выполнении транзакций one after the other", а would be obtained if transactions were executed serially. То есть идентичное состояние было бы получено, если бы транзакции выполнялись последовательно, одна за другой. Ну так я повторяю вопрос: как можно получить состояние, идентичное дэдлоку при последовательном выполнении транзакций? А нет никакого состояния базы, "идентичного дэдлоку". ;) База переходит из одного консистентного состояния в другое только по COMMIT-ам транзакций. У меня ощущение, что пересказываю базовые вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 15:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА нет никакого состояния базы, "идентичного дэдлоку". ;) Отсюда следует, что транзакции, впадающие в дэдлок - не serializable. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 15:46 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, нет, просто понятие "состояние базы" в контексте про сериализацию -- это некая обсракция [~~~#состояние данных#], отличная от физического понятия "состояние базы и её СУБД", которым пытаетесь оперировать вы оперируйте пожалуйста обсракциями здорового человека ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 15:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаоперируйте пожалуйста обсракциями здорового человека Да нет проблем: две параллельные транзакции, впавшие в дэдлок, не могут быть закоммичены. Следовательно, они не могут привести БД в состояние, в которое они привели бы её, если бы выполнялись последовательно. Следовательно, такие транзакции - не serializable. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 15:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттаоперируйте пожалуйста обсракциями здорового человека Да нет проблем: две параллельные транзакции, впавшие в дэдлок, не могут быть закоммичены. Следовательно, они не могут привести БД в состояние, в которое они привели бы её, если бы выполнялись последовательно. Следовательно, такие транзакции - не serializable. не-а вы оперируете не обсракцией здорового человек "транзакция" а обсракцией курильщика "транзакция в конкретном конкурентном окружении" они (как, объекты вне окружения, self) таки приводятся в чувство процедурой снятия одной из 2-х и выстраиванием её в хвост к закоммиченной. т.е. serializable. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 16:17 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаони (как, объекты вне окружения, self) таки приводятся в чувство процедурой снятия одной из 2-х и выстраиванием её в хвост к закоммиченной. т.е. serializable. А снимать её, такую всю без окружения, а потом ещё и повторять полностью от начала - кто будет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 16:20 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттаони (как, объекты вне окружения, self) таки приводятся в чувство процедурой снятия одной из 2-х и выстраиванием её в хвост к закоммиченной. т.е. serializable. А снимать её, такую всю без окружения, а потом ещё и повторять полностью от начала - кто будет?.. "PgSQLAnonymous" же ему оно упало -- вот пусть и колупается ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 16:22 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ps а снимет-то -- пж снимет легко у него это в serializable не заржавеет ононимусу только повторять придется. и так --100499 раз в 100500/2 в среднем транзакциях ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 16:25 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаPgSQLAnonymous, у вас ус отклеился у вас там таблички N непришейкобылехвост. [стюдент рука--лицо ] и да -- в пж при сериалайзебл будет откат второй Код: plaintext 1. 2.
а при repeatable read -- количество во второй будет соответствовать снепшоту при старте, а не нормальному, при read commited текущему состоянию. резюме -- те, кто не умеют писать серверную логику [полк их надысь пополнился випросом] -- хотят сериалазебла, чтобы клиентская реализация чисто серверного функционала хоть как-то ползала. кто умеет -- пишут инкрементальную, а не агрегатную логику на сервере, и требуют именно readcommited-а, а не маргинальных снапшотов и т.п. все маргинальные уровни изоляции требуются только для развесистых агрегатов типа отчетов по плохо связанным наборам. -- чтобы синхронизировать снапшоты отдельных расчётов клиентов много, пишущие их разной квалификации и т.д. создание и управление "золотой записи" (как в МДМ) святой долг СУБД, но для этого СУБД должна себе представлять, что такое "золотая запись" и какие правила ее формирования имеющегося набора всяких чахлых констрейнтов и т.д. инструментария не хватает для интерпретации данных со стороны СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 16:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИ, кстати, знай добавляй RAM и "будет расти iops-ы". ;) это как? можно поподробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 17:23 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаDimitry Sibiryakovпропущено... А снимать её, такую всю без окружения, а потом ещё и повторять полностью от начала - кто будет?.. "PgSQLAnonymous" же ему оно упало -- вот пусть и колупается Ну а кто же ещё будет повторять-то? ;) Естественно, клиент. Более того, каждый клиент в норме обязан быть готов это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 17:26 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousЕстественно, клиент. Более того, каждый клиент в норме обязан быть готов это сделать. Ага, это мне напомнило времена, когда тут ещё появлялись Фокспрошники: "нашей СУБД не нужны транзакции, мы легко эмулируем их с помощью временных таблиц". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 17:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovInfernal V. RavenНу так обоснуйте. Обосновываю: существует всего два вероятных исхода: "блондинка встретит динозавра" и "блондинка не встретит динозавра". Согласно теории вероятности, вероятность каждого отдельного исхода равна единице, делённой на число возможных исходов. Следовательно, у блондинки есть вероятность 50% на встречу с динозавром. Сможете опровергнуть? так это ведь только в самом общем случае при отсутствии информации о популяции блондинок и динозавров ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 17:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2Dimitry Sibiryakovпропущено... Обосновываю: существует всего два вероятных исхода: "блондинка встретит динозавра" и "блондинка не встретит динозавра". Согласно теории вероятности, вероятность каждого отдельного исхода равна единице, делённой на число возможных исходов. Следовательно, у блондинки есть вероятность 50% на встречу с динозавром. Сможете опровергнуть? так это ведь только в самом общем случае при отсутствии информации о популяции блондинок и динозавров зачем вы спорите с бредом. оступление 1: есть примитивный способ отъёма денех -- бросается 3 кубика, исходы -- от 3 до 18 побиты на 3 неравные части. банкующий сидит на короткой средней стороне (где мало исходов), игроку предлагает любую другую (из 3-х), но в среднем выигрывает сам. поскольку его исходы комбинаторно более значимы. теория вероятности не устанавливает вероятности какого либо исхода. они полагаются априорно известными. (например в комбинаторных задачах -- по числу комбинаций примитивных событий приводящих к исходу. от общего числа комбинаций). или считается известной (или хотя бы определённой) плотность вероятности (равномерная по комбинациям [но не исходам] -- в случае комбинаторных задач). ну и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 18:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
в контексте данной темы интересно, как в тяжелых тиражируемых системах удается сделать поддержку СУБД с разной реализацией уровней изоляции, особенно блокировочников и версионников одновременно (т.е. какой-то один на выбор приобретателя системы) там пишется разный код бизнес логики приложения для разных СУБД? Подразумевается, что в СУБД логики по минимуму (без хранимых процедур, если так бывает, или хранимые процедуры только для тяжелых отчетов), почти вся логика в бизнес слое приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:01 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2в контексте данной темы интересно, как в тяжелых тиражируемых системах удается сделать поддержку СУБД с разной реализацией уровней изоляции, особенно блокировочников и версионников одновременно (т.е. какой-то один на выбор приобретателя системы) там пишется разный код бизнес логики приложения для разных СУБД? Подразумевается, что в СУБД логики по минимуму (без хранимых процедур, если так бывает, или хранимые процедуры только для тяжелых отчетов), почти вся логика в бизнес слое приложения Как-как... обычно хреново, т.е. используется минимальное общее подмножество возможностей, а потом разработчики под эту систему долбаются с результатом. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:10 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаPgSQLAnonymous, тебе с порога было написано: вместо пересекающихся по конкурентам сущностей-- "агрегатов" Счет [Клиента|Брокера], должны быть индивидуальные Сущности "СчетКлиентаУБрокера". точка. никаких агрегатных [по всем клиентам] сущностей. Пока можно агрегировать "счет брокера" в моменте. Как только уже нельзя -- долго агрегировать -- так начинаем чесать репу. чесать репувыход 1 -- организовать очередь на агрегирующем ресурсе, с инкрементальным навариванием "ресурса" [read commited only]. Ограниченно годен -- при большом числе конкурентов и большой длине "слайса очереди" (т.е. средней протяженности от захвата ресурса до коммита, отдающего очередь) встанет колом. выход 2 -- не иметь уникального агрегирующего ресурса "СчетБрокера", а иметь "размазанный, периодически сворачиваемый" "многострочный" агрегат , нужно следить за видимостями при свёртках (можно сворачивать и в снепшоте (repeatable-read-е), как показывал сибиряков, можно сворачивать в commited-е -- по всякому, в pg -- в т.ч. через cte -- у которого единый снепшот [WITH del AS (DELETE ... RETURNING...) ]. а вот с сериалайзебл будет велик шанс облома сериализации. патамушто гладиолус). и т.п. Ну это всё как-то слишком общо... Не видно, как достигается цель: не допустить ухода в минус счёта брокера. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:14 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2PgSQLAnonymousИ, кстати, знай добавляй RAM и "будет расти iops-ы". ;) это как? можно поподробнее? Вы бы контекста-то побольше оставляли: ;) PgSQLAnonymousGgg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников. Вообще-то кеширование в основном скрывает эти различия, и как блокировки (которые тоже могут храниться на диске), так и версии (которые тоже можно хранить в RAM) обычно находятся именно в RAM. И, кстати, знай добавляй RAM и "будет расти iops-ы". ;) Если не хватает RAM для блокировок, они обычно эскалируются (например, блокировки записей превращаются в блокировки страниц или таблиц), поэтому производительность может страдать. Добавление RAM может предотвратить это, только и всего (основное влияние на производительность происходит за счёт кэширования, конечно). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:31 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
и еще интересно, как думаете, теоретически возможно в DB2 появление включаемой версионности аналогично MSSQL? или IBMвцы принципиально не хотят версионник или это слишком сложно конкретно в случае DB2 или или ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2в контексте данной темы интересно, как в тяжелых тиражируемых системах удается сделать поддержку СУБД с разной реализацией уровней изоляции, особенно блокировочников и версионников одновременно (т.е. какой-то один на выбор приобретателя системы) там пишется разный код бизнес логики приложения для разных СУБД? Подразумевается, что в СУБД логики по минимуму (без хранимых процедур, если так бывает, или хранимые процедуры только для тяжелых отчетов), почти вся логика в бизнес слое приложения все эти системы монопольно используют СУБД, все конфликты разрешается через промежуточный слой к СУБД но как только какая та другая система в обход этого промежуточного слоя идет в БД, так сразу все гавкается и все это потому что у СУБД нет мозгов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:33 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousЕстественно, клиент. Более того, каждый клиент в норме обязан быть готов это сделать. Ага, это мне напомнило времена, когда тут ещё появлялись Фокспрошники: "нашей СУБД не нужны транзакции, мы легко эмулируем их с помощью временных таблиц". А какая-то СУБД гарантирует , что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам? Реальный мир не напоминает? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:33 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousDimitry Sibiryakovпропущено... Ага, это мне напомнило времена, когда тут ещё появлялись Фокспрошники: "нашей СУБД не нужны транзакции, мы легко эмулируем их с помощью временных таблиц". А какая-то СУБД гарантирует , что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам? Реальный мир не напоминает? ;) любая СУБД это может делать, если он знает свои обязанности и права ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:36 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
и при этом набор прав и обязанностей должен быть полной для разрешения любого типа конфликта ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
а то блин орловский мент одни правила применяет, а московский другие - вот жисть то блин ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:38 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymoussanyock2пропущено... это как? можно поподробнее? Вы бы контекста-то побольше оставляли: ;) в смысле это было образно про то, что с помощью оперативки получится смасштабировать любое количество сессий большого динозавра? и под "iops" подразумевалось TPS вместо iops? чето я запутался, вообще конечно тяжелая ветка в целом для моего понимания, может быть из-за отсутствия опыта программирования высоконагруженных БД ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:43 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRosвсе конфликты разрешается через промежуточный слой к СУБД т.е. они по разному разрешаются в зависимости от используемой СУБД, для каждой свой конфликт манагер создается? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousА какая-то СУБД гарантирует, что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам? Да любая, у которой есть "настоящий serializable". Ты же сам говорил, что знаешь одну такую. PS: Джим Старки пару лет назад говорил, что в одном из своих свежих поделий (то ли в Nexus, то ли в Nuo) решил проблему конкуренции полной сериализацией транзакций. Типа, это упростило и ускорило движок до невозможности, так что TPS взлетели до небес. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:53 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2ViPRosвсе конфликты разрешается через промежуточный слой к СУБД т.е. они по разному разрешаются в зависимости от используемой СУБД, для каждой свой конфликт манагер создается? они по разному разрешается в каждой системе написанной для этой СУБД, что и приводит к бардаку все эти аппсерверы пытаются закрыть дыры СУБД по части разрешения конфликтов а поставщики СУБД не занимаются этим вопросом по причине гонки за "производительностью", а то бы давно был стандартный менеджер разрешения любых!!! конфликтов за счет утяжеления описания данных, семантичнеский анализ поступающих запросов и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousА какая-то СУБД гарантирует, что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам? Да любая, у которой есть "настоящий serializable". Ты же сам говорил, что знаешь одну такую. PS: Джим Старки пару лет назад говорил, что в одном из своих свежих поделий (то ли в Nexus, то ли в Nuo) решил проблему конкуренции полной сериализацией транзакций. Типа, это упростило и ускорило движок до невозможности, так что TPS взлетели до небес. пиздит ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRosпиздит С чего бы? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 19:59 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovViPRosпиздит С чего бы? ускорения невозможно добиться ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
хотя если у него до этого было совсем говно, то почему бы и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPgSQLAnonymousА какая-то СУБД гарантирует, что для любой транзакции не будет ни DEADLOCK-ов, ни UPDATE CONFLICT-ов, ни откатов по каким-то другим причинам? Да любая, у которой есть "настоящий serializable". Ты же сам говорил, что знаешь одну такую. Нда. И с чего ты взял, что "настоящий serializable" --- это отсутствие вышеперечисленного? Тем более, после того , как тебе здесь неоднократно указали, что это не так? PgSQLAnonymousPS: Джим Старки пару лет назад говорил, что в одном из своих свежих поделий (то ли в Nexus, то ли в Nuo) решил проблему конкуренции полной сериализацией транзакций. Типа, это упростило и ускорило движок до невозможности, так что TPS взлетели до небес. Поживём-увидим. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRosускорения невозможно добиться Ага, ещё добавь "у меня же не получилось". Рецепт-то простой: NoSQL, in-memory, autocommit. Всё, телемаркет: миллиард транзакций в секунду выдаётся на гора легко. Фигня, что эти "транзакции" - увеличение числа на единицу, кому-нибудь и такое требуется. Например, гуглю посещения считать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
ViPRosони по разному разрешается в каждой системе написанной для этой СУБД, что и приводит к бардаку все эти аппсерверы пытаются закрыть дыры СУБД по части разрешения конфликтов а поставщики СУБД не занимаются этим вопросом по причине гонки за "производительностью", а то бы давно был стандартный менеджер разрешения любых!!! конфликтов за счет утяжеления описания данных, семантичнеский анализ поступающих запросов и т.д. А алгоритмы-то есть какие-нибудь на эту тему? А то мечтать-то можно... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:11 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИ с чего ты взял, что "настоящий serializable" --- это отсутствие вышеперечисленного? По определению: нет параллельных транзакций - порядок записи не важен, нет не то что взаимоблокировок на записях, вообще никаких других блокировок нет, уже изменённую запись никто не пытается изменять заново. PgSQLAnonymousТем более, после того, как тебе здесь неоднократно указали, что это не так? Здесь неоднократно показали, что та хрень, которая гордо называется "serializable" в PG и Оракуле - никакого отношения к serializable не имеет. Ничего более. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2в смысле это было образно про то, что с помощью оперативки получится смасштабировать любое количество сессий большого динозавра? Да, где-то как-то так. ;) sanyock2и под "iops" подразумевалось TPS вместо iops? чето я запутался, вообще конечно тяжелая ветка в целом для моего понимания, может быть из-за отсутствия опыта программирования высоконагруженных БД Если для выполнения запроса клиента СУБД нужно прочитать 100000 страниц, и в одном случае на это уходит 2 сек, а в другом 1, то похоже на то, что во втором случае IOPS вдвое больше (что может быть просто эффектом кэширования). ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:20 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПо определению: нет параллельных транзакций - порядок записи не важен, нет не то что взаимоблокировок на записях, вообще никаких других блокировок нет, уже изменённую запись никто не пытается изменять заново. Нет, ты замучал уже. Советую перечитывать эту тему, стандарт SQL, документацию настоящих СУБД (мурзилку, наконец) пока до тебя не дойдёт, что такое ACID, ISOLATION, serializability и SERIALIZABLE. Dimitry SibiryakovЗдесь неоднократно показали, что та хрень, которая гордо называется "serializable" в PG и Оракуле Не надо Oracle и PostgreSQL мешать в одну кучу в этом вопросе. Dimitry Sibiryakov - никакого отношения к serializable не имеет. Ничего более. Да, да, чёрное — это белое. Война — это мир. Свобода — это рабство. Незнание — сила. Ложь — это правда. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:31 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousСоветую перечитывать эту тему, стандарт SQL, документацию настоящих СУБД (мурзилку, наконец) пока до тебя не дойдёт, что такое ACID, ISOLATION, serializability и SERIALIZABLE. А какое слово из "если бы транзакции выполнялись последовательно, одна за другой" не понимаешь ты? Если транзакции на самом деле выполняются строго последовательно, одна за другой - это и есть истинный TIL serializable. Потому что (сурпрайз!) транзакции при нём действительно сериализованы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 20:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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, может и потребности от приложения не было, поэтому? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 21:12 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
это все к тому, что IOPS увеличивается за счет количества шпинделей, а не за счет оперативки или сверхновых винтов с огромной скоростью последовательной записи, каждые несколько стареньких винтов в правильном массиве легко уделают каждый один новенький по IOPS ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 21:16 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS вернее прироста количества записываемых записей (или страниц в чем он там считает) в единицу времени по db2top ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 21:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
sanyock2PgSQLAnonymousЕсли для выполнения запроса клиента СУБД нужно прочитать 100000 страниц, и в одном случае на это уходит 2 сек, а в другом 1, то похоже на то, что во втором случае IOPS вдвое больше (что может быть просто эффектом кэширования). ;) под IOPS, насколько я понимаю, принято считать количество блочных операций с дисковой энергонезависимой подсистемой? причем тут кэширование через оперативку? Строго говоря — нипричём. Но упомянутому клиенту-то какая разница? ;) sanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS, может и потребности от приложения не было, поэтому? А может быть, потому, что sync реально не выполнялся и до этого? Вы проверяли? sanyock2это все к тому, что IOPS увеличивается за счет количества шпинделей, а не за счет оперативки или сверхновых винтов с огромной скоростью последовательной записи, каждые несколько стареньких винтов в правильном массиве легко уделают каждый один новенький по IOPS А на SSD как считать шпиндели? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 21:36 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymoussanyock2кстати временное отключение sync ZFS почему-то мне не дало значительного прироста IOPS, может и потребности от приложения не было, поэтому? А может быть, потому, что sync реально не выполнялся и до этого? Вы проверяли? да куда бы он делся то в ZFS и "zfs get all | grep sync" того же мнения PgSQLAnonymoussanyock2это все к тому, что IOPS увеличивается за счет количества шпинделей, а не за счет оперативки или сверхновых винтов с огромной скоростью последовательной записи, каждые несколько стареньких винтов в правильном массиве легко уделают каждый один новенький по IOPS А на SSD как считать шпиндели? для начала надо понять, что такое есть шпиндель в обычном винте с точки зрения производительности для винтов IOPS по спекам обычно в районе 150-250, для простоты пусть будет 200 это значит, что головка его патифона может успевать не более 200 раз в секунду ерзать по поверхности его грампластинки в поисках места расположения очередного блока в SSD физика другая, IOPS в зависимости от навороченности может быть в сотни и тысячи раз больше винтов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 21:55 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Смешались в кучу кони, люди... ((с) Бородино) IOPsы, кэширование, SSD и т.п. в приложении к разным СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 22:32 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа нет проблем: две параллельные транзакции, впавшие в дэдлок, не могут быть закоммичены. Следовательно, они не могут привести БД в состояние, в которое они привели бы её, если бы выполнялись последовательно. Следовательно, такие транзакции - не serializable. Ну, во-первых, из двух транзакций, подпавших под дедлок, откатывается только одна. Во-вторых, ошибка в цепочке умозаключений. Из того, что у меня нет спичек, нельзя сделать абсолютно никаких вводов. Т.е. если не воспроизведены исходные условия (обе транзакции зафиксированы), делать выводы об их сериализуемости не представляется возможным. Т.е. ты опять всё поставил с ног на голову. Уровень изоляции не гарантирует обязательность выполнения (фиксации) транзакций. Он лишь определяет результат (состояние системы) после их фиксации. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 22:49 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklinУровень изоляции не гарантирует обязательность выполнения (фиксации) транзакций. Он лишь определяет результат (состояние системы) после их фиксации. А в чём разница? Если одна из транзакций не смогла зафиксироваться, значит заданный результат не достигнут и система не соответствует требованиям, предъявляемым к данному уровню. Короче: параллельное выполнение => операции одной транзакции не выполнились, последовательное выполнение => выполнились операции обоих транзакций. Разница налицо и, следовательно, данный уровень не соответствует стандарту на serializable как его описывает ПГанонимус. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 22:58 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, авторЕсли одна из транзакций не смогла зафиксироваться, значит заданный результат не достигнут и система не соответствует требованиям, предъявляемым к данному уровню. Необходимые и достаточные условия - это фиксирование обеих транзакций. Если этого не произошло - не выполнены исходные требования к системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 23:10 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklinНеобходимые и достаточные условия - это фиксирование обеих транзакций. Необходимое - да. Достаточное - нет. Одна транзакция делает update set f=f+3, вторая - update set f=f+4. Если обе транзакции закоммитились, а в результате поле увеличилось не на 7, то условие для serializable не выполнено. pkarklinЕсли этого не произошло - не выполнены исходные требования к системе. И таки да, как я уже сказал два раза: раз одна из транзакций не смогла закоммититься, значит система не выполняет условия для ношения гордого звания "поддерживает TIL serializable". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 23:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, авторНеобходимое - да. Достаточное - нет. Одна транзакция делает update set f=f+3, вторая - update set f=f+4. Если обе транзакции закоммитились, а в результате поле увеличилось не на 7, то условие для serializable не выполнено. Нет, Дима, условия не такие... авторИ таки да, как я уже сказал два раза: раз одна из транзакций не смогла закоммититься , значит система не выполняет условия для ношения гордого звания "поддерживает TIL serializable". Ой, а тынц на стандарт ANSI можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 23:59 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 для чтения ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 10:51 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 13:47 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 14:04 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 14:13 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymoussanyock2пропущено... да куда бы он делся то в ZFS и "zfs get all | grep sync" того же мнения А Вы джентельменам верите на слово? ;) Не имеет значения , что он там выдаёт. Вы тестировали , что Ваша дисковая система "на всём протяжении" (ФС, драйвер, RAID, диски) действительно делает fsync? Если частота fsync-ов при тестировнании превышает те IOPS-ы, которые у Вас должны быть, то, возможно, у меня для Вас плохие новости. ;) у меня не тестовая лаборатория и я не тестер, чтобы тестировать commodity железки и софтины разве fsync не возвращает результат: успешно или нет, да и просто может находиться в состоянии ожидания? СУБД может сделать вывод о дальнейших действиях? кэш записи в контроллере отключен, диски проброшены как JBOD, ZFS - транзакционная файловая система, хорошо переживает hard reset, на старте обрабатывает журнал аналогично СУБД dstat показывает постоянную ежесекундную активность на запись - коммиты DB2, а не раз в 5 секунд как sync по умолчанию, даже и потеря транзакций за последние 5 секунд не так уже страшна в моем случае ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 14:15 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
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По-моему, ему это всё равно. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 14:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
PgSQLAnonymousИ разработчики большинства СУБД (я уже не уверен насчёт InterBase ;)) не видят. Как же так?! А так, что разработчики СУБД под названием "serializable" делают обычный "snapshot". Поскольку выполнить требование гарантировать сериализуемость не в силах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2015, 15:02 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЕщё раз: что в данном случае для Вас означает "блокируют"? Значит запрет на совершение определенного действия . Бывают блокировки на чтение , изменение , создание новых элементов, и т.д. Т.е. в случае версионника - может быть блокировка на создание новой версии, чтение промежуточного результата незафиксированной транзакции и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2015, 12:48 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПоскольку выполнить требование гарантировать сериализуемость не в силах. Да хватит уже спорить о том, что реальный мир отличается от идеального. Да в общем случае не всегда возможно найти ту последовательность действий, которая эквивалентна одновременному выполнению этих действий. Все что в этом случае может сделать реальная система - сказать: "упс! не могу". Как и в случае если у нее вдруг пропал доступ к подсистеме хранения, и по другим причинам. Но мы все понимаем, что реально последовательные системы доступа к данным можно сделать из любой БД с мало мальскими блокировками - только это нафиг никому не сдалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2015, 13:06 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев блокировка ... чтение промежуточного результата незафиксированной транзакции и т.д. нету у версионника такой блокировки. иначе нафиг он нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:40 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
kdv, Как бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 13:37 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей АрсеньевКак бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read. в InterBase и Firebird режима dirty read нет в принципе. Хотя, теоретически, его можно реализовать. Но в здравом уме разработчики это делать не собираются. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2015, 00:03 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
[quot kdv]Сергей АрсеньевНо в здравом уме разработчики это делать не собираются. Напомнило: "Если в Oracle этого нет - значит это никому не нужно!" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2015, 00:57 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
pkarklinНапомнило: "Если в Oracle этого нет - значит это никому не нужно!" Те кому нужен dirty reads, тому не нужны ни версионники ни блокировочники. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей АрсеньевpkarklinНапомнило: "Если в Oracle этого нет - значит это никому не нужно!" Те кому нужен dirty reads, тому не нужны ни версионники ни блокировочники.ну вот я могу придумать разумную задачу (вернее она у меня есть), где чтение заведомо [ONLY] dirty данных в версионнике мне бы сильно облегчила жизнь. набросок постановкипримерно так -- реализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом. Зная, какие значения ещё болтаются в dirty -- я это сделаю без лишних телодвижений. Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом. Иначе мне как-то придется либо организовывать очередь в порядке коммитов с лишними метками (всего закоммиченного) этой самой очередью, т.е. не вдоль сиквенса. Либо сигнализировать себе (изо всех других транзакций) через сомнительные механизмы типа автономий и т.п. -- о запаздывающих значениях ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 12:43 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттавот я могу придумать Фантазия у проктостоматологов как всегда буйная. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 12:48 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттареализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом. ... Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом. ... Если я правильно понимаю, задача можно сформулировать: "реализовать асинхронный 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" и "ближайшей попыткой резервирования". Больше волнует другой вопрос: что за прикладная задача-то такая? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 13:05 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
АнатоЛойэттареализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом. ... Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом. ... Если я правильно понимаю, задача можно сформулировать: "реализовать асинхронный SEQUENCE/SERIAL с возможностью заполнения пропусков"? неправильно понимаете. хочу например обновлять статистику по вставкам, но не триггерно, с тормозами на each rows а джобиком , по очереди, пачечками. или слайсать очередь сообщений по вставкам , без создание навороченного журналирования "порядка коммитов" или чего иного -- этакого АнатоЛойЕсли да, то сценарий реализации в блокировочнике прост: <> 2) если нашёл, обнови ему id_reserved = true, при ошибке повтори 1) <>хоть задачу не ту решаете -- и на кой мне на лям вставок -- лям "дед ровсов" ещё ? я чо, похож на больного ? а всего то ведь нужен журнал достигнутого, с одной записью-писью. и возможность only dirty read-а. с COALESCE (dirty_min-1,commited_max) -- в журнале. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 13:41 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
этта хочу например обновлять статистику по вставкам, но не триггерно, с тормозами на each rows а джобиком , по очереди, пачечками. "статистику по вставкам" - это сам факт вставки, не анализируя, что же там вставляется? Т.е. всего-то видеть, что кто-то зарезервировал запись ("очень вероятно, что я закоммичу запись, и чуть менее вероятно, что её содержимое останется таким как сейчас"). Правильно? эттаили слайсать очередь сообщений по вставкам , без создание навороченного журналирования "порядка коммитов" или чего иного -- этакого значение "слайсать" в данном контексте не понял. "слайсать" для чего? прикладной пример можно? эттаа всего то ведь нужен журнал достигнутого, с одной записью-писью. и возможность only dirty read-а. с COALESCE (dirty_min-1,commited_max) -- в журнале. Понял. У вас типа ТОЛЬКО вставка идёт. И хотелось бы не только получить закоммиченное, а ещё и получить данные о незакоммиченных. Если некую статистику посчитать - (учитывая, что статистика сама по себе "больше чем наглая ложь"), куда ни шло. А кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 14:21 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
АнатоЛойА кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)-- вот под минимальный из них [-1] я очередью отработаю, его [-1] запишу в журнал джоба [как "достигнутого"], и эта единственная запись -- вместо "апдейтить, апдейтить и апдейтить", как вы пердлагаете -- все накладные расходы механизма. а в следующий раз ломтик для обсчет джобом стартану от журнала, и до текущего "из них[-1]" дёшево, это было бы, по сравнению с тем, что требуется сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 15:45 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Сергей Арсеньевkdv, Как бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read. Я как-то интересовался можно-ль "грязно-чтение" в Ораклах заюзать для сбора статики. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 18:50 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаАнатоЛойА кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)-- вот под минимальный из них [-1] я очередью отработаю, его [-1] запишу в журнал джоба [как "достигнутого"], и эта единственная запись -- вместо "апдейтить, апдейтить и апдейтить", как вы пердлагаете -- все накладные расходы механизма. а в следующий раз ломтик для обсчет джобом стартану от журнала, и до текущего "из них[-1]" дёшево, это было бы, по сравнению с тем, что требуется сейчас. почему [-1]? У вас один писатель всего? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 20:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander RyndinПростите, какой-то поток сознания про RAM и диски. Какие такие версионники хранят блокировки на диске? Про Oracle могу сказать, что информация о блокировках хранится в заголовке блока данных, который в свою очередь лежит в оперативке. стыдоба, ты видимо не слыхала про select генерящий redo (щито?). почитай про т. н. чистку блоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 07:38 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
АнатоЛойэттапропущено... -- вот под минимальный из них [-1] я очередью отработаю<>. почему [-1]? У вас один писатель всего? авторс COALESCE (dirty_min-1,commited_max) -- в журнале. чо то оппонент совсем не всасывает не всасывает, Карл печалька ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 08:07 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаАнатоЛойпропущено... почему [-1]? У вас один писатель всего? авторс COALESCE (dirty_min-1,commited_max) -- в журнале. чо то оппонент совсем не всасывает не всасывает, Карл печалька всасывает, Клара, но низко-низко. теперь понял. :) Как я ещё понял, ONLY DIRTY - это когда в запросе ТОЛЬКО данные незафиксированные транзакцией. така фича имеется в реализации какой-то СУБД? Или dirty_min будем получать как min(dirty_as_all union committed)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 11:39 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
исправился АнатоЛойИли dirty_min будем получать как min(dirty_as_all MINUS committed)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 11:46 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
АнатоЛой Как я ещё понял, ONLY DIRTY - это когда в запросе ТОЛЬКО данные незафиксированные транзакцией. така фича имеется в реализации какой-то СУБД?науке такая субд неизвестна , но поиски ведутся -- очевидно, что самой субд это знание более чем доступно остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии. АнатоЛойИли dirty_min будем получать как min(dirty_as_all EXCEPT committed)? а вот это уже дорого, слишком дорого, Карл ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 14:00 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
этта-- очевидно, что самой субд это знание более чем доступно остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии. Вряд ли. Вот запускаю я full scan по таблице, который идет 2 часа. При прохождении блока данных N я понимаю, что он грязный. Ок. Идем дальше. Но в это время какое-то приложение меняет блоки N-100. Т.е. мой запрос не закончился, блок N-100 уже проверен - он был чистый, а значит я не увижу данные из этого блока и в будущем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 14:18 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Alexander Ryndinэтта-- очевидно, что самой субд это знание более чем доступно остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии. Вряд ли. Вот запускаю я full scan по таблице, который идет 2 часа. При прохождении блока данных N я понимаю, что он грязный. Ок. Идем дальше. Но в это время какое-то приложение меняет блоки N-100. Т.е. мой запрос не закончился, блок N-100 уже проверен - он был чистый, а значит я не увижу данные из этого блока и в будущем. на самом деле я интересуюсь не вообще dirty и вообще закоммиченными, а их соотношением на некий момент т.ч. не знаю на предмет блокировочника но в версионнике есть снепшот, относительно которого я свою задачу порешаю. думаю в блокировочнике увидеть одним стейтментом и то и другое -- тоже бы не составило труда. на "размазанный момент чтения записи" , который меня бы тоже устроил [просто по сути задачи], если я буду видеть статус [dirty|commited] каждой из. другое дело -- выковырять в ноздре некую универсалию, сферически независимую от движка, и внести её в стандарт -- вот это, пожалуй, будет уже сложно и в постановке, и в реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 14:35 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттана самом деле я интересуюсь не вообще dirty и вообще закоммиченными, а их соотношением на некий момент т.ч. не знаю на предмет блокировочника но в версионнике есть снепшот, относительно которого я свою задачу порешаю. Нету там такого снапшота. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 16:29 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэтта<> но в версионнике есть снепшот, относительно которого я свою задачу порешаю. Нету там такого снапшота. снапшот -- взять всё живое, что есть, и отсеять то, что по id транзакции не входит в видимость сессии. мне вот вместо вот этого: "отсеять всё то" -- нужно напротив -- взять всё [вернее -- кое что] живое, что есть, но не входит в видимость (и, отдельной строкой -- кое-что, что входит). если в fb это не реализуемо (вам виднее) -- не очевидно, что не реализуемо на других движках. -- кстати, можете рассказать, почему оно там не реализуемо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 18:08 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
эттаможете рассказать, почему оно там не реализуемо Потому что "взять всё живое на момент старта транзакции/запроса" и сделать неизменяемую копию - чертовски дорогое занятие. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 18:19 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэттаможете рассказать, почему оно там не реализуемо Потому что "взять всё живое на момент старта транзакции/запроса" и сделать неизменяемую копию - чертовски дорогое занятие. в том то и мякотка, что мне в задачу не нужно неизменяемый снапшот по dirty. мне нужно знать, что на момент принятия мной решения там кое чего не болтается . точка. если оно не болталось от и до -- то оно там и не появится, поскольку у меня строго монотонная последовательность туда всовывается [факт "предметной области", о которой субд не оповещён]. понятно, что задача сильно специальная. сцепить синхронную логику с асинхронной -- но она всюду, где мы что-то хотим делать не тотчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 19:09 |
|
Чем плох блокировочник по сравнению с версионником?
|
|||
---|---|---|---|
#18+
этта... статус [dirty|commited] каждой из .... Хм... Ну, насколько я знаю, для блокировочного IBM Informix Dynamic Server, например, такая задача теоретически разрешима: в таблицах системного каталога сервера есть таблица с блокировками, поэтому INNER JOIN легко даст ONLY DIRTY, а LEFT OUTER + COALESCE() - [dirty|commited]... С производительностью только может не всё ладно случиться, но утверждать с ходу плохого не буду... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 19:32 |
|
|
start [/forum/search_topic.php?author=%D0%A1%D1%82%D0%B0%D1%80%D1%8B%D0%B9+IBM%D1%89%D0%B8%D0%BA&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
273ms |
get tp. blocked users: |
2ms |
others: | 5231ms |
total: | 5602ms |
0 / 0 |