powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
25 сообщений из 370, страница 10 из 15
Чем плох блокировочник по сравнению с версионником?
    #38959055
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousХм, а разве нет (я напомню, мы обсуждаем вариант "происходит
повисание по wait с ожиданием результата")?
Ну это ты мне скажи: "да, я именно это утверждаю" или "нет, я утверждаю совсем другое".
Мой телепатер не справляется это угадать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959119
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
этта-- ах, да , я-то про версию -- читать
то что можно читать старую версию -- это естественно (её ж никто не лочил в
версионнике)
Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже...

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

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

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

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


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

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

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

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


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

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


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


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

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

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

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

READ COMMITTED RECORD_VERSION
READ COMMITTED NO RECORD_VERSION
SNAPSHOT
SNAPSHOT TABLE STABILITY

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

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


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


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

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

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

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

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

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

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


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


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

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


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

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


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


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



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

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

SQL> SELECT * FROM B;

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

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

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

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

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



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


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



Мораль: если производитель InterBase где-то утверждает, что "SNAPSHOT TABLE STABILITY" = SERIALIZABLE, это очередное переопределение терминов.
...
Рейтинг: 0 / 0
25 сообщений из 370, страница 10 из 15
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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