Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
А по существу вопроса Сталкер совершенно прав - transaction log предусматривает СИНХРОННУЮ запись, поэтому писать туда надо как можно меньше. Отсюда и вытекает тот факт, что писать туда версии данных несколько неумно. А происходит это потому, что undo и redo исторически хранятся в MSSQL вместе как единое целое. Было бы 2 отдельных журнала, тогда можно было б undo-журнал использовать для хранения версий (навскидку, undo-данные писать синхронно не обязательно, достаточно только redo, хотя возможно я где-то и просчитался) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 16:30 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
2 StalkerS Например, строка в данный момент меняется, и заблокирована эксклюзивной блокировкой. Причем меняется только одно поле, а остальные не затрагиваются. Соответственно, в логе имеются данные об изменении этого поля и все. Ну получите вы их, а потом ? Значения остальных полей-то откуда брать ? Прямо из таблицы - они ж не затрагиваются Разрешать такой транзакции читать в обход блокировки? Первый раз читается в обход блокоровки и из лога, потом записывать в tempdb А как быть с цепочками версий? А их уже и хранить в tempdb Я-же говорю, можно было-бы всю запись в лог пихать, но тут это неоптимально получиться, потому-что лог оптимизирован для последовательной записи. Зато не надо в два места писать. Можно было бы лог как-то оптимизировать SergSuper не совсем: не все, версии делают только snapshot-транзакции это еще почему ? Разве вы не в курсе, что из себя представляет snapshot ? При ее запуске, все изменения замораживаются, т.е. она видит согласованный срез данных на время старта. Например, какая-нибудь транзакция (напр. read committed) меняет запись. В это время запустилась snapshot, и ей нужна данная запись. Она ее возьмет из tempdb, т.к. сама запись заблокирована. Более того, если теперь зафиксировать первую транзакцию, а из snapshot опять прочитать ту запись, то опять вернется старое значение, не смотря на то, что первая транзакция уже зафиксирована. И все время, пока snapshot жива и здорова, версии лежат в tempdb, даже если запись меняется много раз разными транзакциями. Т.е. вы только подтвердили что я написал: версии делают только snapshot-транзакции Ну вобщем ни одного аргумента от вас, которые бы поколебали мою точку зрения я не увидел, только всё по кругу идём. 2 hvlad Ну почитал я на ibase.ru что написано - примитив, это и так было понятно. К тому же мы о реализации говорим, а в MS SQL она в корне другая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 17:38 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
авторА происходит это потому, что undo и redo исторически хранятся в MSSQL вместе как единое целое. Было бы 2 отдельных журнала, тогда можно было б undo-журнал использовать для хранения версий (навскидку, undo-данные писать синхронно не обязательно, достаточно только redo, хотя возможно я где-то и просчитался) Верится с трудом. DB2 и Oracle реализуют запись в лог используя алгоритм ARIES. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 17:46 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
SergSuper2 hvlad Ну почитал я на ibase.ru что написано - примитив, это и так было понятно. К тому же мы о реализации говорим, а в MS SQL она в корне другаяСудя по тому, что я здесь читаю - не только не примитив, но вообще непонятое. Насчёт другой реализации в Юконе - не смешите мои тапочки. Конечно она другая - такой смеси блокировок и версий ещё никто не придумывал Только вот у них даже термины и заголовок записи практически совпадают... случайно конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 17:48 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Упс недописал. основное положение ARIES это реализация WAL (Write Ahead Logging) протокола. То бишь данные на диск попадут асихронно и позже записи в журнал (что синхронно. undo по форме выглядит как тот же самый redo. То есть это все цепочка redo и undo выглядет как единое целое. И часть есдиного целого не может писаться на диск с асинхронно. Опять же можно представить ситуацию когда весь буфферный пул (буффер cache кажется так в MS) будет полностью занят измененными страницами. Нам требуется с диска положить в буфферный пул страницу Тогда потребуется синхронная запись грязной страницы на диск у которой запись в журнал произошла ранее. тогда в в решении которое предлагаешь ты (асинхнонно писать undo) будет нарушаться WAL и честно мне пока в голову не приходит идея как это решить. Можно конечно в случае версионности скидывать эту страницу в tempdb, но что тогда будет происходить с производительностью... Короче у этой идеи на мой взгяд больше минусов чем плюсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 18:06 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
nkulikovКороче у этой идеи на мой взгяд больше минусов чем плюсов. Возможно :) Это мне так, на уровне концепции в голову пришло, я совершенно не настаиваю. Тем не менее, я сомневаюсь, что Оракл пишет в undo tablespace синхронно, вы уверены в этом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 18:21 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
У Оракла другая архитектура журнaлирования. В редо оказываются данные после коммита. А все промежуточные данные варятся в undo-tablespaces. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 18:56 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
nkulikovУ Оракла другая архитектура журнaлирования. В редо оказываются данные после коммита. А все промежуточные данные варятся в undo-tablespaces. Ну вот о чем и речь - если бы MS SQL изначально был сделан как Оракл, то можно было бы версионность делать как в Оракле. А так получилось уж как получилось, и по-другому не выйдет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 19:05 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Пожалуй это всё и объясняет. Т.е. для единообразия работы данные для отката пишутся не только в лог, но и в tempdb, т.е. идёт дублирование данных. Вообще-то выглядит как атовизм и скорее всего в следующих версиях тогда команда перевода в версионный режим будет убрана Ubrana ona mozet bitj tolko v tom sluchae , esli MS SQL polnostju perestanet rabotatj kak chistij blokirovochnik. Vot togda ne nuzno budet pisatj starie dannie blja rollbak v tranzaction log- oni pishutsa c tempdb. Значения остальных полей-то откуда брать ? Прямо из таблицы - они ж не затрагиваются Kak za ne zatragivajutsa, pri update zablokirovana vsja zapisj, kak serveru ponjatj kakoe pole sejchas izmenjaetsa ? Smotretj v log ? Poka v log polezet, mozet drugoe pole v toj ze zapisi nachnut update delatj. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 19:15 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
U MS SQL eto pervaja versija DB rabotajushaja s versijami, mozet vozmoznostj vkluchitj/vikluchitj prosto podstrahovka na sluchaj esli chto ne tak pojdet ? Esli versionnostj budet korrktno rabotatj, to mozet v sledujushej versii SQL ne budet starogo rezima raboti, vot togda i arhitektura redo/undo budet kak u oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 19:20 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
nkulikovУ Оракла другая архитектура журнaлирования. В редо оказываются данные после коммита. А все промежуточные данные варятся в undo-tablespaces. Не обязательно после коммита, в реду Оракл пишет постоянно и пишет векторы изменений. При коммите он пишет просто маркер (commit record), благодаря чему коммит происходит очень быстро независимо от продолжительности транзакции и нет необходимости подкоммичивать как это любят делать разработчики под блокировочники. А в undo хранятся снэпшоты старых версий блоков. Кстати изменения в undo tablespaces тоже журналируется в redo независимо от коммита. Например после падения системы незакомиченная транзакция отказтывается так - применяются redo векторы к данным - применяются redo векторы к undo данным - восстановленное undo используется для отката незакомиченной оборвавшейся транзакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 20:12 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
nkulikovУ Оракла другая архитектура журнaлирования. В редо оказываются данные после коммита. А все промежуточные данные варятся в undo-tablespaces. Чушь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 20:14 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
все правильно, читаем класиков Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. (C) Tom Kyte ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 20:45 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Вместо того что-бы говорить "чушь'. Нужно как миниму показать, где написано что это не так. Хотя стоит признать, что я сильно утрировал. И потом в DB2 время коммита тоже не зависит от размера транзакции. Нужно только буфер журнала сбросить и блокировки в памяти почистить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 21:20 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Да кстати прошу прощения за неточность. В смысле, что данные в журнал пишутся после коммита. Я имел в виду данные необходимые для коммита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 21:28 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
nkulikovВместо того что-бы говорить "чушь'. Нужно как миниму показать, где написано что это не так. Хотя стоит признать, что я сильно утрировал. У меня нет времени и желания это делать. Моя цель - сказать несведущим гражданам, что эта информация ложна, вводит в заблуждение в том числе и способом еще подачи, не вызывающим у автора сомнений в своей правоте. А значит это - чушь. Прочитать можно, например, в Oracle Concepts. nkulikovДа кстати прошу прощения за неточность. В смысле, что данные в журнал пишутся после коммита. Я имел в виду данные необходимые для коммита . ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 21:55 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Фифа nkulikovУ Оракла другая архитектура журнaлирования. В редо оказываются данные после коммита. А все промежуточные данные варятся в undo-tablespaces. Чушь Оленька, это не Вы случайно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 00:15 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
nkulikovДа кстати прошу прощения за неточность. В смысле, что данные в журнал пишутся после коммита. Я имел в виду данные необходимые для коммита. Николай, раньше ты выражался точнее и корректнее, вспоминая жаркую тему на форуме ДБ2 про Оракл. Что есть данные для коммита? Для коммита нужен только маркер (коммит рекорд) и всё, всё остальное просто вектора измененийкак закомиченных так и нет. Даже при откате транзакции, данные в реду логах остаются. Наличие или отсутсвие этого маркера и служит меткой, были закомичены те или иные изменения или нет. В чем ты прав вспоминая опять же ту тему, так это в том что Оракл генерит чрезмерно много выхлопных газов (реду логов), в частности реду генерится даже при select for update что логично так при блокировках изменяются блоки (лок манагера нету, блокировка просто атрибут данных). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 00:23 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Вместо того, чтобы спорить о том, как кто устроен, Хоть бы раз последовательно доказали что что версионник лучше блокировочника на примере какой-либо конкретной задачи. Ведь в результате окажется что версионность - это только накладные расходы, а выгоды в производительности (дескать читатель не блокирует писателя) от этого - весьма и весьма сомнительны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:14 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
gardenmanВместо того, чтобы спорить о том, как кто устроен, Хоть бы раз последовательно доказали что что версионник лучше блокировочника на примере какой-либо конкретной задачи. Ведь в результате окажется что версионность - это только накладные расходы, а выгоды в производительности ( дескать читатель не блокирует писателя ) от этого - весьма и весьма сомнительны. Вот ты сам и ответил. Если ты не понимаешь преимуществ неблокирующего чтения, то трудно что то объяснять. - Нет дедлоков из за чтения - Нет эскалаций блокировок - Не нужно вводить вспомогательные таблицы что избежать блокировок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 11:27 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
gardenmanВместо того, чтобы спорить о том, как кто устроен, Хоть бы раз последовательно доказали что что версионник лучше блокировочника на примере какой-либо конкретной задачи. Ведь в результате окажется что версионность - это только накладные расходы, а выгоды в производительности (дескать читатель не блокирует писателя) от этого - весьма и весьма сомнительны. Конкретная задача - получение консистентных отчетов в реальном времени без тотального ухудшения масштабируемости системы. В блокировочной схеме ради этого столько уловок придумано, что просто любо-дорого смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:00 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
Желтoпузый дьявoл gardenmanВместо того, чтобы спорить о том, как кто устроен, Хоть бы раз последовательно доказали что что версионник лучше блокировочника на примере какой-либо конкретной задачи. Ведь в результате окажется что версионность - это только накладные расходы, а выгоды в производительности ( дескать читатель не блокирует писателя ) от этого - весьма и весьма сомнительны. Вот ты сам и ответил. Если ты не понимаешь преимуществ неблокирующего чтения, то трудно что то объяснять. - Нет дедлоков из за чтения - Нет эскалаций блокировок - Не нужно вводить вспомогательные таблицы что избежать блокировок По блокировкам все понятно. А вот по производительности, действительно, не ясно, MS SQL, DB2 и Oracle судя по всем тестам приблизительно равны. То есть, очевидных преимуществ по скорости нет ни у кого... На Win так нередко MS SQL быстрее всех. Так что, не все так просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 13:22 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
AlexCzech gardenmanВместо того, чтобы спорить о том, как кто устроен, Хоть бы раз последовательно доказали что что версионник лучше блокировочника на примере какой-либо конкретной задачи. Ведь в результате окажется что версионность - это только накладные расходы, а выгоды в производительности (дескать читатель не блокирует писателя) от этого - весьма и весьма сомнительны. Конкретная задача - получение консистентных отчетов в реальном времени без тотального ухудшения масштабируемости системы. В блокировочной схеме ради этого столько уловок придумано, что просто любо-дорого смотреть ОК! Предположим, вы получаете баланс предприяния (ну или банка). Отчет формируется минут 15... (на самом деле - быстрее, ну это у кого как) В результате на версионнике у вас все ок!- дебет с кредитом сходится. Запускаете этот же отчет снова, через одну минуту. И, что? получаете другие цифры?... Если нет (цифры одинаковы) - значит данные по которым вы формируете отчет - стабильны. А смысл в версионности в этом случае? А вот если вы получите другие цифры - значит данные поменялись, и глав бух пишет телегу вашему шефу и в лучшем случае - выговор + 50% лишения премии. Мысль такова - что долгоиграющие отчеты по нестабильным данным - обсолютно не имеют смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 13:40 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
michael_ По блокировкам все понятно. А вот по производительности, действительно, не ясно, MS SQL, DB2 и Oracle судя по всем тестам приблизительно равны. То есть, очевидных преимуществ по скорости нет ни у кого... На Win так нередко MS SQL быстрее всех. Так что, не все так просто. Это потому, что сложно найти задачу, которая бы могла быть решена эффективно в одной СУБД но не могла бы в другой. СУБД достаточно развиты и есть куча приемов и подходов для разных случаев. Но у каждого приёма есть свои drawbacks, версионность стоит доплнительного места на диске и дополнительного реду на них. Блокировочник чреват эскалациями, дедлоками, ожиданиями и немаштабируемостью. При дизайне апликухи нужно эти особенности учитывать. Например совсем недавно на Оракл обсуждалось что приложение уж слишком много генерит реду информации из за неудачного дизайна. Log фалы - генерится большой объём - можно как-то уменьшить? На MS SQL часты темы как отлавливать, предотвращать уменьшать вероятность появления блокировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 13:40 |
|
||
|
Появление версионника в Yukon лишает Oracle всяких преимуществ!
|
|||
|---|---|---|---|
|
#18+
gardenman Мысль такова - что долгоиграющие отчеты по нестабильным данным - обсолютно не имеют смысла. Вы это лучше не мне рассказывайте, а гендиректору клиента, который запросил оборотно-сальдовую ведомость, и у него по дебету получилось 2 миллиона, а по кредиту 2 миллиона 15 копеек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 13:53 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33062262&tid=1553871]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 423ms |

| 0 / 0 |
