Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
Я пытаюсь разобраться как работает конкурентный доступ на небольших примерах. Все запросы выполняются на стандартном уровне изоляции (READ COMMITTED). Допустим у нас есть запрос А: Код: plsql 1. Параллельно выполняется запрос Б: Код: plsql 1. Может ли быть ситуация когда в запросе А выполнится SELECT MAX(id) FROM table1, потом произойдет вставка в таблицу, а потом выполнится второй SELECT MAX(id) FROM table1 и конечный результат сравнения будет FALSE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 06:09 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
=MOHAX=, нет, не может такого быть. в рамках одного запроса данные из одного snapshot'а будут читаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 07:05 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
А как тогда быть вот с таким запросом: Код: plsql 1. При конкурентном доступе совсем не обязательно, что id будут идти последовательно. Получается, что запрос вроде как один, но по факту сначала выполнится Код: plsql 1. и только потом Код: plsql 1. ? Правильно ли я понимаю, что в таком случае надо делать блокировку на всю таблицу и только потом выполнять INSERT? Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 08:05 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
=MOHAX=, тут правильнее будет использовать sequence, которые для таких целей и созданы. правда они не гарантируют что их последовательность будет без дырок (в случае какой-то ошибки, rollback'а сиквенс назад крутиться не будет), но не будет попыток вставить запись с одним id. использование блокировок может привести к большой просадке производительности, когда запросов таких будет много вызываться. не стоит их всюду использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 08:19 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
=MOHAX=При конкурентном доступе совсем не обязательно, что id будут идти последовательно. Получается, что запрос вроде как один, но по факту сначала выполнится Код: plsql 1. и только потом Код: plsql 1. ? А Вы ожидали, что будет наоборот? ;) Это и в самом деле один запрос, читаемый snapshot тут один. =MOHAX=Правильно ли я понимаю, что в таком случае надо делать блокировку на всю таблицу и только потом выполнять INSERT? Код: plsql 1. 2. Правильно было бы пользоваться SERIALIZABLE во всех случаях, как это описано в документации, а явными блокировками и т.п. даже не пытаться пользоваться, пока Вам это действительно не станет нужно, при условии, что Вы с ними досконально разберётесь (т.е. почти никогда). https://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-SERIALIZABLE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 09:26 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
Alexius Спасибо, я наверно просто неудачный пример придумал. Тут важно, что запрос сначала извлекает данные из этой таблицы, а потом в нее же их кладет обратно. PgSQLanonymous3 Так в том то и дело, что при конкурентном доступе последовательность нарушается. Если мы выполним запрос в двух разных клиентах: Код: plsql 1. то вполне вероянтно, что очередность будет следующая: Код: sql 1. 2. 3. 4. Мы не можем повторно добавить существующий элемент: Код: plsql 1. 2. Правильно ли я понимаю, что хоть INSERT INTO ... SELECT представляет собой конструкцию в виде одного запроса, но чтение и запись осуществляются последовательно из разных Snapshot'ов? А в случае SELECT запроса чтение всегда осуществляется из одного и того же Snapshot? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 10:15 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
=MOHAX=Правильно ли я понимаю, что хоть INSERT INTO ... SELECT представляет собой конструкцию в виде одного запроса, но чтение и запись осуществляются последовательно из разных Snapshot'ов? А в случае SELECT запроса чтение всегда осуществляется из одного и того же Snapshot? Вставка в базу не может осуществляться в SNAPSHOT (snapshot - слепок данных на какой то момент времени, он не для записи предназначен). Какое поведение вы собственно хотите от базы в данном случае? Изоляция read committed тут не нарушена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 11:50 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk Я просто пытаюсь понять как устроена база данных, чтобы правильно решить поставленную задачу. Мне нужно не допустить порчи данных при одновременной записи в таблицу и я пытаюсь понять какой из инструментов СУБД сможет мне в этом помочь. К сожалению я не могу изменять уровень изоляции на Serializable, поэтому думаю, что решить эту проблему можно будет блокировками. Насколько я понял, в общем случае, блокировать перед вставкой/изменением данных нужно только целевую таблицу, для чтения блокировки не требуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 14:40 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
=MOHAX=, возможно вам нужен select for update, но не зная задачи сложно советовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 15:02 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
=MOHAX=К сожалению я не могу изменять уровень изоляции на Serializable...Почему? =MOHAX=Так в том то и дело, что при конкурентном доступе последовательность нарушается.Ну тут можно и придраться и сказать, что нарушения-то тут и нет... Сделать COMMIT второй транзакции Вам же не удастся, верно? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2016, 17:47 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
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 .... это сделать нельзя -- т.к. перенос снепшота не осуществится после освобождения записи -- и вам придется читать как--то мимо снепшота, например автономно через дблинк, что возможно, но явно лишнее и чреватое). такого же типа подходы можно делать и с адвайзори локами . Важно помнить, что они требуют дисциплины --- если кто--то пойдет мимо такого оговорённого механизма очереди -- он испортит всю обедню. (так же, как если кто--то влезет с коммитедом на кухню к сериалайзебальщикам. чисто философски, если клиент (или третий слой) крутится в непосредственной близости (затраты на доступ мизерны), и вы всю реализацию сложной логики выносите в него -- сериалайзебл будет оправдан -- логика на деле размажется между третим слоем и базой -- сейвпойнтики там, и все такое. но вам на затраты "взаимодействия--откатов" покласть -- сетевых затрат нет. Но если вы минималист -- логику БД храните в БД -- то учитесь работать без откатов с клиента -- только с очередями внутри БД--ной логики, вызываемой хранимками с клиента. В пж есть много печали со сложными (объёмистыми) типами, (отсутствие передачи по ссылке -- только через копию) -- что-то из сродственного с работой со строками в жабе (буферов в пж у вас не будет) -- вот там вот всё это может сработать очень интересно. если обкурок этим занимается -- это его извиняет. но лезть в общем случае с таким решением в классическом клиент-- сервере --- это перебор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2016, 19:46 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
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Но если вы минималист -- логику БД храните в БД -- то учитесь работать без откатов с клиента -- только с очередями внутри БД--ной логики, вызываемой хранимками с клиента. В пж есть много печали со сложными (объёмистыми) типами, (отсутствие передачи по ссылке -- только через копию) -- что-то из сродственного с работой со строками в жабе (буферов в пж у вас не будет) -- вот там вот всё это может сработать очень интересно. если обкурок этим занимается -- это его извиняет. но лезть в общем случае с таким решением в классическом клиент-- сервере --- это перебор Вот, вот оно --- во всей красе. ;( Зачем ты вообще пришёл в "мир" РСУБД, если ты одержим производительностью? Ты вообще понимаешь, что это специализированные инструменты, у которых есть определённые свойства и чёткое назначение (ты вообще знаешь, какое?). И использовать их стоит только тогда, когда эти свойства и возможности для кого-то настолько важны , что он готов за это заплатить производительностью, и заплатить дорого . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2016, 21:00 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3qwwqпропущено... У меня такое впечатление, что большинство программистов СУБД почему-то уверены, что они занимаются highload-ом, хотя ничего подобного у них и близко нет , и все их "оптимизации" на деле оказываются не только пустой тратой времени, но и приводят к куче ошибок. . Этот товарищ, последние 4 года и занимался highload-ом на 500Тб базе с 10000 TPS, прилетом wraparaund-a и другими приключениями. Если в ваши жизненные планы входит позаниматься чем-то посерьезней, чем БД класса записная книжка объемом не больше десятка Гб, то стоит вчитаться в его трудно перевариваемые посты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 00:41 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3, на заборе тоже много чо пишуд т.е. если в доке написано, "как правильно работать в сериалайзебле", это ещё не означает , что именно "в сериалайзебле -- работать правильно" т.е. "думать, что говоришь", и "говорить, что думаешь" -- немного разные вещи, ага. вы в основном по второй части. бывает. про то, что транзакционный ддл накатывается в пж в идеалогии именно комиттеда -- было сказано. неленивый и неглупый чел бы давно проверил на пальцах: открыл 2 сессии. в одной бы начал не рид комитед транзакцию [мы проверяли на рипитебл риде -- просто шальная мысль была, что наше партицирование в автономиях не совместимо с рипитебл], и смотрел за появлением объектов, не существовавших до начала его транзы. там много радости, типа гистерезиса на селектах из системных в зависимости от порядка выполнения dml и выборок. и т.п.. мне это очень скучно и грустно перепроверять. -- я был "фшоки", ага. в полном. вы не проверили -- т.ч. "печально я смотрю на ваше по колено" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 03:06 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
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 Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 09:52 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
qwwqPgSQLanonymous3, на заборе тоже много чо пишуд Тоже личный опыт участия? ;) qwwqт.е. если в доке написано, "как правильно работать в сериалайзебле", это ещё не означает , что именно "в сериалайзебле -- работать правильно" То есть, до описываемых там преимуществ ты так и не дочитал? qwwqоткрыл 2 сессии. в одной бы начал не рид комитед транзакцию [мы проверяли на рипитебл риде -- просто шальная мысль была, что наше партицирование в автономиях не совместимо с рипитебл], и смотрел за появлением объектов, не существовавших до начала его транзы. там много радости, типа гистерезиса на селектах из системных в зависимости от порядка выполнения dml и выборок. и т.п.. мне это очень скучно и грустно перепроверять. -- я был "фшоки", ага. в полном. И было это, наверное, лет 10 назад, когда в PostgreSQL даже SERIALIZABLE не было, да? ;) Я к тому, что развивается он быстро, и то, что было фактом 5 лет назад, может быть сейчас совсем не так. Кстати, мне помнится, что использование SnapshotAny для выборок из системных таблиц упорно устраняли, и, возможно, устранили совсем... qwwqвы не проверили -- т.ч. "печально я смотрю на ваше по колено" Согласен, полной и всесторонней проверки транзакционного DDL я не производил --- приходится верить документации, а что поделаешь. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 10:03 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
ocp_dba_rhce, ну так обкурок формально правы -- у нас не монолитная субд а шард--кластер, с изрядной частью асинхронности, причём надо объём делить на 100 -- большая часть -- однократно записываемые блобы. т.е. то, чем я занимался -- не аргумент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 12:48 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3, было это месяца полтора тому. или 2. как из ушата окатило, ага а про то, что пишут эти бракоделы --- я как-то (года два тому) на отписку тома лейна кому--то по поводу инвалидизации (вернее --её отсутствии) планов при дропе или удалении из иерархии партиций наткнулся, тоже ещё тот перец оказался. хотя казалось бы -- пять минут накидать тест кейс. да озадачится репланированием. а ведь авторитетнейший гурья в сообществе.печаль. и там тоже --"воз и ныне там" т.ч. читать там этих козликов, когда они за философию -- себя не уважать. вот вы себя и не уважили, хехе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 12:58 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3, ЗЫ: автор Serializable transactions are the best performance choice for some environments. какое слово some в этом предложении вызывает у вас затруднение ? "ккто--тто ккое-где у нас, порой" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2016, 13:06 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
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 . Вместе с тем, что твоя им одержимость не даёт тебе права давать дурные советы нормальным людям. ;) Как и то, что это вообще не является ключевым из описываемых там преимуществ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2016, 11:09 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3, нормальные люди всю жисть на умолчательном рид-коммитеде сидят, и он им не жмет это только задроты, которые дисциплине работе с коммитедем не обучены, вынуждены полагаться на стороннее (независимое от их кривых, растущих из ягодичной области) решение с той же очередью но на скрытые от них "предикатные локи" вместо того, чтобы единожды освоить работу со строго очередным доступом к разделяемому ресурсу (а совсем таки не про оптимизацию тот паттерн, как нам тут обкурки подбрасывают) кстати, этот паттерн было принято рассказывать в кач--ве анекдота -- какие то не то ораклиды не то дб2--ники занесли его на мс-скл 6.5 и получили жуткие тормоза на голом месте. стали разбираться -- а блокировки то страничные. такая вот "оптимизация" ну и т.п. там, с транзакционным ддл всё честно в коммитеде. но в рипитебле якобы удалось увидеть запись вставленную в другом сеансе в созданную позднее старта транзакции табличку. я даже и проверять теперь себя не хочу. ну их. с другой стороны это очень удобно для накатка ддл в автономиях -- результат виден доступен по завершению автономии при любом уровне изоляции , вот с видимостью в системных -- гистерезис. зависит от порядок обращения к . про лейна замнём -- не все собеседники вкуривают чем отписка отличается от работы. хотя и обкурились по саоме небалуйсо. не в коня корм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2016, 15:26 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
qwwqPgSQLanonymous3, нормальные люди всю жисть на умолчательном рид-коммитеде сидят, и он им не жметИз какого пальца ты высосал эту "статистику", интересно? qwwqэто только задроты, которые дисциплине работе с коммитедем не обучены, И эта "дисциплина" состоит в основном в "а хрен с ним, авось прокатит", да? qwwqвынуждены полагаться на стороннее (независимое от их кривых, растущих из ягодичной области) решение с той же очередью но на скрытые от них "предикатные локи" Чего-чего? Какое ещё "сторонее" решение? Что, для изменения уровня изоляции какое-то сторонее расширение надо ставить, что ли? ;) qwwqвместо того, чтобы единожды освоить работу со строго очередным доступом к разделяемому ресурсу А, то есть это прям серебряная пуля, и все уровни выше READ COMMITTED придумали какие-то недоучки, а надо-то всего "единожды освоить работу", и они сразу станут не нужны, и всё будет консистетно, да? qwwq(а совсем таки не про оптимизацию тот паттерн, как нам тут обкурки подбрасывают) Ты о чём, вообще? qwwqпро лейна замнём -- не все собеседники вкуривают чем отписка отличается от работы. хотя и обкурились по саоме небалуйсо. не в коня корм. Во-первых, не суди по себе, а во-вторых, твоя "критика" Tom Lane очень напоминает басню про Слона и Моську. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2016, 22:40 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3, нормальным кодерам в версионнике нужны 2 уровня -- умолчательный рид коммитед, чтобы нормально конкурентно писать ( с явными очередями, если ресурс разделяемый) -- и снапшот -- чтобы собирать консистентный отчет. всё. сериалайзебл придуман для дрочеров , не умеющих написать 2 слова подряд без того, чтобы не обделаться. к этому прилагается набор паттернов организации очередей [доступа к разделяемому ресурсу] там, где они необходимы. вот собственно весь джентельменский набор, достаточный для писания базёнок любого уровня а рукожопым обкуркам остаётся только тыкать незнакомым людям, и рассказывать басни про сторонних мега гурьёв, отписки которых вполне в количествах даны нам в ощущения : https://www.postgresql.org/message-id/2684.1242058486@sss.pgh.pa.us ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 00:29 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
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 дальше-то читал, кстати? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 19:32 |
|
||
|
Конкурентный доступ
|
|||
|---|---|---|---|
|
#18+
PgSQLanonymous3qwwqPgSQLanonymous3, нормальным кодерам в версионнике нужны 2 уровня -- умолчательный рид коммитед, чтобы нормально конкурентно писать ( с явными очередями, если ресурс разделяемый) -- и снапшот -- чтобы собирать консистентный отчет. всё. Ага, всё, вот корректности данных и конец. :( Видно, жизненный принцип таких "нормальных" кодеров "write once and run away". Почему "корректности данных конец" ? PgSQLanonymous3qwwqсериалайзебл придуман для дрочеров , не умеющих написать 2 слова подряд без того, чтобы не обделаться. SERIALIZABLE придуман для нормальных людей, а не для самовлюблённых идиотов, которые радостно пишут в базу и читают оттуда мусор вместо данных. Вот скажи мне, ты у себя в базе один разрабатываешь? А если нет, то откуда все эти люди знают, какой ресурс у вас в данный момент разделяемый, а какой нет? PgSQLanonymous3, что за бред Вы пишите ((( SELECT FOR UPDATE команду знаете? Тут конечно qwwq был не прав, в SELECT FOR UPDATE 3 слова, а не 2 ((( и даже не подряд идут. PgSQLanonymous3наше дело всего лишь корректно написать только свою процедуру/транзакцию, и всё. Вот и пишите ВСЕ в Serialized. Хозяин - барин. А другие вполне нормально и без него жили, живут и жить будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 20:06 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39311096&tid=1996994]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 281ms |
| total: | 553ms |

| 0 / 0 |
