powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Версионники и блокировочники
25 сообщений из 335, страница 6 из 14
Версионники и блокировочники
    #34018173
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Боюсь, моих телепатических способностей недостаточно для беседы с Вами.
Вернемся к этой теме когда научитесь мычать более членораздельно.
С пожеланиями скорейшего выздоровления,
Андрей.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018180
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Funny_FalconНа версионнике биллинг получается лучше (я и не спорю), но без блокировок по-любому не обойтись (моё мнение).
Я так до сих пор и не смог осознать связи "версионник значит без блокировок" :(
Ну откуда оно растет, кто-нибудь знает?!
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018218
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
А говорите понятно :)
Тут все просто. Запрос должен вернуть согласованный набор данный на некоторый момент времени.
Для "блокировочников" это момент окончания запроса, для "версионников" - момент начала. Просто ввиду особенностей технологии.

Я выше приводил конкрентый пример, и мне хотелось бы разобраться
в механизме работы oracle для этого примера и разных уровней изоляции.
Может я, читая сыылку, пропустил фразу о том что это набор
должен быть согласован на конкреный момент времени и СУБД это гарантирует.
Не могли бы Вы процитировать, если несложно.

Ихмо сам факт наличия рестарта противоречит
либо согласованности набора на конкретный момент времени,
либо логической целостности этого набора с точки зрения изоляции.

Можно вопрос поставить по другому.
На каких уровнях изоляции будет рестарт в ситуации описанной в моем примере?
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018230
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2andrey_anonymous
andrey_anonymousЯ так до сих пор и не смог осознать связи "версионник значит без блокировок" :(
Ну откуда оно растет, кто-нибудь знает?!
мир, дружба, жевачка?!! :-)
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018283
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous onstat-Если брать к примеру oracle
Простите, но тут Вы пытаетесь навязать свойства какой-то очень неудачной реализации серверу БД.

Какой курсор "не готов"? Почему он "не готов"?

Рассказываю:
При открытии курсора select for update
oracle не вернет управление из open до тех пор пока
для всех записей курсора в слоты транзакций в соответствующих
блоках не будет проставлен SCN.
Для того что бы проставить SCN предидущая транзакция
изменяющая эту запись должна быть уже закомичена или
откатана.

andrey_anonymous
Если Вам интересны конкретные технические решения, которые могли бы работать в Вашей задаче - могу проконсультировать, но это уже оффтоп поэтому предпочтительно все-таки в личной переписке.
Могу даже спроектировать и сделать пилот, но уже за деньги :)

Это гипотетическая задача разрешения конкурентного доступа к данным.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018294
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-Я выше приводил конкрентый пример, и мне хотелось бы разобраться
в механизме работы oracle для этого примера и разных уровней изоляции.

Вы про этот пример?
В oracle: в зависимости от уровня изолированности и характера изменений, произведенных t1 t2 может либо взять закоммиченные, либо рестартовать, либо выбросить "Can\'t serialize access". UNDO взять не может. onstat-Может я, читая сыылку, пропустил фразу о том что это набор
должен быть согласован на конкреный момент времени и СУБД это гарантирует.
Ищите по словосочетанию "Read Consistency" и обрящете. onstat-Ихмо сам факт наличия рестарта противоречит
либо согласованности набора на конкретный момент времени,
либо логической целостности этого набора с точки зрения изоляции.
Почему? В read commited рестарт для приложения выглядит как будто
этот dml-statement начал выполняться позже.
Т.е. переносится точка начала выполнения.
В serializable рестарта не будет - будет exception.
В readonly dml запрещен. onstat-
Можно вопрос поставить по другому.
На каких уровнях изоляции будет рестарт в ситуации описанной в моем примере?
Read Commited, при наличии конфликта по изменяемым данным.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018331
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- andrey_anonymous onstat-Если брать к примеру oracleКакой курсор "не готов"? Почему он "не готов"?

Рассказываю:
При открытии курсора select for update
Простите, а зачем пытаться заблокировать сразу все да еще и надолго в условиях высокой конкуренции?
Кстати, раз случай гипотетический, давайте для примера Вы расскажете как эту задачу решить на "блокировочнике" - чтобы понятнее было, что конкретно сравниваем. Я попробую предложить аналогичный функционал на oracle.
Похожие задачи решать приходилось, но не до конца ясен предложенный дизайн и суть затруднений.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018541
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!!вы это у юзеров спросите, вы то может и не наблюдаете проблем, их юзера наблюдают. выстривать все транзакции в очередь и разгребать их одним джобом это "функционал сервера, позволяющий решать проблему" :)
Все ответы Yo.!! сводятся к 2 простым вещам:
1. Фигня, везде есть выделенка
2. Блокировочник это такая страшная штука с деадлоками, от которой все страдают. Сам я не пробовал, но читал рекламный проспект Ларри, где все это подробно описано (с картинками).

Ну ну
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018631
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
2. Блокировочник это такая страшная штука с деадлоками, от которой все страдают. Сам я не пробовал, но читал рекламный проспект Ларри, где все это подробно описано (с картинками).

зачем же Ларри, про ужасы блокировок могу с MSDN, могу с ibm.com к стате интересно было бы почитать чем мотивирует Sybase введением MVCC ;)

ASCRUS, так что реальной задачи вы так и не смогли придумать ? поставте наместо злобных ораклойдов, дайте задачу которую на MVCC нельзя решить прямо. Ораклойды вам такую задачу дали, вы не справились, может стоит достойно ответить, а не лить тонны булшита на обстрактные темы ?
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018674
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Ищите по словосочетанию "Read Consistency" и обрящете.

onstat-
Ихмо сам факт наличия рестарта противоречит
либо согласованности набора на конкретный момент времени,
либо логической целостности этого набора с точки зрения изоляции.



Почему? В read commited рестарт для приложения выглядит как будто
этот dml-statement начал выполняться позже.
Т.е. переносится точка начала выполнения.
В serializable рестарта не будет - будет exception.
В readonly dml запрещен.

[/quot]


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




Код: plaintext
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.
Operation                                          Read Committed                Serializable 
--------------------------------------------------------------------------------
Dirty write                                         Not Possible                    Not Possible
 
Dirty read Not                                     Possible                         Not Possible
 
Non-repeatable read                            Possible                         Not Possible
 
Phantoms                                           Possible                         Not Possible
 
Compliant with ANSI/ISO SQL 92             Yes                              Yes
 
Read snapshot time                             Statement                     Transaction
 
Transaction set consistency            Statement level                 Transaction level
 
Row-level locking                                   Yes                           Yes
 
 Readers block writers                               No                             No
 
Writers block readers                               No                             No  
Different-row writers block writers              No                             No
 
Same-row writers block writers                 Yes                             Yes
 
Waits for blocking transaction                  Yes                              Yes
 
Subject to "can't serialize access" error       No                             Yes
 
Error after blocking transaction aborts       No                               No
 
Error after blocking transaction commits     No                               Yes
 

Есть сомнения в правдивости таблицы для выденный параметров если 2
конкурентные транзакции находятся в Serializable
Я не могу поянть механизма, чем это достигается.

Если смотреть в комплексе, то достоинств по сравнению с блокировочниками, совсем не много.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018684
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!!
ASCRUS, так что реальной задачи вы так и не смогли придумать ? поставте наместо злобных ораклойдов, дайте задачу которую на MVCC нельзя решить прямо. Ораклойды вам такую задачу дали, вы не справились, может стоит достойно ответить, а не лить тонны булшита на обстрактные темы ?
Если уж на такой примитивной человек признаётся, что на Оракл не может выполнить поставленных условий - то чего уж говорить про серьёзные :)

Это примерно как будущее предсказывать - на пару дней вперёд не могу, а вот лет на 100 - пожалуйста!
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018726
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
Если уж на такой примитивной человек признаётся, что на Оракл не может выполнить поставленных условий - то чего уж говорить про серьёзные :)

вот можно эту задачу сформулировать в терминах бизнес логики, а то в таком виде я не пойму чо куда а главное зачем.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018733
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! ASCRUS
2. Блокировочник это такая страшная штука с деадлоками, от которой все страдают. Сам я не пробовал, но читал рекламный проспект Ларри, где все это подробно описано (с картинками).

зачем же Ларри, про ужасы блокировок могу с MSDN, могу с ibm.com к стате интересно было бы почитать чем мотивирует Sybase введением MVCC ;)

ASCRUS, так что реальной задачи вы так и не смогли придумать ? поставте наместо злобных ораклойдов, дайте задачу которую на MVCC нельзя решить прямо. Ораклойды вам такую задачу дали, вы не справились, может стоит достойно ответить, а не лить тонны булшита на обстрактные темы ?
Гм, если фантомы это абстрактные темы, а реальные задачи только на отчеты ориентированы, то я умолкаю.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018764
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous onstat- andrey_anonymous onstat-Если брать к примеру oracleКакой курсор "не готов"? Почему он "не готов"?

Рассказываю:
При открытии курсора select for update
Простите, а зачем пытаться заблокировать сразу все да еще и надолго в условиях высокой конкуренции?
Кстати, раз случай гипотетический, давайте для примера Вы расскажете как эту задачу решить на "блокировочнике" - чтобы понятнее было, что конкретно сравниваем. Я попробую предложить аналогичный функционал на oracle.
Похожие задачи решать приходилось, но не до конца ясен предложенный дизайн и суть затруднений.

Систематезируем условия абстрактной задачи.
Есть наборы товаров с количеством в таблице, они уже закомичены.
Нужно проводить по остаткам и по кассе эти наборы за одну транзакцию каждый, в паралельных сессиях, при том, что один одни товар
встречается в 90% наборов.
Такая постановка Вас устроит?
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018809
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- andrey_anonymous
Ищите по словосочетанию "Read Consistency" и обрящете.
Исходя из таблицы консистентный набор по времени для транзакции
можно получить только в Serializable.
Для транзакции - да, только в serializable или readonly. Не думаю, что это специфично для oracle.
Транзакция подразумевает некий набор операций.
Read commited в oracle предполагает согласованность данных на уровне statement. onstat-

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Operation                                          Read Committed                Serializable 
--------------------------------------------------------------------------------
Transaction set consistency            Statement level                 Transaction level
 
 
 Readers block writers                               No                             No
 
Writers block readers                               No                             No  
 
Есть сомнения в правдивости таблицы для выденный параметров если 2
конкурентные транзакции находятся в Serializable Я не могу поянть механизма, чем это достигается.Oracle concepts - документ достаточно толстый, но Вам нужна только глава "Data Concurrency and Consistency", там написано.
Сомнения напрасны.
onstat-Если смотреть в комплексе, то достоинств по сравнению с блокировочниками, совсем не много.
Вот чего-чего, а комплексного рассмотрения я что-то в этом топике не видел :)
Одни говорят про соответствие стандартам, другие - про блокировки, третьи - про версионность...
Применимость тех или иных СУБД для решения тех или иных задач (не придуманных задачек с искусственными ограничениями, а именно задач) не рассматривается :)
Лично мне кажется, что любую задачу в конце концов можно решить на большинстве существующих СУБД.
Вопрос надо ставить о стоимости оборудования, доступности персонала требуемой квалификации, сроках разработки и бюджете проекта.
Могу, конечно, и ошибаться - вдруг на блокировочниках чего-то в принципе сделать нельзя или по стандарту не положено :)
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018827
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-
Систематезируем условия абстрактной задачи.
Есть наборы товаров с количеством в таблице, они уже закомичены.
Нужно проводить по остаткам и по кассе эти наборы за одну транзакцию каждый, в паралельных сессиях, при том, что один одни товар
встречается в 90% наборов.
Такая постановка Вас устроит?

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

(хотя для бизнес логики, когда кассы сами снимают остатки напрямую не очень красиво (к задаче это не имеет никакого отношения))
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018866
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-Систематезируем условия абстрактной задачи.
Есть наборы товаров с количеством в таблице, они уже закомичены.
Нужно проводить по остаткам и по кассе эти наборы за одну транзакцию каждый, в паралельных сессиях, при том, что один одни товар
встречается в 90% наборов.
Такая постановка Вас устроит?
Я их всех проведу за одну транзакцию (выборка наборов с агрегацией по товарам и merge в остатки - можно даже одним statement заколбасить :), в чем проблема-то? По масштабам супермаркета писюку работы секунд на несколько в сутки :)
При этом ничто не будет мешать в процессе регистрировать новые наборы.
Супермаркет - такая штука, где перерасход невозможен (покупатель с физически существующим товаром покидает магазин), что очень сильно облегчает задачу ;)
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018890
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaRв лобовую, select for update на кассах, и система будет вести себя так же ка и блокировочник.
То есть мы выбрали набор данных через select for update по некоему условию и мне будет гарантироваться, что другие сессии не смогут вставить новые записи по этому условию, пока я не отпущу транзакцию ?
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018926
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSТо есть мы выбрали набор данных через select for update по некоему условию и мне будет гарантироваться, что другие сессии не смогут вставить новые записи по этому условию, пока я не отпущу транзакцию ?
При чем тут вставить? Я может неправильно понял условие.
Как я понял, узкое место при update в таблице остатков по товарам???
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018950
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaR ASCRUSТо есть мы выбрали набор данных через select for update по некоему условию и мне будет гарантироваться, что другие сессии не смогут вставить новые записи по этому условию, пока я не отпущу транзакцию ?
При чем тут вставить? Я может неправильно понял условие.
Как я понял, узкое место при update в таблице остатков по товарам???
Ну остатки по идее то считать по товарам надо как бы с других таблиц. Значит до апдейта остатка нужно еще и гарантировать, что в этот момент никто не приведет эти таблицы к состоянию, где их данные не будут соответствовать записанному значению остатка, то есть в том числе и не вставятся новые.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34018978
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaR onstat-
Систематезируем условия абстрактной задачи.
Есть наборы товаров с количеством в таблице, они уже закомичены.
Нужно проводить по остаткам и по кассе эти наборы за одну транзакцию каждый, в паралельных сессиях, при том, что один одни товар
встречается в 90% наборов.
Такая постановка Вас устроит?

в лобовую, select for update на кассах, и система будет вести себя так же ка и блокировочник.


Нет не будет, читайте мое сообщение выше про установку SCN
в слотах транзакций и поведении open в курсоре на update.

Это плата за консистенность "на начало", которую мы обсуждали.
Зато они класно формируют репорты.


Блокировочники не пытаются создать консистентный набор на начало
и отадют первый fetch, при возможности добраться к первой же записи из набора, при этом остальных может еще не быть даже в кеше буферов
а обработка записей набора уже идет, и поиск остальных а также контроль уже установленных другими сессиями блокировок может
производится в фоновом режиме.
То есть если какаято конкрентаня запись сейчас заблокирована,
на следующий фетч она не пойдет а пойдет свободная, а через 5 фетчей ее уже закомитят.
Это поведение может элементарно убить order by, но это уже детали реализации приложения и использования возможностей СУБД.


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

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

Вот поэтому-то и твердят все кому не лень, что хранимые (актуальные)
остатки - зло. Если хранить остатки, скажем, месячной давности, то такая
гарантия создается административно - запретом работать задним числом (и
подкрепляется соответствующими триггерами).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34019017
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
ASCRUS
Ну остатки по идее то считать по товарам надо как бы с других таблиц.
Значит до апдейта остатка нужно еще и гарантировать, что в этот момент
никто не приведет эти таблицы к состоянию, где их данные не будут
соответствовать записанному значению остатка

Вот поэтому-то и твердят все кому не лень, что хранимые (актуальные)
остатки - зло. Если хранить остатки, скажем, месячной давности, то такая
гарантия создается административно - запретом работать задним числом (и
подкрепляется соответствующими триггерами).
Posted via ActualForum NNTP Server 1.3

Ну вот, отошли от субд и пришли к административным ограничениям.
Не коструктивно как то получается.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34019058
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer ChAСудя по комментарию, Вы не совсем поняли смысл той дискуссии.
Почему-то я уверен, что если я попрошу Вас логически строго обосновать свое утверждение, мы придем к выводу, что Вы брякнули абы что.Вы, простите, о чем ? Мое комментарий относился только к утверждению Yo.!!, когда он в качестве доказательства оного обратился явно не ту дискуссию. Или Вы там обнаружили доказательство его правоты ? Тогда, будьте любезны, ткните носом... softwarerТо есть, если я правильно понял, Вы не производили экспериментов, не задавали вопросов и другими способами не выясняли, какой же все-таки результат запроса вернет Вам сервер.Совершенно верно, если внимательно посмотреть на ранее упомянутую дискуссию, то Merle, в принципе, уже провел весьма убедительный эксперимент, хотя мое предположение касалось более сложной ситуации, причем оно было не первым. Мне его аргументы показались достаточно убедительными, чтобы перепроверять их.
softwarerТогда вопрос: каким образом Вы добиваетесь того, что приложение ведет себя предсказуемым образом? Пихаете в каждый нетривиальный запрос хинт holdlock? Используете только простые запросы? Что-то другое? Оставляете на самотек, "авось не случится", наконец?По разному, в некоторых случаях вместо хинта Holdlock проще сразу поставить уровень изоляции RR, иногда фиксируется план запроса таким образом, чтобы повторного чтения "опасных" мест не происходило, иногда же, действительно, можно пренебречь, так как подобная несогласованность либо элиминируется на последующих шагах, либо не важна, что в моей практике не редкость, так как она не касается ни ядерных реакторов, ни космических аппаратов. softwarerНельзя ли ссылку?Запросто. Одна из них уже приводилась. Можно здесь глянуть.
* Аналогичность способа подразумевается как использование версионности, при котором не происходит чтения измененных данных, а не точное копия механизма.
...
Рейтинг: 0 / 0
Версионники и блокировочники
    #34019084
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВот поэтому-то и твердят все кому не лень, что хранимые (актуальные)
остатки - зло. Если хранить остатки, скажем, месячной давности, то такая
гарантия создается административно - запретом работать задним числом (и
подкрепляется соответствующими триггерами).
Posted via ActualForum NNTP Server 1.3
А где я сказал про хранение актуальных остатков ? У меня по жизни фиксированные хранятся, а актуальные получаются как сумма последних зафиксированных остатков плюс все по таблицам движения (без разницы чего). Но однако проблемы это не снимает - кто сказал, что на момент фиксации остатков даже на месяц назад в этот момент у меня никто в БД не будет добавлять записи месячной давности ? Да запросто - начиная от самих пользователей и заканчивая вливом данных репликацией или импортом с другой системы. И на момент фиксации этих остатков с одной стороны все пользователи должны продолжать счастливо работать, с другой стороны остатки должны быть зафиксированны правильными, то есть не нарушена согласованная целостность данных.
...
Рейтинг: 0 / 0
25 сообщений из 335, страница 6 из 14
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Версионники и блокировочники
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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