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

Откуда: SPb
Сообщений: 5488
protector

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

А с чем Вы не согласны?
27 сен 06, 16:04    [3191662]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

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

Команда или вся транзакция (в зависимости от уровня изолированности) должна видеть данные на момент своего старта. Это правило для транзакции.



пример:

1. т1 произвела изменение данных, но не закомитила.
2. т2. началась(select for update) начала проставлять SCN в слоты транзакций
но до блока изменненого транзакцией 1 еще не дошла.
3. Т1 закомитила данные.
4. т.2 дошла до блока где т1 закомитила уже после начала т2.

Вопрос: как должан поступить транзакция t2?
1. Возьмет данные из undo.
2. Возьмет закомиченные данные.


Можете привести ссылку на офицальный документ предписывающий
соблюдать это правило?
27 сен 06, 16:21    [3191801]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17472

>Вопрос: как должан поступить транзакция t2?
Чудак человек.. прочитай про уровни изолированности..


Posted via ActualForum NNTP Server 1.3

27 сен 06, 16:45    [3192000]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

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

>Вопрос: как должан поступить транзакция t2?
Чудак человек.. прочитай про уровни изолированности..


Posted via ActualForum NNTP Server 1.3


Я знаю про уровни изоляции.
Я и спросил про документ который даст
понимание этого правила для разных уровней изоляции.
27 сен 06, 16:54    [3192060]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
AI
Member

Откуда: Москва
Сообщений: 2817
onstat-
ScareCrow

>Вопрос: как должан поступить транзакция t2?
Чудак человек.. прочитай про уровни изолированности..


Posted via ActualForum NNTP Server 1.3


Я знаю про уровни изоляции.
Я и спросил про документ который даст
понимание этого правила для разных уровней изоляции.


http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_sqlproc.htm#sthref271
27 сен 06, 18:25    [3192805]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Dimitry Sibiryakov
Охотно поверю в это если Вы скажете сколько таких (разных) консистентных наборов он в состоянии вернуть одновременно. Т.е. есть таблица в миллион строк которую проапдейтили в 128 подключениях, но транзакции не закоммитили. Потом каждое из подключений выполняет селект в своей транзакции. Что увидит каждое из подключений?

В Read Commited каждое из подключений увидит свои и только свои изменения.
Масштабы не те, чтобы oracle смутился ;)
Существует определенный предел "старости" snapshot, который диагностируется знаменитой ORA-1555: snapshot too old.
Но начиная с девятого сервера я его еще ни разу не встречал ;)
27 сен 06, 18:29    [3192833]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
hvlad
От того, что вместо слова page ораклисты употребляют слово block, ничего не меняется. СУБД по-прежнему общается с файлами данных блоками\страницами и по-прежнему нуждается в механизме синхронизации доступа к страницам из разных потоков. И от версионной\блокировочной архитектуры СУБД этот факт никак не зависит.
...
Так шта... не надо путать понятия, ни конкретно, ни абстрактно :)

Боюсь, прочтя это я лишь укрепился в ранее высказанном мнении.
Не все параллели имеют место быть параллельными ;)
27 сен 06, 18:35    [3192871]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32912

Привет, andrey_anonymous!
Ты пишешь:

andrey_anonymous
aa> В Read Commited каждое из подключений увидит свои и только свои изменения.

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

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

27 сен 06, 18:46    [3192939]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Yo.!!
Guest
andrey_anonymous

В Read Commited каждое из подключений увидит свои и только свои изменения.
Масштабы не те, чтобы oracle смутился ;)

это оракловый Read Commited, а у блокировочника он будет видеть чужие изменения, читать заблокированые, зато полностью в соответствии со стандартом :)
27 сен 06, 18:46    [3192940]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Мимопроходящий
andrey_anonymous
aa> В Read Commited каждое из подключений увидит свои и только свои изменения.

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

Вы бы это, проходили бы уже...
Сессия1:
SQL> select * from ane_t;

        ID V
---------- ------------
         1 initial
         2 initial
         3 initial
         4 initial
         5 initial
         6 initial
         7 initial
         8 initial
         9 initial

9 rows selected

SQL> update ane_t set v='sess №1 upd' where id <5;

4 rows updated

SQL> insert into ane_t values(10,'sess #1 ins');

1 row inserted

SQL> delete ane_t where id=5;

1 row deleted

SQL> select * from ane_t;

        ID V
---------- ------------
         1 sess №1 upd
         2 sess №1 upd
         3 sess №1 upd
         4 sess №1 upd
         6 initial
         7 initial
         8 initial
         9 initial
        10 sess #1 ins

9 rows selected

SQL> 
Параллельная сессия2:
SQL> select * from ane_t;

        ID V
---------- ------------
         1 initial
         2 initial
         3 initial
         4 initial
         5 initial
         6 initial
         7 initial
         8 initial
         9 initial

9 rows selected

SQL> update ane_t set v='sess#2 upd' where id between 6 and 9;

4 rows updated

SQL> insert into ane_t values(11,'sess#2 ins');

1 row inserted

SQL> delete ane_t where id=6;

1 row deleted

SQL> select * from ane_t;

        ID V
---------- ------------
         1 initial
         2 initial
         3 initial
         4 initial
         5 initial
         7 sess#2 upd
         8 sess#2 upd
         9 sess#2 upd
        11 sess#2 ins

9 rows selected

SQL> 
27 сен 06, 18:56    [3192978]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Yo.!!
andrey_anonymous

В Read Commited каждое из подключений увидит свои и только свои изменения.
Масштабы не те, чтобы oracle смутился ;)

это оракловый Read Commited, а у блокировочника он будет видеть чужие изменения, читать заблокированые, зато полностью в соответствии со стандартом :)

:)
Вот только одного не понял - ежели read commited, то какого полинома он будет видеть чужие незафиксированные изменения?
Что-то тут не так :)
Ну или уважаемые господа во главе с мимопроходящим не до конца прочитали тесткейс Dimitry Sibiryakov
27 сен 06, 19:00    [3193006]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
ЛП
Guest
Yo.!!
andrey_anonymous

В Read Commited каждое из подключений увидит свои и только свои изменения.

это оракловый Read Commited

Блеск! Йо превзошел сам себя

Можно подумать, что "не-оракловый" ридкомитед позволит увидеть чужие незакомиченные изменения. Или оракловый "не-ридкомитед" это позволит? Зогадка, бля...

Йо, не кури больше такую траву.
27 сен 06, 19:06    [3193025]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Yo.!!
Guest
andrey_anonymous

:)
Вот только одного не понял - ежели read commited, то какого полинома он будет видеть чужие незафиксированные изменения?
Что-то тут не так :)


не, незафиксированые это было бы слишком даже для МС :) может увидет закомиченые но уже после старта нашей транзакции или прочитать старое значение записи котрую уже проапдейтили но еще не закомитили (из индекса)
27 сен 06, 19:06    [3193027]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32912

Привет, andrey_anonymous!
Ты пишешь:

andrey_anonymous
Мимопроходящий
andrey_anonymous

aa>> В Read Commited каждое из подключений увидит свои и только свои изменения.

песец - маленький хищный зверёк, покрытый мехом!
андруша_анонимус тоже идёт в библятеку.
составлять компанию Гаре.
и читать буквари.
aa> Вы бы это, проходили бы уже...
aa> Сессия1:
пацталом!
андруша, в библятеку, срочна!
читать буквари и стандарты.

таки прав ЛП, "неожиданное" знакомство с Oracle,
пагубно воздействует на неокрепший мозг...

то, что у Oracle по дефолту для Read Commited
гвоздиком прибит режим NO RECORD VERSION,
личный взбрык команды разработчиков Oracle.

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

вот только не надо свою пиписку считать МЕРИЛОМ, всего и вся.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

27 сен 06, 19:07    [3193033]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Yo.!!
не, незафиксированые это было бы слишком даже для МС :) может увидет закомиченые но уже после старта нашей транзакции
Ну так это и в oracle так, однако обсуждался вполне конкретный сценарий, фиксаций не предполагающий ;)
Yo.!!
или прочитать старое значение записи котрую уже проапдейтили но еще не закомитили (из индекса)

А вот это опять не понял... Какая разница откуда, ежели не зафиксировано?!
27 сен 06, 19:09    [3193043]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Мимопроходящий
и читать буквари.
aa> Вы бы это, проходили бы уже...
aa> Сессия1:[/quot]пацталом! [/quot]
Ну вот там и оставайтесь, если не в состоянии следить за дискуссией
Песцов разводите или найдите еще какое занятие себе по силам.
27 сен 06, 19:11    [3193052]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
ЛП
Guest
Мимопроходящий
таки прав ЛП, "неожиданное" знакомство с Oracle,
пагубно воздействует на неокрепший мозг...

Тссс... А то ща придет добрый модератор, и начнет удалять все ответы. Жалко ведь будет, ораклоиды (некоторые) зажигают нипадецки.
27 сен 06, 19:11    [3193053]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32912

Привет, andrey_anonymous!
Ты пишешь:

andrey_anonymous
aa> Ну вот там и оставайтесь, если не в состоянии следить за дискуссией
aa> Песцов разводите или найдите еще какое занятие себе по силам.

андруша, вот этот твой тезис есть полный песец.
будешь спорить?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

27 сен 06, 19:15    [3193059]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19949
Мимопроходящий
andrey_anonymous
aa> Ну вот там и оставайтесь, если не в состоянии следить за дискуссией
aa> Песцов разводите или найдите еще какое занятие себе по силам.

андруша, вот этот твой тезис есть полный песец.
будешь спорить?

Ну если Вы владеете каким-либо лексиконом кроме зоологического и сумеете пояснить, что конкретно Вам не понравилось - то я подумаю, стоит с Вами спорить или это бесполезно.
27 сен 06, 19:18    [3193074]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32912
Привет, andrey_anonymous!
Ты пишешь:

andrey_anonymous
aa> Ну если Вы владеете каким-либо лексиконом кроме зоологического и сумеете пояснить,
aa> что конкретно Вам не понравилось - то я подумаю, стоит с Вами спорить или это бесполезно.

андруша, вести дискуссию с человеком, который [удалено модератором как переход на личности]

Posted via ActualForum NNTP Server 1.3
27 сен 06, 19:23    [3193087]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
ChA
Member

Откуда: Москва
Сообщений: 11383
Yo.!!
может увидет закомиченые но уже после старта нашей транзакции
Это как-то противоречит описанию READ COMMITTED в ANSI ?
Yo.!!
или прочитать старое значение записи котрую уже проапдейтили но еще не закомитили (из индекса)
Ё... Ссылку, плиз.. Пока помедитируй над этим
Соединение 1. Запускаем
CREATE TABLE t (id int primary key, n int)
CREATE INDEX tn ON t(n)
GO
INSERT INTO t (id, n) SELECT 1, 1
BEGIN TRAN
UPDATE t SET n = 2
WAITFOR DELAY '00:00:10'
COMMIT
GO
DROP TABLE t
Переключаемся в Соединение 2 и выполняем
SELECT n FROM t
. С удивлением ждем окончания WAITFOR из Соединение 1.
*Обновление идет по primary key, чтение по индексу tn, можешь заглянуть в планы запроса.

P.S. Соврамши или опять ненависть к MS одолела ?
27 сен 06, 19:46    [3193137]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
Yo.!!
Guest
andrey_anonymous

А вот это опять не понял... Какая разница откуда, ежели не зафиксировано?!


ну разница в пару феноменов описаных в ANSI SQL типа phantom reads

2ChA
ненависть, только ненависть :) за слова то все равно отвечать прийдется
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=172639&pg=-1
27 сен 06, 20:16    [3193220]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
onstat-
Member

Откуда:
Сообщений: 6941
AI
onstat-
ScareCrow

>Вопрос: как должан поступить транзакция t2?
Чудак человек.. прочитай про уровни изолированности..


Posted via ActualForum NNTP Server 1.3


Я знаю про уровни изоляции.
Я и спросил про документ который даст
понимание этого правила для разных уровней изоляции.


http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_sqlproc.htm#sthref271


Ознакомившись с документом, что я нашел:
автор

A read-only transaction does not acquire any additional data locks to provide transaction-level read consistency. The multi-version consistency model used for statement-level read consistency is used to provide transaction-level read consistency; all queries return information with respect to the system change number (SCN) determined when the read-only transaction begins. Because no data locks are acquired, other transactions can query and update data being queried concurrently by a read-only transaction.


Но ситуации опсанной мною в примере не нашел.
Единственной зацепкой есть
автор

all queries return information with respect to the system change number (SCN)


В качестве оффтопика прошу прокоментировать зантоков Английского эту фразу.



А эта цитата противоречит вашему правилу
автор

The return set for a SELECT... FOR UPDATE may change while the query is running; for example, if columns selected by the query are updated or rows are deleted after the query started. When this happens, SELECT... FOR UPDATE acquires locks on the rows that did not change, gets a new read-consistent snapshot of the table using these locks, and then restarts the query to acquire the remaining locks.


Может я ее неправильно понял?

Я надеялся что вы мне дадите ссылку на стандарт, так как oracle
для меня не есть "священной коровой", я на нем просто деньги зарабатываю.
27 сен 06, 20:24    [3193249]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Yo.!!

https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=172639&pg=-1

В этом небезынтересном обсуждении меня заинтересовало вот это сообщение: https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=172639&pg=-1#1440243

ChA, не затруднит ли Вас сказать, действительно ли дела обстоят подобным образом; проверяли ли Вы это? Если я правильно понял, речь идет о том, что MSSQL на уровне RC не обеспечивает read consistency.
27 сен 06, 20:27    [3193255]     Ответить | Цитировать Сообщить модератору
 Re: Версионники и блокировочники  [new]
andrey_anonymous
Member

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

Но ситуации опсанной мною в примере не нашел.
Единственной зацепкой есть
автор

all queries return information with respect to the system change number (SCN)

В качестве оффтопика прошу прокоментировать зантоков Английского эту фразу.
А эта цитата противоречит вашему правилу
автор

The return set for a SELECT... FOR UPDATE may change while the query is running; for example, if columns selected by the query are updated or rows are deleted after the query started. When this happens, SELECT... FOR UPDATE acquires locks on the rows that did not change, gets a new read-consistent snapshot of the table using these locks, and then restarts the query to acquire the remaining locks.

Может я ее неправильно понял?

Ооооо... Тут мы попадаем в царство привидений.
Вы только что открыли для себя один из самых неоднозначных и малоизвестных широкой общественности механизмов oracle, который называется statement restart.
На стандарт кивать бесполезно, это проприетарное ноу-хау :)
Смысл в том, что ежели dml-запросу (включая select for udate) не удается заблокировать консистентный набор строк, то oracle... просто откатывает statement и начинает все сначала, смещая SCN на момент повторного старта ежели дело происходит в read commited или выкидывает "Can't serialize access" в serializable.
К readonly это все не относится, поскольку dml в такой транзакции запрещен, а читаемый набор набор просто реконструируется на заданный момент времени (раздел read consistency and concurrency в oracle concepts).
27 сен 06, 20:37    [3193292]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 14   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить