|
|
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Ораклисты постоянно говорят о принципе "Читатели не блокирубт писателей, а писатели не блокируют читателей" и что это возможность только в оракле(из-за версионности)! Применим ли этот принцип и к ASE? Помоему жанглируя уровнями изоляции можно добиться таковоже эффекта! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 13:05 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
В оракле этот принцип хорошо применим только к построению некоторых отчетов поверх OLTP систем. А для транзакций, где нужно согласованное чтение (например вычисление текущего остатка на счете перед вводом новой проводки) используется такое-же как и у всех блокировочников блокирующее чтение (SELECT FOR UPDATE). Т.е. наличие фичи неблокируещго чтения - это хорошо, но только для ограниченного числа задач, чудес не бывает. В ASA10 такая фича появилась (Snapshot isolation), но это не панацея. все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 15:14 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
тоесть если я читаю данные с уровнем изоляции 0 или приписываю noholdlock, то получаю тотже эффект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 16:48 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Denтоесть если я читаю данные с уровнем изоляции 0 или приписываю noholdlock, то получаю тотже эффект? Я бы не был так категоричен, отвечая "да" - чтение с уровнем изоляции 0 - это грязное чтение. Т.е. если предположить что в один момент времени один коннект делает вставку/изменения в таблицу а другой читает из нее с isolation level 0, то читатель может увидеть не зафиксированные (без сommit) данные. В версионике такого не будет никогда. Читатель всегда будет видеть закомиченные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 18:21 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
автор Читатель всегда будет видеть закомиченные данные. а если данные не закоммичены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 19:43 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > Ораклисты постоянно говорят о принципе "Читатели не блокирубт писателей, > а писатели не блокируют читателей" и что это возможность только в > оракле(из-за версионности)! Применим ли этот принцип и к ASE? Нет, не применим. в ASE в общем случае Читатели блокируют писателей писатели блокируют читателей >Помоему жанглируя уровнями изоляции можно добиться таковоже эффекта! Жонглируя уровнями изоляции можно вообще всего чего угодно добиться в ORACLE это на всех уровнях, исключая 3-ий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:13 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > тоесть если я читаю данные с уровнем изоляции 0 или приписываю > noholdlock, то получаю тотже эффект? Нет, не получаете. Кстати, уровень изоляции 0 и noholdlock -- это не одно и то же. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:15 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > Читатель всегда будет видеть закомиченные данные. > а если данные не закоммичены? Тогда ничего не увидит. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:16 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > тоесть если я читаю данные с уровнем изоляции 0 Немного неправильно написал. Такого же эффекта не будет, как на оракле, понятно, потому что там обеспечивается уровень 1 как минимум. А тут - 0. Но на 0 -е в ASE Читатели не блокируют писателей писатели не блокируют читателей Т.е. с учётом того, что считанные данные могут быть грязными, да,эффект тот же. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:19 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Все понял! И последний глупый вопрос: В ase можно определить грязная строка или нет, при уровне 0 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:44 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_DenВ ase можно определить грязная строка или нет, при уровне 0 ? нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2008, 11:28 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
я так и думал! А что произойдет если откроиться транзакция, сделаеться инсерт и до коммита или ролбэка кто-то сделает селект? таблица с построчной схемой блокировки а селект с уровнем изоляции 1! Будет ли ждать селект пока транзакция с инсертом закроиться или селект вернет данные без этой вставляемой строки? P.S речь идет об ASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2008, 18:18 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_DenВсе понял! И последний глупый вопрос: В ase можно определить грязная строка или нет, при уровне 0 ? Конечно же нет ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2008, 21:58 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
А что произойдет если откроиться транзакция, сделаеться инсерт и до коммита или ролбэка кто-то сделает селект? Зависит от схемы блокирования таблицы (DOL/APL) таблица с построчной схемой блокировки а селект с уровнем изоляции 1! Будет ли ждать селект пока транзакция с инсертом закроиться или селект вернет данные без этой вставляемой строки? Нет, не будет. Но это - особый случай, можно сказать - исключение. В ASE на DOL таблицах вставки проходят вообще незаметно для всех остальных транзакций. Как-то ASE их прячет от всех, магическим образом (на самом деле не знаю даже как, но это ОЧЕНЬ ЗДОРОВО !) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2008, 22:16 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 12:25 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
moris пишет: Ну в общем, всё очень классно в ASE с этим ! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 16:46 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
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 быть консисент по времени и его получение не должо мешать другим работать при этом) победил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 18:41 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
2Zhora: Не понял, что вы имели ввиду своим вторым параграфом. Все уровни изоляции давно описаны, не понимаю, какие такие неразрешимые проблемы могут возникать. Выбирайте подходящий уровень изоляции и работайте в нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 20:12 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Вопрос о том как эти уровни (в частности 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. Где то есть русский перевод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 21:21 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
+ 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)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 21:50 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
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 не прошел (ждал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 22:40 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
На сколько я понимаю(поправте если ошибаюсь), что snapshot - это чтение таблицы и если натыкаемся на строки которые используються в не завершенных транзакциях то беруться значения бывшие, до начало транзакций! То есть кто-то меняет значения в какой-то строке "А" на "Б", и до закрытия транзакции другой делает селект, то селект получит значение "А" и не будет ждать пока первая транзакция закроиться. Скажите это не относиться к такому-же "грязному чтению", как и при уровне изоляции 0! В первом случае произойдет "коммит" и данные будут "грязные", в случае с уровнем 0 произойдет "ролбэк" и данные будут такие-же "грязные". Или я опять что-то напутал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 21:39 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > На сколько я понимаю(поправте если ошибаюсь), что snapshot - это чтение > таблицы и если натыкаемся на строки которые используються в не > завершенных транзакциях то беруться значения бывшие, до начало > транзакций! Ошибаетесь. Вообще все строки, читаемые транзакцией, имеют состояние на начало этой транзакции. Хотя формально это не определено, в стандарте нет такого уровня изоляции. Одно из определений даётся в статье Грея и его коллег (ссылка была в теме). То есть кто-то меняет значения в какой-то строке "А" на "Б", > и до закрытия транзакции другой делает селект, то селект получит > значение "А" и не будет ждать пока первая транзакция закроиться. Это - да. Скажите > это не относиться к такому-же "грязному чтению", как и при уровне > изоляции 0! Нет. Данные, читаемые транзакцией, принадлежат к одному из согласованных состояний БД. При dirty read данные могут быть любыми. В первом случае произойдет "коммит" и данные будут > "грязные", в случае с уровнем 0 произойдет "ролбэк" и данные будут > такие-же "грязные". Если первый случай - это snapshot изоляция, то в ней НЕТ грязных данных, все данные, читаемые транзакцией, принадлежат одному из согласованных состояний БД. В слуючае dirty read данные могут быть любыми. Если интересно, почитайте действительно статью. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 00:13 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Подскажите что такое key range lock? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 08:45 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
И Readpast - это не максимальное приближение к snapshot? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 08:58 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_DenИ Readpast - это не максимальное приближение к snapshot? А прошу прощения! Мы обходим эти строки, а не читаем их первоначальное значение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 09:06 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 15:17 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > И Readpast - это не максимальное приближение к snapshot? Наоборот, максимальное удаление, я бы сказал. Но на самом деле "удаление" или "приближение" - сказать трудно. Readpast для читающей транзакции (для других он не имеет смысла) позволяет транзакции не читать запись, если она заблокирована (или не читать всю страницу, если блокировки страничные). Т.е. для читающей транзакции заблокированная запись как бы эффективно является удалённой. Для snapshot заблокированная запись будет дана читающей транзакции в том варианте, в котором эта запись была на начало транзакции (если записи не было - запись не будет видна). Вот и думайте, что тут ближе, что дальше. На самом деле Readpast - некое ухищрение для read commited, позволяющее читающему запросу не зависнуть в ожидании освобождения данных. Но это его немного "сдвигает" как бы в сторону read uncommited. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 15:23 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
То есть (на сколько я понял) в многопользовательской среде всеравно без блокировки не обойтись! Если бы в Оракле с его версионностью все было так классно и безупречно, то зачем разработчики Оракла сделали "select....forupdate"(подобие эксклюзивной блокировки)? И пусть Snapshot возвращает согласованный набор данных, кому он нужен если после завершения транзакций он измениться. Поэтому особой разницы между snapshot и уровнем 0 я не вижу(безусловно разница есть и не малая, но толку всеравно мало). Огромное спасибо MasterZiv за ответы и терпение ко мне! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 16:08 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > То есть (на сколько я понял) в многопользовательской среде всеравно без > блокировки не обойтись! Конечно. Если бы в Оракле с его версионностью все было > так классно и безупречно, то зачем разработчики Оракла сделали > "select....forupdate"(подобие эксклюзивной блокировки)? И пусть Snapshot во-первых, оракл - не чистый версионник. Во-вторых, кажется даже для чистых версионников при изменении данных двумя транзакциями применяются блокировки записей (хотя тут я возможно не прав, но я вот не знаю, как ещё в этом случае обеспечить сериализуемость транзакций). > возвращает согласованный набор данных, кому он нужен если после > завершения транзакций он измениться. Ну, это - философский подход к проблеме (на мой взгляд - правильный). Поэтому особой разницы между > snapshot и уровнем 0 я не вижу(безусловно разница есть и не малая, но Да только вообще во всём этом мало ... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 16:49 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
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 моргидж кризис продолжается :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 18:54 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
+ Sybase заставляет вас покупать дорогостоящий IQ где со snapshot isolation все OK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 18:57 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Zhora wrote: > Иначе (read commited , default Sybase ASE) - смесь по вренени в отчете Если ты делаешь отчёт по непрерывно меняющимся данным - какая разница, что именно он выдаст ;)? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 19:01 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Правильно, для аналитических отчетов(я работаю в сфере перевалки грузов) где фигурируют цифры в миллионы тон, +- 5кг не влияют на "ход крейсера". Можно и нужно использовать snapshot и уровень 0. А когда надо с приемного документа списать точное количество тон, то лучше ждать, чем получить не верный набор данных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 19:41 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Согласен с MasterZiv. Zhora явно жонглирует проблемой, выставляя одну из полезных технологических особенностей/преимуществ как такую, без которой вообще невозможно работать. Если бы это было так, то не существовало бы вообще никакх серверов, кроме оракла. Но это ведь неправда и бизнес работает на всех существующих серверах. Если отчет надо построить по данным, которые постоянно изменяются, т.е. на сейчас, то без использования соответсвующего уровня изоляции не обойтись. Если отчет не затрагивает изменяющиеся данные, то не вижу никаких проблем использовать более низкий уровень изоляции. Т.е. без наличия снапшота можно жить и работать без особых проблем. Использование снэпшот, кстати, ведет к увеличению нагрузки на IO, что влияет на проозводительность транзакционных систем гораздо фатальнее чем блокировки, поэтому и разделяют физически аналитические системы от транзакционных. У IBM есть хороший мануал, в котором описывается особенности реализации системы продажи билетов на самолет на блокировочнике и оракле. Итог их анализа, что в оракле необходимо использовать Select for update, что не делает его сильно отличным от блокировочника. все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 14:50 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Ggg_old wrote: > У IBM есть хороший мануал, в котором описывается особенности реализации > системы продажи билетов на самолет на блокировочнике и оракле. Итог их > анализа, что в оракле необходимо использовать Select for update, что не > делает его сильно отличным от блокировочника. Можете ссылку дать ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 18:32 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Ggg_oldСогласен с MasterZiv. Zhora явно жонглирует проблемой, выставляя одну из полезных технологических особенностей/преимуществ как такую, без которой вообще невозможно работать. Если бы это было так, то не существовало бы вообще никакх серверов, кроме оракла. Но это ведь неправда и бизнес работает на всех существующих серверах. Если отчет надо построить по данным, которые постоянно изменяются, т.е. на сейчас, то без использования соответсвующего уровня изоляции не обойтись. Если отчет не затрагивает изменяющиеся данные, то не вижу никаких проблем использовать более низкий уровень изоляции. Т.е. без наличия снапшота можно жить и работать без особых проблем. Использование снэпшот, кстати, ведет к увеличению нагрузки на IO, что влияет на проозводительность транзакционных систем гораздо фатальнее чем блокировки, поэтому и разделяют физически аналитические системы от транзакционных. У IBM есть хороший мануал, в котором описывается особенности реализации системы продажи билетов на самолет на блокировочнике и оракле. Итог их анализа, что в оракле необходимо использовать Select for update, что не делает его сильно отличным от блокировочника. где ж вы были когда ASCRUS решал нам задачку на блокировочнике и скис ? имхо красиво иллюстрирующий пример какое существенное преимущество дает MVCC. все ведущие разработчики субд уже если не внедрили Snapshot, то уже выпустили какие-то промежуточные хреновины (типа scip locked в db2, last commited informix) для обеспечения неблокируемого чтения и оптимистичной блокировки ... ЗЫ. и/о с легкостью компесируется простоем на блокировках и затрат на менеджмент гигантского кол-ва никому не нужных блокировок на чтение. эволюция тестов Microsoft в TPC-E это красиво демонстрирует ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 19:00 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Прочитал текст аскруса. Сам тред не читал, поэтому буду говорить только за его пост. Первый параграф с табличкой движения по счетам - согласен. Потом он правда для решения задачи получения баланса начал описывать какую-то схему, я не очень понял зачем так сложно. На прошлом месте моей работы, в банковской субд, была табличка с остатками на счетах. Она хранила остатки на начала банковского дня (для каждого дня дата, счет, входящий остаток). Для получения текущего остатка в текущем дне на счете надо было (упрощенно) к остатку входящему на текущий день прибавить кредитовые проводки и вычесть дебетовые из таблицы движений. С такой схемой можно было получить текущий остаток на счете. В зависмости от требований к актуальности остатку, используем разные степени изоляции. Вечером при закрытии дня таблица остатков окончательно пересчитывалась, определялись конечные остатки и на следующий день все повторялось снова. Я не против снэпшот, вещь крайне полезная особенно для всяких статистических запросов. Мне просто не нравится, что значимость снэпшота возводят в абсолют без которого невозможно написать что-либо вообще, что есть не правда. В аса10 снэпшот появился, можно только приветсвовать появление еще одного инструмента. Но лично мне в нем пока нужды нет, задачи не те. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 20:08 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
snapshot это только разновидность получения "грязных данных", согласованных но "грязных". Это только фича которая принципиально не влияет на фундаментальные основы релиационных СУБД. И я согласен с MasterZiv и Ggg_old что snapshot это не панацея и молиться на это ненадо! p.s. и правильно сказал ASCRUS что по мимо использования возможностей СУБД надо еще и думать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 20:21 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Кстати, аскруса давненько не было видно на этом форуме.... все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 21:11 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 01:11 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
2Ggg_old так сложно потому, что даже при паре сотен tps к концу дня на вычисление баланса будут уходить гигантские ресурсы, а на изначальную задачу "подсчитать суммарный баланс чековых и сберегательных счетов по большой группе клиентов" придется перелопачивать гигабайты данных ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 12:29 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
ну, не знаю.. глубоко въезжать в проблему задачи в том треде лень. У нас баланс высчитывался на основе проводок за день, поэтому все работало нормально. А если, как писал аскрус для получения остатка надо считать все проводки за месяц или год, то тут никаких ресурсов не хватит, столько данных с диска поднимать. И локи будут далеко не на первом месте. все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 15:03 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > snapshot это только разновидность получения "грязных данных", > согласованных но "грязных". Нет, тут вы не правы кардинально. Данные там чистые. > Это только фича которая принципиально не > влияет на фундаментальные основы релиационных СУБД. И я согласен с > MasterZiv и Ggg_old что snapshot это не панацея и молиться на это ненадо! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 16:03 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Yo.!так сложно потому, что даже при паре сотен tps к концу дня на вычисление баланса будут уходить гигантские ресурсы, а на изначальную задачу "подсчитать суммарный баланс чековых и сберегательных счетов по большой группе клиентов" придется перелопачивать гигабайты данных ... Yo.! , ASCRUS вроде бы там написал, что не сталкивался с банковскими технологиями. А в банке существует такое понятие как "Закрытие дня". По закрытию дня никакие проводки больше не делаются и ничто не мешает просчитать остатки по счетам за день и занести их в отдельную таблицу "Остатки". Естественно, в этом случае вообще глубоко фиолетово, какая СУБД используется блокировочник или версионник, т.к. сам бизнес-процесс обеспечивает валидность данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 16:29 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
2Ggg_old вероятно у вас были такие объемы какие позволяли для каждого вычисления баланса поднимать все транзакции счета за день, я не спорю, понятно, что это будет работать. я о том что версионность имеет существенное преимущество как в плане простоты кода (в примере тупо обновляться баланс) так и в плане производительности (и/о и CPU под UNDO на порядок будет меньше чем на каждый чих поднимать все транзакции счета за день). 2Vitafresh я тоже достаточно далек от банковских систем и не совсем понял, что значит "проводки больше не делаются". не может же банк запретить операции со счетом пока что-то "закрывает" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 17:21 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Yo.!2Vitafresh я тоже достаточно далек от банковских систем и не совсем понял, что значит "проводки больше не делаются". не может же банк запретить операции со счетом пока что-то "закрывает" ? Это значит, что данные по текущему операционному дню меняться уже не могут и в "закрытый" день никакая проводка больше не попадет. В соответствии с регламентом такая проводка (т.е. операция со счетом) будет иметь дату следующего операционного дня. Соответственно с текущим "закрытым" днем можно безбоязненно проводить любые расчеты, переносы в архив, вычисление остатков и что душе угодно, без опаски что данные могут измениться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 17:46 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
2Yo: Ну если подсчет текущего остатка на счете нужен для совершения следующей операции со счетом, то здесь снэпшот не поможет, т.к. все остальные операции должны встать в стойло. Проводок по конкретному счету за день не сказть что очень много, так что все транзакции отрабатывали быстро. При наличии таймстампа у документа можно даже читать данные из проводок даже в грязном чтении, т.к. проводка будучи введенная уже почти не изменяется. Отмена или коррекция проводки организуется через сторно-проводку, т.е. новый документ в базе. все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 19:33 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Zhora wrote: > Я помнится читал эту статью еще давно, так - отписка. > Вот итересно почитать мыслишки почему ИБМ не реализует MVCC (~ snapshot > isolation) никак. Да потому что на фиг это не надо в большинстве приложений. Т.е. как: Есть - можно использовать. Нет - можно обойтись. А перформанс у блокировочников лучше объективно, если конечно отбросить те транзакции, для которых специально делался snapshot. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 19:54 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > вероятно у вас были такие объемы какие позволяли для каждого вычисления > баланса поднимать все транзакции счета за день, я не спорю, понятно, что > это будет работать. я о том что версионность имеет существенное > преимущество как в плане простоты кода (в примере тупо обновляться > баланс) так и в плане производительности (и/о и CPU под UNDO на порядок > будет меньше чем на каждый чих поднимать все транзакции счета за день). > Да вот не факт, зависит от соотношения сложности читающих и пишущих транзакций в этот балланс. > я тоже достаточно далек от банковских систем и не совсем понял, что > значит "проводки больше не делаются". Имеется в виду, что период (банковский день) закрыт, по нему сформировано конечное сальдо, и проводки в этот период уже не попадают. не может же банк запретить > операции со счетом пока что-то "закрывает" ? Должен. Не не может, а должен. Ну ладно, это уже далеко в дебри. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 19:58 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
А можно по подробней почему версионники более ресурсоемкие чем блокировочники? У меня есть свои догадки, но хочиться услышать факты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2008, 20:17 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_Den пишет: > А можно по подробней почему версионники более ресурсоемкие чем > блокировочники? У меня есть свои догадки, но хочиться услышать факты. Ну тут тема как бы неблагодарная, флеймовая, но версионникам же старые версии записей хранить-то надо, и удалять, когда время придёт, тоже. Блокировочникам всё это не нужно как бы. С другой стороны, говорить так, как я сказал, тоже не совсем правильно, поскольку производительность - это кол-во транзакций в единицу времени. Т.е. просто говоря блокировочники могут "просесть" там, где версионники улетят (и, кстати, наоборот). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2008, 22:20 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
может конечно в России банки какие-то особенные, но у нас операции со счетом доступны 24/7 через инет/мобильный банк. кроме уже озвученных преимуществ MVCC с не блокируемым консистентным чтением, например MSSQL дало тригера (таблички inserted/deleted), работающие в разы быстрее, online перестроение индексов, в оракле мегафичу flashback и прочие вкусности ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 19:18 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Наши банки тоже поют про 24/7, но это означает лишь только то, что сайт и БД инетбанкинга работают круглосуточно. А как быстро исполнятеся реальная проводка? Знаю, что в европе платежи между банками быстрее суток-трех не ходят. И кто на чем только не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 21:05 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Ggg_oldНаши банки тоже поют про 24/7, но это означает лишь только то, что сайт и БД инетбанкинга работают круглосуточно. А как быстро исполнятеся реальная проводка? Знаю, что в европе платежи между банками быстрее суток-трех не ходят. И кто на чем только не работает. в латвии внутри банка платеж идет минут 5-10, между местными банками обычно в течении суток. поскольку банк скандинавский, сомневаюсь, что в европу дольше будет идти. трое суток на сколько я слышал это максимум, дольше которого они не могут задержать, при этом можно получать XML нотификации по http или на мобильник SMS. к стате тот же банкомат, ему нужно знать баланс по любому ... хотя за прошлый день наверно можно считать баланс и на RC, не накладывая блокировки, просто за сутки сумашедший оверхед получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 21:45 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
оффтоп: например, в UK ввели Faster Payment Service, так что норма сейчас часа 2... читать здесь: http://www.apacs.org.uk/payments_industry/faster_payments_service.html но все зависит от самой RTGS системы 2 Yo.! Вы откуда? Где вы? Какая страна? кстати, нехотелось бы вас расстраивать, но Sybase ASE #1 в инвестбанках, так уж сложилось... и версионность там увы непожет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 21:56 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Yo.! в латвии внутри банка платеж когда-то пробывали получить распечатку со счета, например Ханзабанка, в часа 2 ночи или сделать платеж? увы, но там далеко не 7/24 :) а там Oracle!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 21:59 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
однако кстати, нехотелось бы вас расстраивать, но Sybase ASE #1 в инвестбанках, так уж сложилось... разве, что в мечтах. даже если сложить продажи всех субд сайбеза и посчитать, что все они проинсталированы в банках, то получится смешная доля для банковского сектора (менее $407M). однако когда-то пробывали получить распечатку со счета, например Ханзабанка, в часа 2 ночи или сделать платеж? не верю, за лет 8 в хансе лично я ни разу не столкнулся с не работающим инет банком. читал только в газетах, что они когда-то обновили ПО неудачно и несколько часов лежали. а в 2 часа ночи суботы снимать деньги с банкомата у меня обычное явление. к стате у них была хорошая фича можно было послать смс и получить баланс своего счета, но почему-то отрубили ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 22:23 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Yo.! разве, что в мечтах. даже если сложить продажи всех субд сайбеза и посчитать, что все они проинсталированы в банках, то получится смешная доля для банковского сектора (менее $407M). это вы можите "бабушкам из соседнего подьезда" рассказывать про операции сложение и банковский сектор... :)) кстати, если о деньгах, то цена акций Sybase уже как перешли уровень цены 2000-года, что не скажеш про Oracle. ;) Yo.! не верю, за лет 8 в хансе лично я ни разу не столкнулся с не работающим инет банком. читал только в газетах, что они когда-то обновили ПО неудачно и несколько часов лежали. а в 2 часа ночи суботы снимать деньги с банкомата у меня обычное явление. к стате у них была хорошая фича можно было послать смс и получить баланс своего счета, но почему-то отрубили ... ваше дело, вереть-не-верить :)) не так активно пользуетесь! деньги снимать с банкомата это другая история за прошлый месяц, например, получил сообщение типа "Невозможно выполнить операцию. Попробуйте через 2 часа.", и так два раза! Наверное "удачно" попал на maintenance :)) а вы тут про версионность и т.д. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 22:58 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Yo.! в 2 часа ночи суботы снимать деньги с банкомата у меня обычное явление. для справки: для retail бизнеса как правило maintenance делают в середине недели, а для corporate - на выходных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 23:03 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
2 Yo.! а где вы работаете? Может друзья-моих-друзей знают Вас!? :) Можите сказать, например, 3-ю букву в названии компании, и 2-ую букву в названии улицы , для консперации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2008, 23:07 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
однако пишет: Господа, прошу сворачивать банковскую тематику, и вести беседу ближе к делу, т.е. к топику. Я на 100% уверен, что никакая предметная область, ни банковская, ни какая-то ещё, не выдвигает сама по себе какие-то требования к изоляции транзакций в СУБД. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 00:30 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
MasterZiv Господа, прошу сворачивать банковскую тематику, и вести беседу ближе к делу, т.е. к топику. Я на 100% уверен, что никакая предметная область, ни банковская, ни какая-то ещё, не выдвигает сама по себе какие-то требования к изоляции транзакций в СУБД. Прошу прощения застоль отдаление от данного топика... Увы, но не могу не Модератор: не с глаголами пишется раздельно :-) согласиться, что уровень изоляций транзакций не влияет на предметную область. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 00:40 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Подскажите почему даже на уровне 0 всеравно выставляется шаре-блокировка при "select into"? И можно ли это побороть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 15:50 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
И еще интересное наблюдение! Если делаеш select into всей таблицы (без джойнов, групировок и всей шняги) , то запрос на вставку отрабатывае мгновенно! тупо: Код: plaintext В принципе это можно за секунды вылевать в времянки данные а затем работать с ними не блокируя(шаре-блокировка) всех остальных! Поправте если ошибся! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 16:33 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
cherrex_DenПодскажите почему даже на уровне 0 всеравно выставляется шаре-блокировка при "select into"? И можно ли это побороть! см. сюды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 17:00 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
morisсм. сюды Спасибо! выход с курсором я не ожидал! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. За что я люблю ASE, так это за то что, при любой игре у него найдется туз в руаве! (прям стихи ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 17:21 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Помню, что столкнулся в асе 12,5 с такой траблой: при грязном чтении, запрос должен был обязательно использовать PK. Из-за этого про уровень 0 пришлось забыть. все наши на www.corba.kubsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 17:57 |
|
||
|
Применим прицип Oracle к ASE
|
|||
|---|---|---|---|
|
#18+
Ggg_old wrote: > Помню, что столкнулся в асе 12,5 с такой траблой: при грязном чтении, > запрос должен был обязательно использовать PK. Из-за этого про уровень 0 > пришлось забыть. Ну, положим, не PK, а любой уникальный индекс, и вовсе не обязательно - неуникальный можно указать хинтами оптимизатору, сам он выбирать неуникальный не будет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 18:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=55&tid=2011453]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
135ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 404ms |

| 0 / 0 |
