powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Применим прицип Oracle к ASE
70 сообщений из 70, показаны все 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
Применим прицип Oracle к ASE
    #35459327
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И Readpast - это не максимальное приближение к snapshot?
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35459342
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cherrex_DenИ Readpast - это не максимальное приближение к snapshot?

А прошу прощения! Мы обходим эти строки, а не читаем их первоначальное значение!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35460689
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> Подскажите что такое key range lock?

частный упрощённый случай предикативной блокировки.
Выглядит как

ссылка на индекс таблицы

значения полей, обозначающих начало блокируемого диапазона

значения полей, обозначающих конец блокируемого диапазона

ну и вид блокировки (shared, exclusive etc)

Если какая-то запись из таблицы (которой принадлежит индекс),
на которую наложен лок, попадает в заданный таким образом диапазон,
то эта запись считается заблокированной данным образом.

Достоинства:

экономия локов - используется один хитрый вместо N простых
на каждую запись

возможность блокирования даже ещё не существующих физически записей
в таблице.

относительно низкая (относительно обобщённых предикативных блокировок)
стоимость реализации - на проверки записей на заблокированность уходит не так
много времени.

Недостатки:

Немного более сложны, чем обычные блокировки. Ну да что ж делать...

Применяются key range locks для замены эксклюзивного блокирования таблицы
на уровнях изоляции 2 и 3 (в основном наверное всё же 3, т.е. SERIALIZABLE,
потому как key range locks призваны бороться прежде всего с фантомами).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35460703
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> И Readpast - это не максимальное приближение к snapshot?

Наоборот, максимальное удаление, я бы сказал.
Но на самом деле "удаление" или "приближение" - сказать
трудно. Readpast для читающей транзакции (для других он
не имеет смысла) позволяет транзакции не читать запись,
если она заблокирована (или не читать всю страницу, если
блокировки страничные). Т.е. для читающей транзакции
заблокированная запись как бы эффективно является удалённой.
Для snapshot заблокированная запись будет дана читающей транзакции
в том варианте, в котором эта запись была на начало транзакции
(если записи не было - запись не будет видна).
Вот и думайте, что тут ближе, что дальше.

На самом деле Readpast - некое ухищрение для read commited,
позволяющее читающему запросу не зависнуть в ожидании освобождения
данных. Но это его немного "сдвигает" как бы в сторону read uncommited.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35460862
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть (на сколько я понял) в многопользовательской среде всеравно без блокировки не обойтись! Если бы в Оракле с его версионностью все было так классно и безупречно, то зачем разработчики Оракла сделали "select....forupdate"(подобие эксклюзивной блокировки)? И пусть Snapshot возвращает согласованный набор данных, кому он нужен если после завершения транзакций он измениться. Поэтому особой разницы между snapshot и уровнем 0 я не вижу(безусловно разница есть и не малая, но толку всеравно мало).

Огромное спасибо MasterZiv за ответы и терпение ко мне!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35460985
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> То есть (на сколько я понял) в многопользовательской среде всеравно без
> блокировки не обойтись!

Конечно.

Если бы в Оракле с его версионностью все было
> так классно и безупречно, то зачем разработчики Оракла сделали
> "select....forupdate"(подобие эксклюзивной блокировки)? И пусть Snapshot

во-первых, оракл - не чистый версионник. Во-вторых, кажется
даже для чистых версионников при изменении данных двумя
транзакциями применяются блокировки записей (хотя тут я возможно
не прав, но я вот не знаю, как ещё в этом случае обеспечить
сериализуемость транзакций).

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

Ну, это - философский подход к проблеме (на мой взгляд - правильный).

Поэтому особой разницы между
> snapshot и уровнем 0 я не вижу(безусловно разница есть и не малая, но

Да только вообще во всём этом мало ...

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


Это нужно всем. Эдесь ключевое слово "согласованный" (по-времени), который симулирует "мгновенное" выполнение select-a (как и должно быть в идеале), что достигается snapshot isolation (default Oracle, без блокировок, не мешая остальным!) или isol.level 3 (Sybase, c блокировками, deadlockami и постановкой других на уши !).

T.e. вы всегда можете co 100% гарантией получив отчет утвержать что на момент времени t1 (starta select (regular snapshot isolation) or finish select (flashback query Oracle)-вот это действиельно философсий вопрос:на начало, на конец, какои-то момент, но "мгновенный" снимок, a не смесь состояий таблицы на разные моменты времени !) он верен.

Иначе (read commited , default Sybase ASE) - смесь по вренени в отчете,
неверные totals, возможность иметь select result ни в какой момент не представленный в таблице вообще (!), а так как проверить в рамках этого isoл.level это невозможно + меняющиеся price (Wall Street) все спокойно удовлетворены, а subprime моргидж кризис продолжается :-)
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35461392
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ Sybase заставляет вас покупать дорогостоящий IQ где со snapshot isolation все OK.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35461399
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhora wrote:

> Иначе (read commited , default Sybase ASE) - смесь по вренени в отчете

Если ты делаешь отчёт по непрерывно меняющимся данным - какая разница,
что именно он выдаст ;)?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35461462
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно, для аналитических отчетов(я работаю в сфере перевалки грузов) где фигурируют цифры в миллионы тон, +- 5кг не влияют на "ход крейсера". Можно и нужно использовать snapshot и уровень 0. А когда надо с приемного документа списать точное количество тон, то лучше ждать, чем получить не верный набор данных!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35463347
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с MasterZiv.
Zhora явно жонглирует проблемой, выставляя одну из полезных технологических особенностей/преимуществ как такую, без которой вообще невозможно работать. Если бы это было так, то не существовало бы вообще никакх серверов, кроме оракла. Но это ведь неправда и бизнес работает на всех существующих серверах.
Если отчет надо построить по данным, которые постоянно изменяются, т.е. на сейчас, то без использования соответсвующего уровня изоляции не обойтись. Если отчет не затрагивает изменяющиеся данные, то не вижу никаких проблем использовать более низкий уровень изоляции. Т.е. без наличия снапшота можно жить и работать без особых проблем. Использование снэпшот, кстати, ведет к увеличению нагрузки на IO, что влияет на проозводительность транзакционных систем гораздо фатальнее чем блокировки, поэтому и разделяют физически аналитические системы от транзакционных.
У IBM есть хороший мануал, в котором описывается особенности реализации системы продажи билетов на самолет на блокировочнике и оракле. Итог их анализа, что в оракле необходимо использовать Select for update, что не делает его сильно отличным от блокировочника.


все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35464124
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old wrote:

> У IBM есть хороший мануал, в котором описывается особенности реализации
> системы продажи билетов на самолет на блокировочнике и оракле. Итог их
> анализа, что в оракле необходимо использовать Select for update, что не
> делает его сильно отличным от блокировочника.

Можете ссылку дать ?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35464176
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldСогласен с MasterZiv.
Zhora явно жонглирует проблемой, выставляя одну из полезных технологических особенностей/преимуществ как такую, без которой вообще невозможно работать. Если бы это было так, то не существовало бы вообще никакх серверов, кроме оракла. Но это ведь неправда и бизнес работает на всех существующих серверах.
Если отчет надо построить по данным, которые постоянно изменяются, т.е. на сейчас, то без использования соответсвующего уровня изоляции не обойтись. Если отчет не затрагивает изменяющиеся данные, то не вижу никаких проблем использовать более низкий уровень изоляции. Т.е. без наличия снапшота можно жить и работать без особых проблем. Использование снэпшот, кстати, ведет к увеличению нагрузки на IO, что влияет на проозводительность транзакционных систем гораздо фатальнее чем блокировки, поэтому и разделяют физически аналитические системы от транзакционных.
У IBM есть хороший мануал, в котором описывается особенности реализации системы продажи билетов на самолет на блокировочнике и оракле. Итог их анализа, что в оракле необходимо использовать Select for update, что не делает его сильно отличным от блокировочника.

где ж вы были когда ASCRUS решал нам задачку на блокировочнике и скис ? имхо красиво иллюстрирующий пример какое существенное преимущество дает MVCC. все ведущие разработчики субд уже если не внедрили Snapshot, то уже выпустили какие-то промежуточные хреновины (типа scip locked в db2, last commited informix) для обеспечения неблокируемого чтения и оптимистичной блокировки ...

ЗЫ. и/о с легкостью компесируется простоем на блокировках и затрат на менеджмент гигантского кол-ва никому не нужных блокировок на чтение. эволюция тестов Microsoft в TPC-E это красиво демонстрирует ...
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35464277
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал текст аскруса. Сам тред не читал, поэтому буду говорить только за его пост.
Первый параграф с табличкой движения по счетам - согласен. Потом он правда для решения задачи получения баланса начал описывать какую-то схему, я не очень понял зачем так сложно.
На прошлом месте моей работы, в банковской субд, была табличка с остатками на счетах. Она хранила остатки на начала банковского дня (для каждого дня дата, счет, входящий остаток). Для получения текущего остатка в текущем дне на счете надо было (упрощенно) к остатку входящему на текущий день прибавить кредитовые проводки и вычесть дебетовые из таблицы движений. С такой схемой можно было получить текущий остаток на счете. В зависмости от требований к актуальности остатку, используем разные степени изоляции.
Вечером при закрытии дня таблица остатков окончательно пересчитывалась, определялись конечные остатки и на следующий день все повторялось снова.
Я не против снэпшот, вещь крайне полезная особенно для всяких статистических запросов. Мне просто не нравится, что значимость снэпшота возводят в абсолют без которого невозможно написать что-либо вообще, что есть не правда.
В аса10 снэпшот появился, можно только приветсвовать появление еще одного инструмента. Но лично мне в нем пока нужды нет, задачи не те.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35464297
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
snapshot это только разновидность получения "грязных данных", согласованных но "грязных". Это только фича которая принципиально не влияет на фундаментальные основы релиационных СУБД. И я согласен с MasterZiv и Ggg_old что snapshot это не панацея и молиться на это ненадо!

p.s. и правильно сказал ASCRUS что по мимо использования возможностей СУБД надо еще и думать!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35464360
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, аскруса давненько не было видно на этом форуме....
все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35464529
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Ggg_old wrote:

> У IBM есть хороший мануал, в котором описывается особенности реализации
> системы продажи билетов на самолет на блокировочнике и оракле. Итог их
> анализа, что в оракле необходимо использовать Select for update, что не
> делает его сильно отличным от блокировочника.

Можете ссылку дать ?

Posted via ActualForum NNTP Server 1.4
ftp://ftp.software.ibm.com/software/data/pubs/papers/readconsistency.pdf
Я помнится читал эту статью еще давно, так - отписка.
Вот итересно почитать мыслишки почему ИБМ не реализует MVCC (~ snapshot isolation) никак.
http://bytes.com/forum/thread635122.html
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35465294
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Ggg_old

так сложно потому, что даже при паре сотен tps к концу дня на вычисление баланса будут уходить гигантские ресурсы, а на изначальную задачу "подсчитать суммарный баланс чековых и сберегательных счетов по большой группе клиентов" придется перелопачивать гигабайты данных ...
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35465815
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, не знаю.. глубоко въезжать в проблему задачи в том треде лень. У нас баланс высчитывался на основе проводок за день, поэтому все работало нормально. А если, как писал аскрус для получения остатка надо считать все проводки за месяц или год, то тут никаких ресурсов не хватит, столько данных с диска поднимать. И локи будут далеко не на первом месте.
все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35465987
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den wrote:
> snapshot это только разновидность получения "грязных данных",
> согласованных но "грязных".

Нет, тут вы не правы кардинально. Данные там чистые.

> Это только фича которая принципиально не
> влияет на фундаментальные основы релиационных СУБД. И я согласен с
> MasterZiv и Ggg_old что snapshot это не панацея и молиться на это ненадо!
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35466061
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!так сложно потому, что даже при паре сотен tps к концу дня на вычисление баланса будут уходить гигантские ресурсы, а на изначальную задачу "подсчитать суммарный баланс чековых и сберегательных счетов по большой группе клиентов" придется перелопачивать гигабайты данных ...
Yo.! , ASCRUS вроде бы там написал, что не сталкивался с банковскими технологиями.

А в банке существует такое понятие как "Закрытие дня". По закрытию дня никакие проводки больше не делаются и ничто не мешает просчитать остатки по счетам за день и занести их в отдельную таблицу "Остатки". Естественно, в этом случае вообще глубоко фиолетово, какая СУБД используется блокировочник или версионник, т.к. сам бизнес-процесс обеспечивает валидность данных.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35466203
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Ggg_old
вероятно у вас были такие объемы какие позволяли для каждого вычисления баланса поднимать все транзакции счета за день, я не спорю, понятно, что это будет работать. я о том что версионность имеет существенное преимущество как в плане простоты кода (в примере тупо обновляться баланс) так и в плане производительности (и/о и CPU под UNDO на порядок будет меньше чем на каждый чих поднимать все транзакции счета за день).

2Vitafresh
я тоже достаточно далек от банковских систем и не совсем понял, что значит "проводки больше не делаются". не может же банк запретить операции со счетом пока что-то "закрывает" ?
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35466263
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!2Vitafresh
я тоже достаточно далек от банковских систем и не совсем понял, что значит "проводки больше не делаются". не может же банк запретить операции со счетом пока что-то "закрывает" ?
Это значит, что данные по текущему операционному дню меняться уже не могут и в "закрытый" день никакая проводка больше не попадет. В соответствии с регламентом такая проводка (т.е. операция со счетом) будет иметь дату следующего операционного дня. Соответственно с текущим "закрытым" днем можно безбоязненно проводить любые расчеты, переносы в архив, вычисление остатков и что душе угодно, без опаски что данные могут измениться.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35466401
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Yo: Ну если подсчет текущего остатка на счете нужен для совершения следующей операции со счетом, то здесь снэпшот не поможет, т.к. все остальные операции должны встать в стойло.
Проводок по конкретному счету за день не сказть что очень много, так что все транзакции отрабатывали быстро.
При наличии таймстампа у документа можно даже читать данные из проводок даже в грязном чтении, т.к. проводка будучи введенная уже почти не изменяется. Отмена или коррекция проводки организуется через сторно-проводку, т.е. новый документ в базе.

все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35466414
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhora wrote:

> Я помнится читал эту статью еще давно, так - отписка.
> Вот итересно почитать мыслишки почему ИБМ не реализует MVCC (~ snapshot
> isolation) никак.

Да потому что на фиг это не надо в большинстве приложений. Т.е. как:
Есть - можно использовать. Нет - можно обойтись. А перформанс
у блокировочников лучше объективно, если конечно отбросить те
транзакции, для которых специально делался snapshot.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35466419
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:

> вероятно у вас были такие объемы какие позволяли для каждого вычисления
> баланса поднимать все транзакции счета за день, я не спорю, понятно, что
> это будет работать. я о том что версионность имеет существенное
> преимущество как в плане простоты кода (в примере тупо обновляться
> баланс) так и в плане производительности (и/о и CPU под UNDO на порядок
> будет меньше чем на каждый чих поднимать все транзакции счета за день).
>
Да вот не факт, зависит от соотношения сложности читающих и пишущих транзакций
в этот балланс.

> я тоже достаточно далек от банковских систем и не совсем понял, что
> значит "проводки больше не делаются".

Имеется в виду, что период (банковский день) закрыт, по нему
сформировано конечное сальдо, и проводки в этот период уже не попадают.

не может же банк запретить
> операции со счетом пока что-то "закрывает" ?

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

> А можно по подробней почему версионники более ресурсоемкие чем
> блокировочники? У меня есть свои догадки, но хочиться услышать факты.

Ну тут тема как бы неблагодарная, флеймовая, но версионникам же
старые версии записей хранить-то надо, и удалять, когда время
придёт, тоже. Блокировочникам всё это не нужно как бы.
С другой стороны, говорить так, как я сказал, тоже не совсем
правильно, поскольку производительность - это кол-во транзакций
в единицу времени. Т.е. просто говоря блокировочники могут "просесть"
там, где версионники улетят (и, кстати, наоборот).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467486
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может конечно в России банки какие-то особенные, но у нас операции со счетом доступны 24/7 через инет/мобильный банк.

кроме уже озвученных преимуществ MVCC с не блокируемым консистентным чтением, например MSSQL дало тригера (таблички inserted/deleted), работающие в разы быстрее, online перестроение индексов, в оракле мегафичу flashback и прочие вкусности ...
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467549
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наши банки тоже поют про 24/7, но это означает лишь только то, что сайт и БД инетбанкинга работают круглосуточно. А как быстро исполнятеся реальная проводка? Знаю, что в европе платежи между банками быстрее суток-трех не ходят.
И кто на чем только не работает.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467577
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldНаши банки тоже поют про 24/7, но это означает лишь только то, что сайт и БД инетбанкинга работают круглосуточно. А как быстро исполнятеся реальная проводка? Знаю, что в европе платежи между банками быстрее суток-трех не ходят.
И кто на чем только не работает.
в латвии внутри банка платеж идет минут 5-10, между местными банками обычно в течении суток. поскольку банк скандинавский, сомневаюсь, что в европу дольше будет идти. трое суток на сколько я слышал это максимум, дольше которого они не могут задержать, при этом можно получать XML нотификации по http или на мобильник SMS.
к стате тот же банкомат, ему нужно знать баланс по любому ... хотя за прошлый день наверно можно считать баланс и на RC, не накладывая блокировки, просто за сутки сумашедший оверхед получается.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467584
Однако
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оффтоп: например, в UK ввели Faster Payment Service, так что норма сейчас часа 2...
читать здесь: http://www.apacs.org.uk/payments_industry/faster_payments_service.html
но все зависит от самой RTGS системы

2 Yo.!
Вы откуда? Где вы? Какая страна?

кстати, нехотелось бы вас расстраивать, но Sybase ASE #1 в инвестбанках, так уж сложилось...
и версионность там увы непожет...
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467587
Однако
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
в латвии внутри банка платеж
когда-то пробывали получить распечатку со счета, например Ханзабанка, в часа 2 ночи или сделать платеж?
увы, но там далеко не 7/24 :) а там Oracle!!!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467598
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
однако
кстати, нехотелось бы вас расстраивать, но Sybase ASE #1 в инвестбанках, так уж сложилось...

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

однако
когда-то пробывали получить распечатку со счета, например Ханзабанка, в часа 2 ночи или сделать платеж?

не верю, за лет 8 в хансе лично я ни разу не столкнулся с не работающим инет банком. читал только в газетах, что они когда-то обновили ПО неудачно и несколько часов лежали. а в 2 часа ночи суботы снимать деньги с банкомата у меня обычное явление. к стате у них была хорошая фича можно было послать смс и получить баланс своего счета, но почему-то отрубили ...
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467614
Однако
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
разве, что в мечтах. даже если сложить продажи всех субд сайбеза и посчитать, что все они проинсталированы в банках, то получится смешная доля для банковского сектора (менее $407M).

это вы можите "бабушкам из соседнего подьезда" рассказывать про операции сложение и банковский сектор... :))

кстати, если о деньгах, то цена акций Sybase уже как перешли уровень цены 2000-года, что не скажеш про Oracle. ;)


Yo.!
не верю, за лет 8 в хансе лично я ни разу не столкнулся с не работающим инет банком. читал только в газетах, что они когда-то обновили ПО неудачно и несколько часов лежали. а в 2 часа ночи суботы снимать деньги с банкомата у меня обычное явление. к стате у них была хорошая фича можно было послать смс и получить баланс своего счета, но почему-то отрубили ...
ваше дело, вереть-не-верить :)) не так активно пользуетесь!
деньги снимать с банкомата это другая история
за прошлый месяц, например, получил сообщение типа "Невозможно выполнить операцию. Попробуйте через 2 часа.", и так два раза!
Наверное "удачно" попал на maintenance :)) а вы тут про версионность и т.д. :)
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467618
Однако
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
в 2 часа ночи суботы снимать деньги с банкомата у меня обычное явление.

для справки: для retail бизнеса как правило maintenance делают в середине недели, а для corporate - на выходных.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467621
Однако
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Yo.!
а где вы работаете? Может друзья-моих-друзей знают Вас!? :)
Можите сказать, например, 3-ю букву в названии компании, и 2-ую букву в названии улицы , для консперации
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467658
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
однако пишет:

Господа, прошу сворачивать банковскую тематику, и вести
беседу ближе к делу, т.е. к топику.
Я на 100% уверен, что никакая предметная область, ни
банковская, ни какая-то ещё, не выдвигает сама по себе
какие-то требования к изоляции транзакций в СУБД.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35467660
Однако
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Господа, прошу сворачивать банковскую тематику, и вести
беседу ближе к делу, т.е. к топику.
Я на 100% уверен, что никакая предметная область, ни
банковская, ни какая-то ещё, не выдвигает сама по себе
какие-то требования к изоляции транзакций в СУБД.

Прошу прощения застоль отдаление от данного топика...
Увы, но не могу не Модератор: не с глаголами пишется раздельно :-) согласиться, что уровень изоляций транзакций не влияет на предметную область.
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35471505
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите почему даже на уровне 0 всеравно выставляется шаре-блокировка при "select into"? И можно ли это побороть!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35471639
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще интересное наблюдение! Если делаеш select into всей таблицы (без джойнов, групировок и всей шняги) , то запрос на вставку отрабатывае мгновенно!

тупо:
Код: plaintext
select * into #test from tbl  -- 100   000  строк 
работает меньше сикунды!

В принципе это можно за секунды вылевать в времянки данные а затем работать с ними не блокируя(шаре-блокировка) всех остальных!

Поправте если ошибся!
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35471710
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_DenПодскажите почему даже на уровне 0 всеравно выставляется шаре-блокировка при "select into"? И можно ли это побороть!

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

Спасибо! выход с курсором я не ожидал!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare c_test cursor for 
select * from test_block 
at isolation read uncommitted
go
declare @i int
open c_test
fetch c_test into @i
while @@sqlstatus = 0 
begin
insert into tt values (@i)
fetch c_test into @i
end

close c_test
go
deallocate cursor c_test
go


За что я люблю ASE, так это за то что, при любой игре у него найдется туз в руаве! (прям стихи )
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35471876
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помню, что столкнулся в асе 12,5 с такой траблой: при грязном чтении, запрос должен был обязательно использовать PK. Из-за этого про уровень 0 пришлось забыть.
все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Применим прицип Oracle к ASE
    #35472007
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old wrote:

> Помню, что столкнулся в асе 12,5 с такой траблой: при грязном чтении,
> запрос должен был обязательно использовать PK. Из-за этого про уровень 0
> пришлось забыть.

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


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