powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Применим прицип Oracle к ASE
25 сообщений из 70, страница 1 из 3
Применим прицип Oracle к ASE
    #35451978
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ораклисты постоянно говорят о принципе "Читатели не блокирубт писателей, а писатели не блокируют читателей" и что это возможность только в оракле(из-за версионности)! Применим ли этот принцип и к ASE? Помоему жанглируя уровнями изоляции можно добиться таковоже эффекта!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35452419
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В оракле этот принцип хорошо применим только к построению некоторых отчетов поверх OLTP систем. А для транзакций, где нужно согласованное чтение (например вычисление текущего остатка на счете перед вводом новой проводки) используется такое-же как и у всех блокировочников блокирующее чтение (SELECT FOR UPDATE). Т.е. наличие фичи неблокируещго чтения - это хорошо, но только для ограниченного числа задач, чудес не бывает. В ASA10 такая фича появилась (Snapshot isolation), но это не панацея.
все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35452758
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тоесть если я читаю данные с уровнем изоляции 0 или приписываю noholdlock, то получаю тотже эффект?
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35452963
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453035
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Denтоесть если я читаю данные с уровнем изоляции 0 или приписываю noholdlock, то получаю тотже эффект?

Я бы не был так категоричен, отвечая "да" - чтение с уровнем изоляции 0 - это грязное чтение. Т.е. если предположить что в один момент времени один коннект делает вставку/изменения в таблицу а другой читает из нее с isolation level 0, то читатель может увидеть не зафиксированные (без сommit) данные. В версионике такого не будет никогда. Читатель всегда будет видеть закомиченные данные.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453146
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор Читатель всегда будет видеть закомиченные данные.
а если данные не закоммичены?
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453161
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:
> Ораклисты постоянно говорят о принципе "Читатели не блокирубт писателей,
> а писатели не блокируют читателей" и что это возможность только в
> оракле(из-за версионности)!


Применим ли этот принцип и к ASE?

Нет, не применим. в ASE в общем случае
Читатели блокируют писателей

писатели блокируют читателей

>Помоему жанглируя уровнями изоляции можно добиться таковоже эффекта!

Жонглируя уровнями изоляции можно вообще всего чего угодно
добиться

в ORACLE это на всех уровнях, исключая 3-ий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453163
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:
> тоесть если я читаю данные с уровнем изоляции 0 или приписываю
> noholdlock, то получаю тотже эффект?

Нет, не получаете.

Кстати, уровень изоляции 0 и noholdlock -- это не одно и то же.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453165
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> Читатель всегда будет видеть закомиченные данные.
> а если данные не закоммичены?
Тогда ничего не увидит.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453166
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> тоесть если я читаю данные с уровнем изоляции 0

Немного неправильно написал.

Такого же эффекта не будет, как на оракле, понятно,
потому что там обеспечивается уровень 1 как минимум. А тут - 0.

Но на 0 -е в ASE
Читатели не блокируют писателей

писатели не блокируют читателей

Т.е. с учётом того, что считанные данные могут быть грязными,
да,эффект тот же.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453190
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все понял! И последний глупый вопрос: В ase можно определить грязная строка или нет, при уровне 0 ?
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453428
morissss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cherrex_DenВ ase можно определить грязная строка или нет, при уровне 0 ?

нет
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453612
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так и думал!


А что произойдет если откроиться транзакция, сделаеться инсерт и до коммита или ролбэка кто-то сделает селект? таблица с построчной схемой блокировки а селект с уровнем изоляции 1! Будет ли ждать селект пока транзакция с инсертом закроиться или селект вернет данные без этой вставляемой строки?

P.S речь идет об ASE.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453712
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_DenВсе понял! И последний глупый вопрос: В ase можно определить грязная строка или нет, при уровне 0 ?
Конечно же нет !
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35453729
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что произойдет если откроиться транзакция, сделаеться инсерт и до коммита или ролбэка кто-то сделает селект?

Зависит от схемы блокирования таблицы (DOL/APL)

таблица с построчной схемой блокировки а селект с уровнем изоляции 1! Будет ли ждать селект пока транзакция с инсертом закроиться или селект вернет данные без этой вставляемой строки?

Нет, не будет. Но это - особый случай, можно сказать - исключение. В ASE на DOL таблицах вставки проходят вообще незаметно для всех остальных транзакций. Как-то ASE их прячет от всех, магическим образом (на самом деле не знаю даже как, но это ОЧЕНЬ ЗДОРОВО !)
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35454927
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКак-то ASE их прячет от всех, магическим образом (на самом деле не знаю даже как, но это ОЧЕНЬ ЗДОРОВО !)

ASE не прячет их, а просто когда идет select (c уровнем изоляции не равным 3), ASE делает попытки захватить LOCKи shared page/row, и когда видит что локи на уровне страницы/строки захватить не удается , то просто пропускает эти залоченные строки.

Пример
Допустим в некой сессии идет вставки и 2 строки залочены эксклюзивной блокировкой
fid spid loid locktype table_id page row dbname class context
----------- ----------- ----------- -------- ----------- ----------- ----------- ------ ----- -------
0 25 50 Ex_intent 1632005814 0 0 ABC Non Cursor Lock
0 25 50 Ex_row 1632005814 55145 8 ABC Non Cursor Lock
0 25 50 Ex_row 1632005814 55145 9 ABC Non Cursor Lock

В другой сессии при select c isol level <>3 выборка, будет постранично/построчно проходится по таблице и обнаружит 2 залоченные строки. Далее она их просто пропустит и пойдет далее

lock_multiple shared intent db=4 obj=1632005814 splk=0x200c44e0 suff=0 LOCK_GRANTED
...
lock_logical shared row db=4 obj=1632005814 pg=55145 row=8 ctx=0x0 suff=0 pspid=24 LOCK_DIDNTQUEUE
lock_logical shared row db=4 obj=1632005814 pg=55145 row=9 ctx=0x0 suff=0 pspid=24 LOCK_DIDNTQUEUE
...
lm_internal_ctxchain_release
shared intent obj=1632005814 db=4 ctx=0x1 suff=0
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35455967
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:

Ну в общем, всё очень классно в ASE с этим !
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35456307
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_DenОраклисты постоянно говорят о принципе "Читатели не блокирубт писателей, а писатели не блокируют читателей" и что это возможность только в оракле(из-за версионности)! Применим ли этот принцип и к ASE? Помоему жанглируя уровнями изоляции можно добиться таковоже эффекта!
Конечно можно, только за счет других sessions/users под isol.level 3
Все будут ждать (locks, deadlocks), пока вы соизволите получить consistent (in time) result of select stmt (A только такой и будет "правильным" (на конец или начало selecta)!, иначе - mess (по времени) как сейчас с обычным level 1 и реализацией ANSI levels блокировками).

Реализация ANSI levelov с помощью блокировок - грубая ошибка разработчиков Sybase (и DB2(Gray "ранний")) я думаю, Microsoft (Gray "поздний") осознал это сделав snapshot isolation наконец-тo, Оracle делался "в стороне" от IBM, Sybase, universities,ANSI и обычый здравый смысл ( select result должe быть консисент по времени и его получение не должо мешать другим работать при этом) победил.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35456425
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Zhora:
Не понял, что вы имели ввиду своим вторым параграфом. Все уровни изоляции давно описаны, не понимаю, какие такие неразрешимые проблемы могут возникать. Выбирайте подходящий уровень изоляции и работайте в нем.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35456495
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос о том как эти уровни (в частности 3-ii) реализоваы: с блокировками(=> мешают другим)-Sybase,Db2 или без: Oracle (default snapshot isolation), SQL Server 2005 (snapshot isolation option). K томy же ANSI стандарт "дорос" до snapshot isolation сравнительно недавно.
Почитайте эту статью "Critique of Ansi SQL isolation level" http://www.cs.umb.edu/~poneil/iso.pdf. Где то есть русский перевод.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35456521
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+
Fekete, Alan; Liarokapis, Dimitrios; O'Neil, Elizabeth; O'Neil, Patrick & Shasha, Dennis (2005), “Making Snapshot Isolation Serializable”, ACM Transactions on Database Systems 30 (2): 492-528, ISSN 0362-5915
(собственно Oracle select for update и предназначен для этого (article subject))
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35456553
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old...такое-же как и у всех блокировочников блокирующее чтение (SELECT FOR UPDATE)...
все наши на www.corba.kubsu.ru
Вот именно этого "чисто" Oracle stmt-a (что позволяет "подтянуть" snapshot isolation до serialazible) y Sybase,DB2 и нет , a lost update anomaly предлагается разрешать (cm.Date) используя select holdlock => "artificial deadlock" (потом 1205 err. - невозможно проверить ни в T-SQL, ни в ODBC !), другой путь: сначала update-om заблокировать запись, чтобы другой select не прошел (ждал)
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35459030
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сколько я понимаю(поправте если ошибаюсь), что snapshot - это чтение таблицы и если натыкаемся на строки которые используються в не завершенных транзакциях то беруться значения бывшие, до начало транзакций! То есть кто-то меняет значения в какой-то строке "А" на "Б", и до закрытия транзакции другой делает селект, то селект получит значение "А" и не будет ждать пока первая транзакция закроиться. Скажите это не относиться к такому-же "грязному чтению", как и при уровне изоляции 0! В первом случае произойдет "коммит" и данные будут "грязные", в случае с уровнем 0 произойдет "ролбэк" и данные будут такие-же "грязные". Или я опять что-то напутал?
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35459160
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:
> На сколько я понимаю(поправте если ошибаюсь), что snapshot - это чтение
> таблицы и если натыкаемся на строки которые используються в не
> завершенных транзакциях то беруться значения бывшие, до начало
> транзакций!

Ошибаетесь. Вообще все строки, читаемые транзакцией,
имеют состояние на начало этой транзакции.

Хотя формально это не определено, в стандарте нет такого
уровня изоляции. Одно из определений даётся в статье Грея и
его коллег (ссылка была в теме).

То есть кто-то меняет значения в какой-то строке "А" на "Б",
> и до закрытия транзакции другой делает селект, то селект получит
> значение "А" и не будет ждать пока первая транзакция закроиться.

Это - да.

Скажите
> это не относиться к такому-же "грязному чтению", как и при уровне
> изоляции 0!

Нет. Данные, читаемые транзакцией, принадлежат к одному
из согласованных состояний БД. При dirty read данные могут
быть любыми.

В первом случае произойдет "коммит" и данные будут
> "грязные", в случае с уровнем 0 произойдет "ролбэк" и данные будут
> такие-же "грязные".

Если первый случай - это snapshot изоляция, то в ней НЕТ грязных
данных, все данные, читаемые транзакцией, принадлежат одному
из согласованных состояний БД. В слуючае dirty read данные
могут быть любыми.

Если интересно, почитайте действительно статью.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35459304
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите что такое key range lock?
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Применим прицип Oracle к ASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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