powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Конкурентный доступ
25 сообщений из 29, страница 1 из 2
Конкурентный доступ
    #39309391
=MOHAX=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пытаюсь разобраться как работает конкурентный доступ на небольших примерах.
Все запросы выполняются на стандартном уровне изоляции (READ COMMITTED).

Допустим у нас есть запрос А:
Код: plsql
1.
SELECT (SELECT MAX(id) FROM table1) = (SELECT MAX(id) FROM table1);


Параллельно выполняется запрос Б:
Код: plsql
1.
INSERT INTO table1(id) VALUES(9999);


Может ли быть ситуация когда в запросе А выполнится SELECT MAX(id) FROM table1, потом произойдет вставка в таблицу, а потом выполнится второй SELECT MAX(id) FROM table1 и конечный результат сравнения будет FALSE?
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309397
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=MOHAX=,

нет, не может такого быть. в рамках одного запроса данные из одного snapshot'а будут читаться.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309409
=MOHAX=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как тогда быть вот с таким запросом:
Код: plsql
1.
INSERT INTO table1(id) VALUES((SELECT MAX(id) + 1 FROM table1))



При конкурентном доступе совсем не обязательно, что id будут идти последовательно.
Получается, что запрос вроде как один, но по факту сначала выполнится
Код: plsql
1.
SELECT MAX(id) + 1 FROM table1


и только потом
Код: plsql
1.
INSERT INTO table1(id) VALUES(result)


?

Правильно ли я понимаю, что в таком случае надо делать блокировку на всю таблицу и только потом выполнять INSERT?

Код: plsql
1.
2.
LOCK TABLE table1 IN EXCLUSIVE MODE;
INSERT INTO table1(id) VALUES((SELECT MAX(id) + 1 FROM table1))
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309415
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=MOHAX=,

тут правильнее будет использовать sequence, которые для таких целей и созданы. правда они не гарантируют что их последовательность будет без дырок (в случае какой-то ошибки, rollback'а сиквенс назад крутиться не будет), но не будет попыток вставить запись с одним id. использование блокировок может привести к большой просадке производительности, когда запросов таких будет много вызываться. не стоит их всюду использовать.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309447
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=MOHAX=При конкурентном доступе совсем не обязательно, что id будут идти последовательно.
Получается, что запрос вроде как один, но по факту сначала выполнится
Код: plsql
1.
SELECT MAX(id) + 1 FROM table1


и только потом
Код: plsql
1.
INSERT INTO table1(id) VALUES(result)


?

А Вы ожидали, что будет наоборот? ;) Это и в самом деле один запрос, читаемый snapshot тут один.

=MOHAX=Правильно ли я понимаю, что в таком случае надо делать блокировку на всю таблицу и только потом выполнять INSERT?

Код: plsql
1.
2.
LOCK TABLE table1 IN EXCLUSIVE MODE;
INSERT INTO table1(id) VALUES((SELECT MAX(id) + 1 FROM table1))


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

https://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-SERIALIZABLE
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309479
=MOHAX=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius Спасибо, я наверно просто неудачный пример придумал. Тут важно, что запрос сначала извлекает данные из этой таблицы, а потом в нее же их кладет обратно.

PgSQLanonymous3 Так в том то и дело, что при конкурентном доступе последовательность нарушается. Если мы выполним запрос в двух разных клиентах:
Код: plsql
1.
INSERT INTO table1(id) SELECT MAX(id) + 1 FROM table1



то вполне вероянтно, что очередность будет следующая:
Код: sql
1.
2.
3.
4.
Клиент А: SELECT MAX(id) + 1 FROM table1 -- RESULT = 1
Клиент Б: SELECT MAX(id) + 1 FROM table1 -- RESULT = 1
Клиент А: INSERT INTO table1(id) VALUES(1);
Клиент Б: INSERT INTO table1(id) VALUES(1); -- ERROR



Мы не можем повторно добавить существующий элемент:
Код: plsql
1.
2.
ERROR:  duplicate key value violates unique constraint "table1_pkey"
DETAIL:  Key (id)=(1) already exists.



Правильно ли я понимаю, что хоть INSERT INTO ... SELECT представляет собой конструкцию в виде одного запроса, но чтение и запись осуществляются последовательно из разных Snapshot'ов? А в случае SELECT запроса чтение всегда осуществляется из одного и того же Snapshot?
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309561
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=MOHAX=Правильно ли я понимаю, что хоть INSERT INTO ... SELECT представляет собой конструкцию в виде одного запроса, но чтение и запись осуществляются последовательно из разных Snapshot'ов? А в случае SELECT запроса чтение всегда осуществляется из одного и того же Snapshot?

Вставка в базу не может осуществляться в SNAPSHOT (snapshot - слепок данных на какой то момент времени, он не для записи предназначен).
Какое поведение вы собственно хотите от базы в данном случае?
Изоляция read committed тут не нарушена.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309708
=MOHAX=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk Я просто пытаюсь понять как устроена база данных, чтобы правильно решить поставленную задачу.
Мне нужно не допустить порчи данных при одновременной записи в таблицу и я пытаюсь понять какой из инструментов СУБД сможет мне в этом помочь.
К сожалению я не могу изменять уровень изоляции на Serializable, поэтому думаю, что решить эту проблему можно будет блокировками.
Насколько я понял, в общем случае, блокировать перед вставкой/изменением данных нужно только целевую таблицу, для чтения блокировки не требуются.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309728
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=MOHAX=,

возможно вам нужен select for update, но не зная задачи сложно советовать.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39309833
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=MOHAX=К сожалению я не могу изменять уровень изоляции на Serializable...Почему?

=MOHAX=Так в том то и дело, что при конкурентном доступе последовательность нарушается.Ну тут можно и придраться и сказать, что нарушения-то тут и нет...
Сделать COMMIT второй транзакции Вам же не удастся, верно? ;)
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310592
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3Правильно было бы пользоваться SERIALIZABLE во всех случаях, как это описано в документации,
а явными блокировками и т.п. даже не пытаться пользоваться, пока Вам это действительно не станет нужно,
при условии, что Вы с ними досконально разберётесь (т.е. почти никогда).

https://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-SERIALIZABLE

не слушайте этого обкурка.

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

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

в древности для этого использовали например такие трюки, как табличку максимумов (tablename,max_commited_id) и делали сначала SELECT FOR UPDATE из неё, и только потом (когда она освобождалась предыдущим сеансом) -- в следующем стейтменте -- INSERT INTO table1 с чтением заново значения из таблички максимумов.

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


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


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

Но если вы минималист -- логику БД храните в БД -- то учитесь работать без откатов с клиента -- только с очередями внутри БД--ной логики, вызываемой хранимками с клиента. В пж есть много печали со сложными (объёмистыми) типами, (отсутствие передачи по ссылке -- только через копию) -- что-то из сродственного с работой со строками в жабе (буферов в пж у вас не будет) -- вот там вот всё это может сработать очень интересно. если обкурок этим занимается -- это его извиняет. но лезть в общем случае с таким решением в классическом клиент-- сервере --- это перебор
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310642
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqPgSQLanonymous3
https://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-SERIALIZABLE

не слушайте этого обкурка.

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

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

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

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

Что-то конктреных существенных претензий к DLL я так от тебя и не слышал.

qwwqв древности для этого использовали например такие трюки,
как табличку максимумов (tablename,max_commited_id)

И сейчас используют, и в чём тут трюк? Обычная оптимизация...

qwwqи делали сначала SELECT FOR UPDATE из неё, и только
потом (когда она освобождалась предыдущим сеансом)
-- в следующем стейтменте --
INSERT INTO table1 с чтением заново значения из таблички максимумов.

А вот эта ерунда уже перпендикулярна "табличке максимумов".

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

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

То это будут его, влезшего, личные проблемы. Его и только его
транзакции начнут создавать так любимую "коммитедшиками" неконсистентную окрошку. ;)

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

У меня такое впечатление, что большинство программистов СУБД почему-то уверены,
что они занимаются highload-ом, хотя ничего подобного у них и близко нет ,
и все их "оптимизации" на деле оказываются не только пустой тратой времени,
но и приводят к куче ошибок.

qwwqНо если вы минималист -- логику БД храните в БД -- то учитесь работать без откатов с клиента -- только с очередями внутри БД--ной логики, вызываемой хранимками с клиента. В пж есть много печали со сложными (объёмистыми) типами, (отсутствие передачи по ссылке -- только через копию) -- что-то из сродственного с работой со строками в жабе (буферов в пж у вас не будет) -- вот там вот всё это может сработать очень интересно. если обкурок этим занимается -- это его извиняет. но лезть в общем случае с таким решением в классическом клиент-- сервере --- это перебор
Вот, вот оно --- во всей красе. ;(
Зачем ты вообще пришёл в "мир" РСУБД, если ты одержим производительностью?
Ты вообще понимаешь, что это специализированные инструменты, у которых
есть определённые свойства и чёткое назначение (ты вообще знаешь, какое?).
И использовать их стоит только тогда, когда эти свойства и возможности
для кого-то настолько важны , что он готов за это заплатить
производительностью, и заплатить дорого .
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310696
ocp_dba_rhce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3qwwqпропущено...


У меня такое впечатление, что большинство программистов СУБД почему-то уверены,
что они занимаются highload-ом, хотя ничего подобного у них и близко нет ,
и все их "оптимизации" на деле оказываются не только пустой тратой времени,
но и приводят к куче ошибок.
.

Этот товарищ, последние 4 года и занимался highload-ом на 500Тб базе с 10000 TPS,
прилетом wraparaund-a и другими приключениями.
Если в ваши жизненные планы входит позаниматься чем-то посерьезней, чем БД класса
записная книжка объемом не больше десятка Гб, то стоит вчитаться в его трудно
перевариваемые посты.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310712
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3,

на заборе тоже много чо пишуд

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

т.е. "думать, что говоришь", и "говорить, что думаешь" -- немного разные вещи, ага.

вы в основном по второй части.
бывает.

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

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


вы не проверили -- т.ч. "печально я смотрю на ваше по колено"
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310739
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ocp_dba_rhcePgSQLanonymous3пропущено...
У меня такое впечатление, что большинство программистов СУБД почему-то уверены,
что они занимаются highload-ом, хотя ничего подобного у них и близко нет ,
и все их "оптимизации" на деле оказываются не только пустой тратой времени,
но и приводят к куче ошибок.
.
Этот товарищ, последние 4 года и занимался highload-ом на 500Тб базе с 10000 TPS,
прилетом wraparaund-a и другими приключениями.

Ну что ж, если этой базой занимается он, надеюсь, корректность данных там не очень важна. ;)
Я же говорю про большинство программистов СУБД, у которых таких баз (ни по размеру,
ни, главное, по нагрузке) и близко нет . И учить их таким вещам никакого смысла нет --- всё,
что они от этого получат, это потерянное время и горсть трудноуловимых ошибок.
Это именно та ситуация, о которой вот эта цитата:
Premature optimization is the root of all evil -- Donald Knuth

ocp_dba_rhceЕсли в ваши жизненные планы входит позаниматься чем-то посерьезней, чем БД класса
записная книжка объемом не больше десятка Гб, то стоит вчитаться в его трудно
перевариваемые посты.
"Записная книжка" тут ни причём совершенно.
IMHO, большинство БД сейчас находятся в диапазоне нескольких сотен Гб, и среди них немало "серьёзных".
Дело-то в том, что объём данных (хранимых в СУБД), о многих объектах реального мира
вместе с ростом мощности компьютеров не растёт .

Вот, к примеру, объём данных в БД ERP областной розничной сети, торгующей
стройматериалами (где немало номенклатур, проводок, и разнообразных
бизнес-процессов, информация о которых хранится в той же базе), за 10 лет работы
составил всего лишь ~ 400 Гб.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310741
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqPgSQLanonymous3,
на заборе тоже много чо пишуд

Тоже личный опыт участия? ;)

qwwqт.е. если в доке написано, "как правильно работать в сериалайзебле", это ещё не означает , что именно "в сериалайзебле -- работать правильно"

То есть, до описываемых там преимуществ ты так и не дочитал?
qwwqоткрыл 2 сессии. в одной бы начал не рид комитед транзакцию [мы проверяли на рипитебл риде -- просто шальная мысль была, что наше партицирование в автономиях не совместимо с рипитебл], и смотрел за появлением объектов, не существовавших до начала его транзы. там много радости, типа гистерезиса на селектах из системных в зависимости от порядка выполнения dml и выборок. и т.п.. мне это очень скучно и грустно перепроверять. -- я был "фшоки", ага. в полном.
И было это, наверное, лет 10 назад, когда в PostgreSQL даже SERIALIZABLE не было, да? ;)
Я к тому, что развивается он быстро, и то, что было фактом 5 лет назад, может быть сейчас совсем не так.
Кстати, мне помнится, что использование SnapshotAny для выборок из системных таблиц
упорно устраняли, и, возможно, устранили совсем...

qwwqвы не проверили -- т.ч. "печально я смотрю на ваше по колено"
Согласен, полной и всесторонней проверки транзакционного DDL я не производил ---
приходится верить документации, а что поделаешь. :(
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310782
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ocp_dba_rhce,

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


т.е. то, чем я занимался -- не аргумент
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310790
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3,

было это месяца полтора тому. или 2.
как из ушата окатило, ага

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

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

ЗЫ:
автор Serializable transactions are the best performance choice for some environments.


какое слово some в этом предложении вызывает у вас затруднение ?

"ккто--тто ккое-где у нас, порой"
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310959
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqт.е. то, чем я занимался -- не аргумент
То, чем кто-то занимался --- в общем случае, не аргумент.

qwwqбыло это месяца полтора тому. или 2.
как из ушата окатило, ага
Не удержался, проверил. Да, всё так и есть, как ты говоришь.
И вообще, похоже на то, что "общепринятое" значение "термина"
transactional DDL --- не ACID, а только AD. ;(

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

Ты про это вот, что ли?
https://www.postgresql.org/message-id/flat/19015.1305087444@sss.pgh.pa.us
Если да, то там есть и test case, и отреагировал он адекватно ---
"да, это недостаток, но переписывать надо много".
Но да, "воз и ныне там". :(

qwwqт.ч. читать там этих козликов, когда они за философию -- себя не уважать.
вот вы себя и не уважили, хехе.

Мне это пока не было критично .
А так да, это там бывает, и меня тоже напрягает. Но если продолжать использовать
PostgreSQL, остаётся только "Мыши плакали, кололись...". ;)

qwwqSerializable transactions are the best performance choice for some environments.
какое слово some в этом предложении вызывает у вас затруднение ?

Это: performance . Вместе с тем, что твоя им одержимость не
даёт тебе права давать дурные советы нормальным людям. ;)
Как и то, что это вообще не является ключевым из описываемых там преимуществ.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39310999
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3,

нормальные люди всю жисть на умолчательном рид-коммитеде сидят, и он им не жмет

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


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

стали разбираться -- а блокировки то страничные.
такая вот "оптимизация"

ну и т.п.

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

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

про лейна замнём -- не все собеседники вкуривают чем отписка отличается от работы. хотя и обкурились по саоме небалуйсо. не в коня корм.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39311084
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqPgSQLanonymous3,
нормальные люди всю жисть на умолчательном рид-коммитеде сидят, и он им не жметИз какого пальца ты высосал эту "статистику", интересно?

qwwqэто только задроты, которые дисциплине работе с коммитедем не обучены, И эта "дисциплина" состоит в основном в "а хрен с ним, авось прокатит", да?

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

Чего-чего? Какое ещё "сторонее" решение? Что, для изменения уровня
изоляции какое-то сторонее расширение надо ставить, что ли? ;)
qwwqвместо того, чтобы единожды освоить работу со строго очередным доступом к разделяемому ресурсу
А, то есть это прям серебряная пуля, и все уровни выше READ COMMITTED
придумали какие-то недоучки, а надо-то всего "единожды освоить работу",
и они сразу станут не нужны, и всё будет консистетно, да?

qwwq(а совсем таки не про оптимизацию тот паттерн, как нам тут обкурки подбрасывают)

Ты о чём, вообще?

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

Во-первых, не суди по себе, а во-вторых, твоя "критика" Tom Lane очень
напоминает басню про Слона и Моську.
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39311096
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3,

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

всё.

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

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

а рукожопым обкуркам остаётся только тыкать незнакомым людям, и рассказывать басни про сторонних мега гурьёв, отписки которых вполне в количествах даны нам в ощущения :
https://www.postgresql.org/message-id/2684.1242058486@sss.pgh.pa.us
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39311494
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqPgSQLanonymous3,
нормальным кодерам в версионнике нужны 2 уровня
-- умолчательный рид коммитед, чтобы нормально конкурентно писать ( с явными очередями, если ресурс разделяемый)
-- и снапшот -- чтобы собирать консистентный отчет.
всё.

Ага, всё, вот корректности данных и конец. :(
Видно, жизненный принцип таких "нормальных" кодеров "write once and run away".

qwwqсериалайзебл придуман для дрочеров , не умеющих написать 2 слова подряд без того, чтобы не обделаться.

SERIALIZABLE придуман для нормальных людей, а не для самовлюблённых идиотов,
которые радостно пишут в базу и читают оттуда мусор вместо данных.
Вот скажи мне, ты у себя в базе один разрабатываешь?
А если нет, то откуда все эти люди знают, какой ресурс у вас в данный
момент разделяемый, а какой нет?
А нормальным людям (сюрприз!) знать этого вообще не надо ,
наше дело всего лишь корректно написать только свою процедуру/транзакцию, и всё.

qwwqк этому прилагается набор паттернов организации очередей [доступа к разделяемому ресурсу] там, где они необходимы.
вот собственно весь джентельменский набор, достаточный для писания базёнок любого уровня
Да-да, "у нас есть такие приборы. Но мы вам о них не расскажем."

qwwqа рукожопым обкуркам остаётся только тыкать незнакомым людям,

Да ты просто восхитительный умница! ;)

qwwqи рассказывать басни про сторонних мега гурьёв, отписки которых вполне в количествах даны нам в ощущения :
https://www.postgresql.org/message-id/2684.1242058486@sss.pgh.pa.us]https://www.postgresql.org/message-id/2684.1242058486@sss.pgh.pa.us
Ну и где ты там увидел отписку, конкретно? Ты thread дальше-то читал, кстати?
...
Рейтинг: 0 / 0
Конкурентный доступ
    #39311511
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLanonymous3qwwqPgSQLanonymous3,
нормальным кодерам в версионнике нужны 2 уровня
-- умолчательный рид коммитед, чтобы нормально конкурентно писать ( с явными очередями, если ресурс разделяемый)
-- и снапшот -- чтобы собирать консистентный отчет.
всё.

Ага, всё, вот корректности данных и конец. :(
Видно, жизненный принцип таких "нормальных" кодеров "write once and run away".

Почему "корректности данных конец" ?


PgSQLanonymous3qwwqсериалайзебл придуман для дрочеров , не умеющих написать 2 слова подряд без того, чтобы не обделаться.

SERIALIZABLE придуман для нормальных людей, а не для самовлюблённых идиотов,
которые радостно пишут в базу и читают оттуда мусор вместо данных.
Вот скажи мне, ты у себя в базе один разрабатываешь?
А если нет, то откуда все эти люди знают, какой ресурс у вас в данный
момент разделяемый, а какой нет?

PgSQLanonymous3, что за бред Вы пишите (((

SELECT FOR UPDATE команду знаете?

Тут конечно qwwq был не прав, в SELECT FOR UPDATE 3 слова, а не 2 ((( и даже не подряд идут.

PgSQLanonymous3наше дело всего лишь корректно написать только свою процедуру/транзакцию, и всё.

Вот и пишите ВСЕ в Serialized. Хозяин - барин.

А другие вполне нормально и без него жили, живут и жить будут.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Конкурентный доступ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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