Oracle Serializable IL
От: Аноним  
Дата: 26.02.04 12:43
Оценка: -1
M>И не только по словам Тома Кайта, но и по словам Оракловской документации, и не только при Serializable IL (оракловском, который слабее чем ANSI), но и при Read Committed.

оракл в точности соответствует ANSI (там нет требований упорядовачивать по коммиту), иначе бы их не пустили на tpc.org

Gt_

26.02.04 17:35: Ветка выделена из темы Уровень изолированости транзакций
Автор:
Дата: 26.02.04
— M
Re[5]: Oracle Serializable IL
От: Merle Австрия http://rsdn.ru
Дата: 26.02.04 13:06
Оценка: 14 (2)
Здравствуйте, Аноним, Вы писали:

А>оракл в точности соответствует ANSI (там нет требований упорядовачивать по коммиту), иначе бы их не пустили на tpc.org

На что спорим?
ANSI 92 можно толковать двояко.. при желании, хотя там четко сказано:

The execution of concurrent SQL-transactions at isolation level
SERIALIZABLE is guaranteed to be serializable. A serializable exe-
cution is defined to be an execution of the operations of concur-
rently executing SQL-transactions that produces the same effect as
some serial execution of those same SQL-transactions
.

(Выделенный фрагмент — есть "критерий упорядоченности", а Oracle Serializable IL ему не соответствует)
Однако парой абзацев ниже дается другое определение, через феномены, которому Оракловский Serializable удовлетворяет. Это и позволило Ораклу формально назвать свой уровень изоляции Serializable, хотя на самом деле это не так.
В ANSI 99 всякая неоднозначность устранена — Serializable IL должен удовлетворять критерию упорядоченности, а этого в Оракле нет.

P. S.
Для тестов tcp достаточно ANSI Repeatable Read, почитай внимательно спецификацию.
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[6]: Oracle Serializable IL
От: Аноним  
Дата: 26.02.04 14:08
Оценка:
А>>оракл в точности соответствует ANSI (там нет требований упорядовачивать по коммиту), иначе бы их не пустили на tpc.org
M>На что спорим?
на статью по эскалации давай в это оригинальное решение добавим мелкими буквами не оригинальное оракловое

http://www.tpc.org/results/FDR/TPCC/hp_tpcc_rx5670_fdr.pdf

6.6.4 Serializable Transactions
Oracle supports serializable transaction isolation in full compliance with the SQL92 and TPC-C requirements. This is
implemented by extending the multiversity concurrency control mechanism long supported by Oracle.
Oracle queries take no read locks and see only data committed as of the beginning of the query's execution. This
means that readers and writers coexist without blocking one another, providing a high degree of concurrency and
consistency. While this mode does prevent reading dirty data, Oracle's default isolation level also permits a transaction
that issues a query twice to see non-repeatable reads and phantoms, as defined in SQL92 and TPC-C.
Beginning with Oracle7 release 7.3, a transaction may request a high degree of isolation with the command SET
TRANSACTION ISOLATION LEVEL SERIALIZABLE, as defined in SQL92.

стр. 36
©Copyright Hewlett-Packard Company 2003

Gt_
Re[7]: Oracle Serializable IL
От: Merle Австрия http://rsdn.ru
Дата: 26.02.04 14:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>оракл в точности соответствует ANSI (там нет требований упорядовачивать по коммиту), иначе бы их не пустили на tpc.org

M>>На что спорим?
А>на статью по эскалации
Ну тогда уже давно проспорил...
Поскольку в стандарте есть требование упорядоченности.

А>давай в это оригинальное решение добавим мелкими буквами не оригинальное оракловое

Это как раз оракловское решение "оригинальное". Еще раз перечитай внимательно, что я написал.
1. Требованиям ANSI SQL 99 оракловский "Serializable" не удовлетворяет.
2. Требованиям SQL 92 оракловский "Serializable" удовлетворяет лишь формально, благодаря расплывчатости формулировок в старой версии стандарта.
3. Посколько в требованиях tpc упомянута лишь необходимость RR, то ясен хвост, что оракловского "serializable" здесь хватает с избытком.
4. Оракл может сколько угодно играть терминами, как впрочем и любой другой производитель СУБД, но существует еще и формальная теория и стандарт. И если стандарт не дает четкого определения оракловского "Serializable" (зато дает определение Serializable, которому Оракл не удовлетворяет), то в формальной теории, то, что оракл называет "serializable" — называется Snapshot.

Собственно все вышесказанное вполне подтверждается приведенной тобой цитатой.

Но это все борьба за точность формулировок и не более того.
Главная же засада заключается в том, что если я в любой другой СУБД укажу SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, то я на 100% могу быть уверен, что проблем не будет. В то время как в Оракле я на это рассчитывать не могу.
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[8]: Уровень изолированости транзакций
От: Аноним  
Дата: 26.02.04 14:58
Оценка:
не понял, вы уважаемый не согласны с (C) HP, IBM, Fujitsu и всем TPC council ?

при всем уважении но "проблема" с прочтением стандарта похоже пока только у вас — может именно в этом дело ? поскольку спорить на тему лингвистики с вами думаю бесполезно, предлагаю огласить список (ссылки) тех кто считает, что оракловый serializeble не соответствут стандарту (может MS) ? может потом в суд подадим на оракл что так нагло лжет в документации !


Главная же засада заключается в том, что если я в любой другой СУБД укажу SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, то я на 100% могу быть уверен, что проблем не будет. В то время как в Оракле я на это рассчитывать не могу.

ну это Just arms curvature radius

Gt_
Re[9]: Уровень изолированости транзакций
От: Merle Австрия http://rsdn.ru
Дата: 26.02.04 15:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>не понял, вы уважаемый не согласны с (C) HP, IBM, Fujitsu и всем TPC council ?

Я не понимаю, ты "дурачка включаешь" или просто не внимательно читаешь?
В требованиях TPC council про Serializable ни слова, там требуется лишь RR.
Так что у меня с TPC никаких разногласий.

А>при всем уважении но "проблема" с прочтением стандарта похоже пока только у вас — может именно в этом дело ?

У меня с прочтением стандарта никаких проблем, ну открой SQL 99, а за одно и SQL 92 и убедись, если мне не веришь.
Проблемы с прочтением у тебя, если ты считаешь, что оракловский "Serializable" соответствует стандарту.

А> поскольку спорить на тему лингвистики с вами думаю бесполезно, предлагаю огласить список (ссылки) тех кто считает, что оракловый serializeble не соответствут стандарту (может MS) ?

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

А> может потом в суд подадим на оракл что так нагло лжет в документации !

Вдокументации Оракл английским по белому пишет, что его "Serializable" упорядочености не гарантирует, так что тут тоже все в порядке..

А>ну это Just arms curvature radius

За отмазку не канает.
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[10]: Уровень изолированости транзакций
От: Аноним  
Дата: 26.02.04 15:46
Оценка:
сори не заметил 99, ОК значит с 92 у нас проблем нет, проблемы типа появились в 99 где уточнили формулировку, я правильно понял ?

уточненая формулировка:
The execution of concurrent SQL-transactions at isolation level
SERIALIZABLE is guaranteed to be serializable. A serializable exe-
cution is defined to be an execution of the operations of concur-
rently executing SQL-transactions that produces the same effect as
some serial execution of those same SQL-transactions.

А>> может потом в суд подадим на оракл что так нагло лжет в документации !

M>Вдокументации Оракл английским по белому пишет, что его "Serializable" упорядочености не гарантирует, так что тут тоже все в порядке..

вот то у нас в документации:
Serializable isolation permits concurrent transactions to make only those database changes they could have made if the transactions had been scheduled to run one after another. Specifically, Oracle permits a serializable transaction to modify a data row only if it can determine that prior changes to the row were made by transactions that had committed when the serializable transaction began


ОК займемся лингвистическим анализом — спор я так понимаю в из-за этих 2-х фраз:
"the same effect as some serial execution" (C) SQL99
"the transactions had been scheduled to run one after another" (C) Oracle

ну ... конечно может это просто мой англицкий не ахти какой (дурачком прикидываемся ) но я вижу очень схожее толкавание sql99 и Oracle.

смотрим lingvo:
Serial
а) последовательный
serial search — последовательный поиск
(C) Lingvo

Your comments и плиз скрипты в студию где бы оракле был бы не "сейм эфект оф сам сериал экзекушон"


Gt_
Re[11]: Уровень изолированости транзакций
От: Аноним  
Дата: 26.02.04 15:51
Оценка:
ЗЫ. а можно еще цитату где бы что-либо говорилость об "упорядочивании" у меня 99 стандарт дома, а в вашей фразе речь только serial execution (последовательном)
Re[11]: Уровень изолированости транзакций
От: Merle Австрия http://rsdn.ru
Дата: 26.02.04 21:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>сори не заметил 99, ОК значит с 92 у нас проблем нет, проблемы типа появились в 99 где уточнили формулировку, я правильно понял ?

Ну, почти правильно... В 92 можно было подкопаться и назвать оракловский Snapshot "Serializable", а в 99 эту лазейку прикрыли.

The exclusion of these phenomena for SQL-transactions executing at isolation level SERIALIZABLE is a consequence of the requirement that such transactions be serializable.

(c) ANSI SQL 99.

Если мне не изменяет память, то в доках Oracle всегда честно писали, что их SERIALIZABLE отвечает одному из определений ANSI (гарантирует остутствие всех феноменов, описанных в стандарте), но не отвечает альтернативному определению в том же ANSI (здесь речь идет о 92), а также тому самому главному, принятому в формальной теории. Поэтому в их документации всегда есть куча лирических отступлений и куча рекомендаций о том, когда и как нужно применять трюки с искусственными конфликами записи, SELECT FOR UPDATE и ручными блокировками. Не все их правда внимательно читают...
Мне откровенно говоря уже лень лезть и искать нужные абзацы.
Кстати, до версии 7.3.<что-то-там-еще> в Оракле был параметр serializable=true, который устанавливал read lock на всю таблицу во время чтения, и тем самым удовлетворял всем, даже самым строгим правилам стандарта.

А>вот то у нас в документации:

А>Serializable isolation permits concurrent transactions to make only those database changes they could have made if the transactions had been scheduled to run one after another. Specifically, Oracle permits a serializable transaction to modify a data row only if it can determine that prior changes to the row were made by transactions that had committed when the serializable transaction began


А>ОК займемся лингвистическим анализом — спор я так понимаю в из-за этих 2-х фраз:

А>"the same effect as some serial execution" (C) SQL99
А>"the transactions had been scheduled to run one after another" (C) Oracle
А>ну ... конечно может это просто мой англицкий не ахти какой (дурачком прикидываемся ) но я вижу очень схожее толкавание sql99 и Oracle.
С английским все-таки бедулька...
ANSI SQL: "the same effect as some serial execution"
В то время как Оракл: "to modify a data row only if it can determine that prior changes to the row were made by transactions that had committed when the serializable transaction began"
И вот в этом две большие разницы.

А>Your comments и плиз скрипты в студию где бы оракле был бы не "сейм эфект оф сам сериал экзекушон"

Ну, comments уже были, а пример извольте:

-- preparation:
-- для всех транзакций устанавливаем isolation level в serializable.
create table a(i int)

-- transaction 1:
delete a where i in (1,2) 
insert into a (i) values (1); 

-- transaction 2:
delete a where i in (1,2) 
insert into a (i) values (2); 
commit; 

-- transaction 1:
commit;


В оракле, после таких упражнений, в таблице "a" окажется две записи, что ни коим образом не удовлетворяет определению "the same effect as some serial execution". Ни при каком последовательном исполнении этих транзакций двух записей, удовлетворяющих условию i in (1, 2) быть не должно.
В то время, как под оракловское определение данный сценарий вполне себе подходит.
Enjoy. Могу еще парочку подкинуть, кстати, и у Тома Кайта есть похожий. И даже в его книжке совершенно определенно сказано, что от Оракла ждать строго последовательного выполнения транзакций не следует, цитата нужна?
... [RSDN@Home 1.1.0 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[12]: Уровень изолированости транзакций
От: Merle Австрия http://rsdn.ru
Дата: 26.02.04 21:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>ЗЫ. а можно еще цитату где бы что-либо говорилость об "упорядочивании" у меня 99 стандарт дома, а в вашей фразе речь только serial execution (последовательном)

Не велика разница... Просто существующий в формальной теории термин "serializable criterion" (который как раз и фомулируется примерно теми же словами, что описаны в стандарте), на русский принято переводить как "критерий упорядоченности". Так что в данном случае оба этих термина эквивалентны.
Кстати, для общего развития, чтобы понять чем отличается Оракловский "Serializable", от того, который обеспечивает serial execution, да и вообще, для понятия того, что есть на самом деле уровни изоляции, очень рекомендую почитать Беренсона: A Critique of ANSI SQL Isolation Levels
... [RSDN@Home 1.1.0 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[12]: Уровень изолированости транзакций
От: Аноним  
Дата: 27.02.04 12:49
Оценка:
А>>сори не заметил 99, ОК значит с 92 у нас проблем нет, проблемы типа появились в 99 где уточнили формулировку, я правильно понял ?
M>Ну, почти правильно... В 92 можно было подкопаться и назвать оракловский Snapshot "Serializable", а в 99 эту лазейку прикрыли.
M>

M>The exclusion of these phenomena for SQL-transactions executing at isolation level SERIALIZABLE is a consequence of the requirement that such transactions be serializable.

M>(c) ANSI SQL 99.

OK убедил, в 99 стандарт добавили, т.е. оракл полностью соответствует ANSI стандарту 92. (C) TPC

Gt_
Re[13]: Уровень изолированости транзакций
От: Merle Австрия http://rsdn.ru
Дата: 27.02.04 15:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>т.е. оракл полностью соответствует ANSI стандарту 92. (C) TPC


Не верно...
1. Полностью вообще ни один сервер не соответствует, ни 92, ни, тем более 99. Почитай Тома Кайта, там очень хорошо расписано почему.
2. TPC тут не при чем. Еще раз напоминаю, что TPC требует уровень изоляции Repeatable Read, и Оракловский "Serializable" этим требованиям более чем удовлетворяет. То есть Оракловский "Serializable" удовлетворяет требованиям TPC, но не удовлетворяет требованиям упорядочености стандарта.
Я вообще не понимаю, зачем ты TPC сюда приплел...
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[14]: Уровень изолированости транзакций
От: Аноним  
Дата: 27.02.04 15:40
Оценка:
M>1. Полностью вообще ни один сервер не соответствует, ни 92, ни, тем более 99. Почитай Тома Кайта, там очень хорошо расписано почему.
M>2. TPC тут не при чем. Еще раз напоминаю, что TPC требует уровень изоляции Repeatable Read, и Оракловский "Serializable" этим требованиям более чем удовлетворяет. То есть Оракловский "Serializable" удовлетворяет требованиям TPC, но не удовлетворяет требованиям упорядочености стандарта.
M>Я вообще не понимаю, зачем ты TPC сюда приплел...

чтоб не перечислять компании IBM, HP, Fujitsu, SUN и кто там еще оракл гоняет на TPC. Все они считают что оракловый Serializable полностью соответствует стандарту ANSI SQl92

Gt_
Re[8]: Oracle Serializable IL
От: Arioch  
Дата: 27.02.04 18:09
Оценка:
Hello, Merle!

M> существует еще и формальная теория и стандарт.


Осторожнее ! На слэшдоте, в обсуждении Firebird 1.5, особо упертые товарищи
тебя бы не пожалели, ибо считается что SQL и RDBMS одновременно быть не
может.

или SQL где записи могут повторяться, или теория множеств, где не может.
--
[tip] Fix for Outlook Express quoting: http://Arioch.nm.ru/FL/Fidolook_SL.png
E-mail is faked because of spam. the_Arioch@NM.falseDomain.ru
Posted via RSDN NNTP Server 1.8 beta
Re[15]: Уровень изолированости транзакций
От: Merle Австрия http://rsdn.ru
Дата: 27.02.04 19:42
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>чтоб не перечислять компании IBM, HP, Fujitsu, SUN и кто там еще оракл гоняет на TPC. Все они считают что оракловый Serializable полностью соответствует стандарту ANSI SQl92

С тем, что Оракл "Serializable" формально соответствует SQL 92 я и не спорил, но и TPC тут вообще не причем, так как соответствие стандарту TPC не проверяет.
Все эти многоуважаемые фирмы могут утверждают лишь, что определенная СУБД удовлетворяет их требованиям, ссылаясь при этом на стандарт только в качестве критерия оценки.
И в их требования упорядоченность не входит, поэтому TPC тут вообще мимо кассы.
... [RSDN@Home 1.1.3 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[9]: Oracle Serializable IL
От: Merle Австрия http://rsdn.ru
Дата: 27.02.04 19:42
Оценка:
Здравствуйте, Arioch, Вы писали:

A> Осторожнее ! На слэшдоте, в обсуждении Firebird 1.5, особо упертые товарищи

A>тебя бы не пожалели, ибо считается что SQL и RDBMS одновременно быть не
A>может.
С какого перепугу? И что здесь имеется ввиду под SQL? Я-то грешным делом думал, что это язык запросов..

A>или SQL где записи могут повторяться, или теория множеств, где не может.

Бррр.. И что имеется ввиду под теорией множеств?
Есть формальная реляционная теория, которая напрямую повторяемость кортежей не запрещает, утверждается лишь, что в этом случае невозможно будет их отлчить..

Так что товарищи могут упираться сколько угодно...
... [RSDN@Home 1.1.3 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[16]: Уровень изолированости транзакций
От: Аноним  
Дата: 27.02.04 20:26
Оценка:
А>>чтоб не перечислять компании IBM, HP, Fujitsu, SUN и кто там еще оракл гоняет на TPC. Все они считают что оракловый Serializable полностью соответствует стандарту ANSI SQl92
M>С тем, что Оракл "Serializable" формально соответствует SQL 92 я и не спорил, но и TPC тут вообще не причем, так как соответствие стандарту TPC не проверяет.
M>Все эти многоуважаемые фирмы могут утверждают лишь, что определенная СУБД удовлетворяет их требованиям, ссылаясь при этом на стандарт только в качестве критерия оценки.
M>И в их требования упорядоченность не входит, поэтому TPC тут вообще мимо кассы.

вот млин слово... черт все забываю кто тут модератор
я наивный думал что требование предьявляет стандарт, ну да ладно ... пусть оракл кого там удолетворяет. я вот единственно не понимаю, что пытаешься доказать ? вроде разобрались — в стандарт добавили, каюсь не знал. оракл на стандарт положил еще при рождении (ну нельзя ораклоида заставить писать left outer join), поэтому не отслеживаю, чо там требует tpc я не оспариваю, я просто выдрал фразу о стандарте ANSI — все кто входят в tpc council утверждают что оракловый serializible соответствует стандарту.

Gt_
Re[17]: Уровень изолированости транзакций
От: Merle Австрия http://rsdn.ru
Дата: 27.02.04 23:16
Оценка: +1
Здравствуйте, <Аноним>, Вы писали:

А> я вот единственно не понимаю, что пытаешься доказать ?

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

А>вроде разобрались — в стандарт добавили, каюсь не знал.

Ну, справедливости ради, надо заметить, что ты еще и утверждал, что Оракл гарантирует "the same effect as some serial execution", при его "Serializable"...

А> оракл на стандарт положил еще при рождении

Если бы! Если бы они положили на стандарт, и назвали бы этот уровень изоляции по-честному — "Snapshot", так и претензий бы вообще никаких не было. Но они решили воспользоваться лазейкой в стандарте и назвали его "Serializable", чем сбили и продолжают сбивать с толку кучу разработчиков, которые ожидают от оракла настоящего serializable (хотя могли бы и документацию почитать, но это уже другая история)
Наоборот, Оракл впереди всех кричит, что "стандарт форева".

А>(ну нельзя ораклоида заставить писать left outer join)

Еще как можно, и пишут, как миленькие. От вредных привычек надо избавляться.
... [RSDN@Home 1.1.3 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[10]: Oracle Serializable IL
От: Sinclair Россия http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 28.02.04 13:26
Оценка: +1
Здравствуйте, Merle, Вы писали:
A>>или SQL где записи могут повторяться, или теория множеств, где не может.
M>Бррр.. И что имеется ввиду под теорией множеств?
M>Есть формальная реляционная теория, которая напрямую повторяемость кортежей не запрещает, утверждается лишь, что в этом случае невозможно будет их отлчить..
M>Так что товарищи могут упираться сколько угодно...
Более точно, реляционная алгебра оперирует мультимножествами. С точки зрения теории удобнее было бы работать с множествами, т.к. действительно различия между кортежами нет. Но в таком случае реализация операторов РА была бы сопряжена с дополнительными расходами, которые не всегда оправданы. Поэтому в нее ввели специальный оператор, который преобразует мультимножество во множество.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
http://rsdn.org/File/5743/rsdnaddict.GIF
Re[17]: Уровень изолированости транзакций
От: Sinclair Россия http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 28.02.04 13:26
Оценка:
Здравствуйте, <Аноним>, Вы писали:
A>поэтому не отслеживаю, чо там требует tpc я не оспариваю, я просто выдрал фразу о стандарте ANSI — все кто входят в tpc council утверждают что оракловый serializible соответствует стандарту.
А можно в студию ссылку на то место, в котором эти входящие в TPC council это утверждают? По-моему, сие есть вредное заблуждение.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
http://rsdn.org/File/5743/rsdnaddict.GIF
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.