|
|
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
NETClientд0kХВозмите любой блокировочник , поставьте режим грязного чтения ваш результат будет не хуже.Как?! Но ведь согласованное чтение закоммиченных данных и грязное чтение - не одно и то же. А абзац про консистентность - прости, не осилил. согласованное относительно одной пользовательской сессии , не значит что изменения сделанные на основании этого одного согласованного чтения будут согласованы с ожидаемым поведением бизнес логики при изменении данных. Для того что бы реально согласовать чтения и изменения оракл придумал неявный рестарт транзакций , что бы не отсупать от своей логики согласованного чтения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:13 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Попытаюсь по порядку. д0kХБлокировчник вешает блокировку на всю глубину транзакции и даже дальше если ему это сказал программист.Не представляю, как с этим работать. Видимо потому что не сталкивался. д0kХОракл по умолчанию никак не гарантирует согласованность данных между несколькими запросами внутри транзакции.Но тем не менее позволяет сделать это без блокировок, хотя конечно есть нюансы. д0kХТолько одним джоином на транзакцию в for update курсоре с изменением по where curent of или переходом в сериализейбл, что совсе грустно для много пользовательского режима.Опять не понимаю. Видимо нужно разбирать на примере. д0kХЕсли программист в оракле работает по другому , это аналогично режиму грязного чтения в блокировчнике.Oracle никогда не читает незакоммиченных данных другой сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:16 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
NETClientaist-pskне здох , живёт под крылом IBM : текущая версия IDS 12 А что IBM больше любит: Informix или DB2? IBM любит деньги : пока клиентов много на IDS (в масштабе земли ) , остальное не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:19 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Но при чем тут Subj? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:19 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровНо при чем тут Subj?Буду общаться со своим другом пока не выгонят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:21 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХсогласованное относительно одной пользовательской сессии , не значит что изменения сделанные на основании этого одного согласованного чтения будут согласованы с ожидаемым поведением бизнес логики при изменении данных. Опять не уверен, что правильно тебя понял. Оракл не блокирует данные, там где это реально не нужно. Если необходимо, чтобы данные не менялись с момента чтения - то есть блокировки различного уровня: от строк до всей таблицы целиком. д0kХДля того что бы реально согласовать чтения и изменения оракл придумал неявный рестарт транзакций , что бы не отсупать от своей логики согласованного чтения.Речь о чем? Snapshot too old или statement restart? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:24 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
NETClientПопытаюсь по порядку. д0kХБлокировчник вешает блокировку на всю глубину транзакции и даже дальше если ему это сказал программист.Не представляю, как с этим работать. Видимо потому что не сталкивался. д0kХОракл по умолчанию никак не гарантирует согласованность данных между несколькими запросами внутри транзакции.Но тем не менее позволяет сделать это без блокировок, хотя конечно есть нюансы. д0kХТолько одним джоином на транзакцию в for update курсоре с изменением по where curent of или переходом в сериализейбл, что совсе грустно для много пользовательского режима.Опять не понимаю. Видимо нужно разбирать на примере. д0kХЕсли программист в оракле работает по другому , это аналогично режиму грязного чтения в блокировчнике.Oracle никогда не читает незакоммиченных данных другой сессии. Правильно , оракл читает предыдущую версию. Если другая сессия закомитится раньше , а потом эта сессия изменит закомиченную записть на основании предыдущей версии, все приплыли. Есть 2 пользвательский сессии и 3 счета. нужно с одной счета перекинуть по 10 рублей на 2 других. остаток на нем 100 рублей первая читает 100 рублей отнимате 10 и пошет в остаток 90 в это время другая читает предцдущую версию - 100 рублей и пишет в остаток 90. Комитится первая комитится вторая . на счету должно быть 80 рублей , а у нас 90. что бы избежать этого артефакта остаток по счету где 100 рублей нужно читать в режиме select for update в всех сессиях кто планирует менять остатки . и изменять никак по другому как через where curent of ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:26 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХособенно ОЛТП , с лост апдетами. Разница меджу блокировчником и ораклом для ОЛТП только в том что блокировочник ведет себя всегда в режиме ораклового select .... for update на всю транзакцию. Бл-ники не юзал, но разве не то чтобы на всю транзакцию, а даже просто на чтение? д0kХПопробуйте в оракле for update используя where current of закомитить запись и сделать следующий фетч. Привет ORA-01002 Зачем то, что делать не надо или надо делать по-другому? ) д0kХЕсли вы комитетесь в курсоре и не используете where current of то за первым же комитом внутри цикла вы слетаете с блокировок и хваленой оракловой консистентности в говнокод. Зачем "комиться в курсе" чтобы "слетать с блокировок"? Транзакиця она ж на то и есть, чтобы закомититься один раз, когда надо. Нюансы могут быть на больших объемах, но если речь про OLTP, то нипанятна ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:27 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровМне вот более ближе война не между блокировочниками и версионниками, а между привычной работой по одной записи и ПРАВИЛЬНОЙ С ORACLE работой с множествами Так случилось, что нашим программистам приходится вести две системы -- на BTrieve и на Oracle, причем на BTrieve -- первичная, поэтому на Oracle они построили примерно такие-же структуры (и синхронизируют их) и, соответственно, работают как и в BTrieve -- row by rowЯ не знаю за всех блокировочников, но в MSSQL чтоб читатели не блокировали есть костыль WITH (NOLOCK), чтоб писатели не блокировали - можно менять уровень изоляции c 2005 (версионность реализована через жопу tempdb). Поэтому в параллельной теме я и обращал внимание на понимание уровней изоляции что вылилось в обсуждение деталей автономок. Не совсем понятно как подобные детали обязяывают применять row by row... скорее причина в том, что у авторов было искривление мозгов на почве java, шарпа или типа того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:31 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХОракл по умолчанию никак не гарантирует согласованность данных между несколькими запросами внутри транзакции. Это как так? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:31 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
NETClientВячеслав ЛюбомудровНо при чем тут Subj?Буду общаться со своим другом пока не выгонят.Жаль, что твой друг закодировался от ПТ, ему там самое место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:32 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopЖаль, что твой друг закодировался от ПТ, ему там самое место.Оставлю без комментариев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:34 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХЭто как так? ) Ну дак это... По умолчанию да, но а уровни изолированности транзакции? А оптимистичное "блокирование" против select for update? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:36 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХПравильно , оракл читает предыдущую версию. Если другая сессия закомитится раньше , а потом эта сессия изменит закомиченную записть на основании предыдущей версии, все приплыли. Есть 2 пользвательский сессии и 3 счета. нужно с одной счета перекинуть по 10 рублей на 2 других. остаток на нем 100 рублей первая читает 100 рублей отнимате 10 и пошет в остаток 90 в это время другая читает предцдущую версию - 100 рублей и пишет в остаток 90. Комитится первая комитится вторая . на счету должно быть 80 рублей , а у нас 90. что бы избежать этого артефакта остаток по счету где 100 рублей нужно читать в режиме select for update в всех сессиях кто планирует менять остатки . и изменять никак по другому как через where curent of Друг, не хочу тебя обидеть, но как-то ты непонятно пишешь. Если бы ты по шагам описал, что и в какой момент делает каждая из двух сессий, то я бы постарался обсудить с тобой этот сценарий. А то неясно, что такое д0kХ100 рублей отнимате 10 и пошет в остаток 90 и где собственно апдейт тех счетов, на которые совершается перевод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:38 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХпервая читает 100 рублей отнимате 10 и пошет в остаток 90Это типичная ошибка говнокодеров - устанавливать, а не изменять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:39 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopВячеслав ЛюбомудровМне вот более ближе война не между блокировочниками и версионниками, а между привычной работой по одной записи и ПРАВИЛЬНОЙ С ORACLE работой с множествами Так случилось, что нашим программистам приходится вести две системы -- на BTrieve и на Oracle, причем на BTrieve -- первичная, поэтому на Oracle они построили примерно такие-же структуры (и синхронизируют их) и, соответственно, работают как и в BTrieve -- row by rowЯ не знаю за всех блокировочников, но в MSSQL чтоб читатели не блокировали есть костыль WITH (NOLOCK), чтоб писатели не блокировали - можно менять уровень изоляции c 2005 (версионность реализована через жопу tempdb). Поэтому в параллельной теме я и обращал внимание на понимание уровней изоляции что вылилось в обсуждение деталей автономок. Не совсем понятно как подобные детали обязяывают применять row by row... скорее причина в том, что у авторов было искривление мозгов на почве java, шарпа или типа того.Не-не-не Это в принципе другое И вот они мучаются, бедные, а виноват во всем Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:40 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Мимобижалд0kХОракл по умолчанию никак не гарантирует согласованность данных между несколькими запросами внутри транзакции. Это как так? ) Это по концептам :) консистентность в режиме рид комитед распостраняется на момент старта каждого из запросов внутри транзакции. у следующего запроса внутри одной транзакции другой SCN и консистентность разных запросов считается от разных исходных, 2 запроса консистентны сами в себе , но с точки зрения транзакции данные получаемые этими запросами не консистентны. хотите консистентности на уровне транзакции идите в сериализейбл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:45 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХЭто по концептам :) консистентность в режиме рид комитед распостраняется на момент старта каждого из запросов внутри транзакции. у следующего запроса внутри одной транзакции другой SCN и консистентность разных запросов считается от разных исходных, 2 запроса консистентны сами в себе , но с точки зрения транзакции данные получаемые этими запросами не консистентны. хотите консистентности на уровне транзакции идите в сериализейбл.Какую задачу мы решаем? Сделать перевод со счета на два других? Для (банковских) систем - это всегда две разные транзакции. Каждая из них осуществляется одним update-запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:50 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
NETClientд0kХЭто по концептам :) консистентность в режиме рид комитед распостраняется на момент старта каждого из запросов внутри транзакции. у следующего запроса внутри одной транзакции другой SCN и консистентность разных запросов считается от разных исходных, 2 запроса консистентны сами в себе , но с точки зрения транзакции данные получаемые этими запросами не консистентны. хотите консистентности на уровне транзакции идите в сериализейбл.Какую задачу мы решаем? Сделать перевод со счета на два других? Для (банковских) систем - это всегда две разные транзакции. Каждая из них осуществляется одним update-запросом. Мы решаем задачу получения максимального параллелизма выполениния при сохранении целостности данных определенной бизнес логикой. С течки зрения банка , это баланс. с точки зрения ретейла , это соотвествие суммы значений по позициям чеках разнице остатков на складах и полках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 17:57 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХМы решаем задачу получения максимального параллелизма выполениния при сохранении целостности данных определенной бизнес логикой. С течки зрения банка , это баланс. Я не понимаю в чем проблема. На момент проведения транзакции два счета (точнее их балансы) будут неизбежно заблокированы на кратковременный срок ее проведения. Любая другая транзакция, в какой бы момент она не читала данные, всегда получит согласованное состояние. Чего я не понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 18:03 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХС течки зрения банка , это баланс. с точки зрения ретейла , это соотвествие суммы значений по позициям чеках разнице остатков на складах и полках.Есть опыт? Или так, прочитал чей-то высер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 18:06 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
NETClient Чего я не понимаю? как бы так помягче выразиться, фундаментального понимания процесса построения систем с высокой конкуренцией использования данных Инфа для общего развития и более глубокого погружения в тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 18:14 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудровд0kХС течки зрения банка , это баланс. с точки зрения ретейла , это соотвествие суммы значений по позициям чеках разнице остатков на складах и полках.Есть опыт? Или так, прочитал чей-то высер? За 20 + лет в ИТ опыта полно всякого и разного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 18:18 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
Ну, разнообразный опыт он совсем не тот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 18:24 |
|
||
|
Будущее профессии Oracle DBA
|
|||
|---|---|---|---|
|
#18+
д0kХ Инфа для общего развития и более глубокого погружения в тему Друг, на твою ссылку я уже сегодня натыкался, когда пытался найти для тебя разницу между iso-шным read commited и его ораколовой реализации. В твоей ссылке про read commited говорится только про чтение зафиксированных данных (даже упоминается Oracle), но нигде не говорится о согласованности чтения. Может быть весь этот сыр-бор от твоего не понимания этой разницы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 18:28 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39359604&tid=1886883]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 571ms |

| 0 / 0 |
