Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 5 6 7 8 9 10 [11] 12 13 14   вперед  Ctrl
 Re: Версионники и блокировочники  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
pavelvp
А у Oracle нет блокировки предикатов?

Нет. Наличие блокировки предикатов в точности и означает наличие "честного" serializable. Я не интересовался состоянием дел в последние годы, а по старым воспоминаниям, никто пока не придумал способа реализовать ее с приемлимой эффективностью.
4 окт 06, 10:55    [3218664]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Yo.!!
Guest
onstat-

Позвольне несогласиться.
Приведенный Андреем пример полностью противоречит
следующим строчкам стандарта:

тогда вам прийдется не согласится за одно с IBM, Microsoft, HP и прочими членами tpc council. ;) откройте любой их отчет они все пишут что оракловый serializable полностью удолетворяет стандарту 92. там буквально абзацем ниже дается дефениция всем уровням изолированости через феномены
The isolation level specifies the kind of phenomena that can occur during the execution of concurrent SQL-transactions.
4 окт 06, 11:41    [3219055]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
Yo.!!
onstat-

Позвольне несогласиться.
Приведенный Андреем пример полностью противоречит
следующим строчкам стандарта:

тогда вам прийдется не согласится за одно с IBM, Microsoft, HP и прочими членами tpc council. ;) откройте любой их отчет они все пишут что оракловый serializable полностью удолетворяет стандарту 92. там буквально абзацем ниже дается дефениция всем уровням изолированости через феномены
The isolation level specifies the kind of phenomena that can occur during the execution of concurrent SQL-transactions.


Я не вижу противоречий между приведенной Вами цитатой и
стандартом.
SQL92

The four isolation levels guarantee that each SQL-transaction will
be executed completely or not at all, and that no updates will be
lost. The isolation levels are different with respect to phenomena
P1, P2, and P3. Table 9, "SQL-transaction isolation levels and the
three phenomena" specifies the phenomena that are possible and not
possible for a given isolation level.


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

з.ы. В подтверждение Ваших слов, пожалуста, потрудитесь привести более точную цитату и ссылку.
Мне некогда искать tpc репорты, которым лично я не доверяю,
потому что в этих репортах ничего рекламы не вижу.
Что бы проверить их прадивость, нужно потратить миниум сумму с 5-ью нулями
для каждого репотра.
4 окт 06, 12:05    [3219310]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Yo.!!
Guest
onstat-

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

надеюсь за мои труды мне воздастся ;)
автор
Serializable Transactions:
Oracle supports serializable transaction isolation in full compliance with the SQL92 and
TPC-C requirements. This is implemented by extending multiple concurrency control
mechanisms long supported by Oracle.

Fujitsu: http://tpc.org/results/FDR/TPCC/fujitsu_primequest480_tpcc_fdr.pdf
HP: http://tpc.org/results/FDR/TPCC/tpcc.hp.rx6600.fdr.pdf
4 окт 06, 12:24    [3219440]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
Yo.!!

надеюсь за мои труды мне воздастся ;)


Спасибо, будет у нас в Днепропетровске, сообщите в личку.
Пива выпьем ;)
4 окт 06, 12:29    [3219475]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Yo.!!
Guest
нее ... уж лучше вы к нам (C)
4 окт 06, 12:34    [3219500]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
Yo.!!

Fujitsu: http://tpc.org/results/FDR/TPCC/fujitsu_primequest480_tpcc_fdr.pdf
HP: http://tpc.org/results/FDR/TPCC/tpcc.hp.rx6600.fdr.pdf


fujitsu_primequest480_tpcc_fdr.pdf

Serializable Transactions:
Oracle supports serializable transaction isolation in full compliance with the SQL92 and
TPC-C requirements. This is implemented by extending multiple concurrency control
mechanisms long supported by Oracle.
.......
Oracle implements SERIALIZABLE mode by extending the scope of read consistency
from individual query to the entire transaction itself.
ALL reads by serializable
transactions are therefore repeatable, as the transaction will access prior versions of data
changed (or deleted) by other transactions after the start of serializable transactions.
Thus, a serializable transaction sees a fixed snapshot of the database, established at the
beginning of the transaction.


Еще раз спасибо, за подтверждение.

Суть в выделенных словах и главное из них itself.
Как много смысла может поменять одно слово из 6 букв:(
4 окт 06, 13:05    [3219767]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
onstat-
fujitsu_primequest480_tpcc_fdr.pdf

Serializable Transactions:
Oracle supports serializable transaction isolation in full compliance with the SQL92 and
TPC-C requirements. This is implemented by extending multiple concurrency control
mechanisms long supported by Oracle.
.......
Oracle implements SERIALIZABLE mode by extending the scope of read consistency
from individual query to the entire transaction itself.
ALL reads by serializable
transactions are therefore repeatable, as the transaction will access prior versions of data
changed (or deleted) by other transactions after the start of serializable transactions.
Thus, a serializable transaction sees a fixed snapshot of the database, established at the
beginning of the transaction.

Суть в выделенных словах и главное из них itself.
Как много смысла может поменять одно слово из 6 букв:(

Простите, а что конкретно изменило слово "itself" применительно к процитированному тексту?
4 окт 06, 13:10    [3219808]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
andrey_anonymous
onstat-
fujitsu_primequest480_tpcc_fdr.pdf

Serializable Transactions:
Oracle supports serializable transaction isolation in full compliance with the SQL92 and
TPC-C requirements. This is implemented by extending multiple concurrency control
mechanisms long supported by Oracle.
.......
Oracle implements SERIALIZABLE mode by extending the scope of read consistency
from individual query to the entire transaction itself.
ALL reads by serializable
transactions are therefore repeatable, as the transaction will access prior versions of data
changed (or deleted) by other transactions after the start of serializable transactions.
Thus, a serializable transaction sees a fixed snapshot of the database, established at the
beginning of the transaction.

Суть в выделенных словах и главное из них itself.
Как много смысла может поменять одно слово из 6 букв:(

Простите, а что конкретно изменило слово "itself" применительно к процитированному тексту?


Постараюсь расставить точки над Ё :)

ИХМО 1. itself озанчает, что serializable
действителен только внутри транзакции, где конкуренции и так нет.

ИХМО 2. Если смотреть на стандарт, то это не full compliance

Нонсенс какойто, точки противоречат.
А первая еще и вносит неясность с понятием serializable из-за itself
усилинным словом entire .


зы Хорошая игра слов однако. Или у меня плохо с Английским?
4 окт 06, 13:34    [3220000]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
onstat-
Постараюсь расставить точки над Ё :)
ИХМО 1. itself озанчает, что serializable
действителен только внутри транзакции, где конкуренции и так нет.
Нет...
onstat-
зы Хорошая игра слов однако. Или у меня плохо с Английским?

Вот это может быть.
4 окт 06, 13:36    [3220014]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
onstat-
ИХМО 1. itself озанчает, что serializable
действителен только внутри транзакции

Это слово относится к read consistency, а не к serializable, и в сумме получается примерно так: "распространением согласованности чтения на уровень транзакции в целом, не более и не менее" [entire и itself задают две границы, снизу и сверху].

onstat-
ИХМО 2. Если смотреть на стандарт, то это не full compliance

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

Я бы сосредоточился на другом аспекте: на том, что из формального соответствия уровней изоляции совершенно не следует возможность одинаково писать для разных серверов.
4 окт 06, 13:48    [3220095]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
softwarer

onstat-
ИХМО 1. itself озанчает, что serializable
действителен только внутри транзакции

Это слово относится к read consistency, а не к serializable, и в сумме получается примерно так: "распространением согласованности чтения на уровень транзакции в целом, не более и не менее" [entire и itself задают две границы, снизу и сверху].



ИХМО itself относится к транзакции в целом, которая работает в serializable mode.

Oracle обеспечивает serializable mode как расширение области видимости
конкретного консистентного запроса ко всей транзакции в целом.

Не знаю что они хотели этим сказать.

и далее


Thus, a serializable transaction sees a fixed snapshot of the database, established at the
beginning of the transaction.


serializable transaction видит фиксированный моментальный снимок(я специально перевел shapshot)базы данных устновленный на начало транзакции.

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

Теперь я не понимаю чем этот serializable отличается от RC.

softwarer

onstat-
ИХМО 2. Если смотреть на стандарт, то это не full compliance

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

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


Полностью поддерживаю.
4 окт 06, 15:09    [3220707]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
onstat-
ИХМО itself относится к транзакции в целом, которая работает в serializable mode.
Oracle обеспечивает serializable mode как расширение области видимости
конкретного консистентного запроса ко всей транзакции в целом.
Не знаю что они хотели этим сказать.

То, что в транзакции может содержаться более одного запроса. Соответственно, в serializable oracle обеспечивает согласованное чтение не только отдельно взятого statement, но всей транзакции целиком.
onstat-

Thus, a serializable transaction sees a fixed snapshot of the database, established at the beginning of the transaction.
То есть берем данные на начало транзакции, предикаты не блокируем
(потому, что снапшот), вносим изменения в базу данных на основании данных из снапшота, не учитывая закомиченых транзакций из других сессий после старта нашей serializable транзакции.
Теперь я не понимаю чем этот serializable отличается от RC.

:) Как чувствовал - не надо было этот пример сюда постить, теперь начались грязные инсинуации :)
Господа, отсутствие ограничений целостности и операция insert в приведенной иллюстрации - далеко не случайность, без должной подготовки обобщать не следует.
4 окт 06, 15:23    [3220809]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
onstat-
Oracle обеспечивает serializable mode как расширение области видимости конкретного консистентного запроса ко всей транзакции в целом.

Хм. Как Вам сказать.... если бы такой перевод выдал Промпт, я бы не удивился. Но от человека слышать это несколько странно. Правильно так [в сторону - да, я знаю, что можно перевести лучше, чем сделаю я]:

Oracle обеспечивает serializable mode, поднимая требование согласованности чтения с уровня отдельного запроса на уровень транзакции в целом. Все чтения в сериализованной транзакции являются повторяемыми; транзакция использует предыдущие версии тех данных, которые изменены или удалены транзакциями, стартовавшими после начала сериализуемой. Таким образом, сериализуемая транзакция видит моментальный снимок данных на момент начала транзакции.

onstat-
Теперь я не понимаю чем этот serializable отличается от RC.

Хм. От RC он отличается тем, что он не RC. Если Вы имели в виду "отличается от RR" - этого корпорация Фуджитсу (или кто там автор этой цитаты) здесь не написали. Отличие в поведении при модификации данных.
4 окт 06, 15:43    [3220989]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
andrey_anonymous
onstat-
ИХМО itself относится к транзакции в целом, которая работает в serializable mode.
Oracle обеспечивает serializable mode как расширение области видимости
конкретного консистентного запроса ко всей транзакции в целом.
Не знаю что они хотели этим сказать.

То, что в транзакции может содержаться более одного запроса. Соответственно, в serializable oracle обеспечивает согласованное чтение не только отдельно взятого statement, но всей транзакции целиком.


Понял, спасибо, Я под запросом понимал не только чтение.


andrey_anonymous

onstat-

Thus, a serializable transaction sees a fixed snapshot of the database, established at the beginning of the transaction.
То есть берем данные на начало транзакции, предикаты не блокируем
(потому, что снапшот), вносим изменения в базу данных на основании данных из снапшота, не учитывая закомиченых транзакций из других сессий после старта нашей serializable транзакции.
Теперь я не понимаю чем этот serializable отличается от RC.

:) Как чувствовал - не надо было этот пример сюда постить, теперь начались грязные инсинуации :)
Господа, отсутствие ограничений целостности и операция insert в приведенной иллюстрации - далеко не случайность, без должной подготовки обобщать не следует.


Никакого злого умысла я не предполагал.
Прошу прощения.

С уважением, onstat-
4 окт 06, 15:44    [3221011]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
onstat-
Понял, спасибо, Я под запросом понимал не только чтение.

В данном случае такое понимание вполне корректно. Операторы MERGE, UPDATE и DELETE также читают данные, и к ним применимо понятие read consistency.
4 окт 06, 16:23    [3221338]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
softwarer
В данном случае такое понимание вполне корректно. Операторы MERGE, UPDATE и DELETE также читают данные, и к ним применимо понятие read consistency.

Не совсем верно - они читают только current mode - т.е. текущее значение, которое и можно изменить. Consistent read - это snapshot на какой-то момент времени - его не меняют - это состояние в прошлом.
4 окт 06, 22:06    [3222691]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Anton Demidov
softwarer
В данном случае такое понимание вполне корректно. Операторы MERGE, UPDATE и DELETE также читают данные, и к ним применимо понятие read consistency.
Не совсем верно - они читают только current mode

Это утверждение не совсем верно.
4 окт 06, 22:19    [3222714]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
Anton Demidov
softwarer
В данном случае такое понимание вполне корректно. Операторы MERGE, UPDATE и DELETE также читают данные, и к ним применимо понятие read consistency.

Не совсем верно - они читают только current mode - т.е. текущее значение, которое и можно изменить. Consistent read - это snapshot на какой-то момент времени - его не меняют - это состояние в прошлом.


ИХМО.
Для update данные берутся из снапшота,
при попытке изменения проверятется слот транзакции, если в слоте содержится SCN транзакции которая закомичена после начала
текущей то сессия вылетает по исключению ORA-08177.

А если конкурирующая транзакция не закомичена, то и подавно,
правда может быть исключение ORA-00054.
6 окт 06, 10:50    [3229033]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
onstat-
при попытке изменения проверятется слот транзакции, если в слоте содержится SCN транзакции которая закомичена после начала
текущей то сессия вылетает по исключению ORA-08177.

Только в serializable.
В RC может либо рестартовать statement, либо взять "как есть" в зависимости от характера изменений, проведенных транзакцией-конкурентом.
onstat-

А если конкурирующая транзакция не закомичена, то и подавно,
правда может быть исключение ORA-00054.

Нет. update в принципе не способен генерировать ora-54, поэтому просто будет ждать освобождения блокировки.
6 окт 06, 12:59    [3229923]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
andrey_anonymous
onstat-
при попытке изменения проверятется слот транзакции, если в слоте содержится SCN транзакции которая закомичена после начала
текущей то сессия вылетает по исключению ORA-08177.

Только в serializable.
В RC может либо рестартовать statement, либо взять "как есть" в зависимости от характера изменений, проведенных транзакцией-конкурентом.
onstat-

А если конкурирующая транзакция не закомичена, то и подавно,
правда может быть исключение ORA-00054.

Нет. update в принципе не способен генерировать ora-54, поэтому просто будет ждать освобождения блокировки.



Давайте пока остановимся только на serializable. Что бы не путаться
что за чем и когда происходит.

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

ИХМО
В serializable он ждать не имеет права.
Либо должен брать информацию не из снапшота.

Как сервер ведет себя в действительности я не знаю.
6 окт 06, 13:47    [3230215]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
onstat-
Как сервер ведет себя в действительности я не знаю.

Ждет завершения конкурирующей транзакции.
Блокирует строку.
Анализирует характер изменений.
Если изменения несовместимы - откат statement.
6 окт 06, 13:49    [3230236]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
andrey_anonymous
onstat-
Как сервер ведет себя в действительности я не знаю.

Ждет завершения конкурирующей транзакции.
Блокирует строку.
Анализирует характер изменений.
Если изменения несовместимы - откат statement.


Где об этом можно почитать?
6 окт 06, 14:24    [3230477]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
onstat-
Где об этом можно почитать?

oracle concepts, раздел data concurrency and consistency не подходит?
Пишущие транзакции в оракеле успешно друг друга блокируют, с логической точки зрения тут нет никаких "версионных" особенностей.
6 окт 06, 14:27    [3230504]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Зл0й
Member

Откуда: Северная Калифорния
Сообщений: 686
softwarer
pavelvp
А у Oracle нет блокировки предикатов?

Нет. Наличие блокировки предикатов в точности и означает наличие "честного" serializable. Я не интересовался состоянием дел в последние годы, а по старым воспоминаниям, никто пока не придумал способа реализовать ее с приемлимой эффективностью.


И не придумают, т.к. это невозможно в принципе. С вопросом "почему" отсылаю к курсам "теория сложности" и "математическая логика". Ключевые слова - "NP полная задача" и "исчисление предикатов 1го порядка". Грубо говоря, эта задача решается только полным перебором :)

Вот поэтому "блокировки предикатов" в чистом виде нет ни в одном из серверов СУБД. Если интересно "как же это реализовано на практике" - почитайте Джима Грея, ключевое слово "intent locking". Рассказано там без подробностей (они - "секрет фирмы") но общую идею понять можно. В общем блокируются НЕ ПРЕДИКАТЫ а таблицы - страницы - группы записей. Имеется целая теория на тему как же это должно делаться "чтоб фантомов не было". Тот факт что если блокировать "по уму" то фантомов не будет доказывается математически.
6 окт 06, 20:15    [3232242]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 5 6 7 8 9 10 [11] 12 13 14   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить