Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Теоретический вопрос.  [new]
Evgeshka
Member

Откуда: Украина
Сообщений: 1067
Что такое консистентное состояние БД?
20 апр 07, 15:45    [4049621]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Когда выполняются все ограничения целостности в ней.

Posted via ActualForum NNTP Server 1.4

20 апр 07, 16:06    [4049842]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
Evgeshka
Что такое консистентное состояние БД?


Когда все изменения, произведенные в БД, синхронизированны с файлами на дисках.
23 апр 07, 10:43    [4055570]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
Изопропил
Member

Откуда:
Сообщений: 31627
!
Evgeshka
Что такое консистентное состояние БД?


Когда все изменения, произведенные в БД, синхронизированны с файлами на дисках.

Интересно, а если СУБД без дисков?

А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?
23 апр 07, 14:13    [4057104]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
const64
Member

Откуда:
Сообщений: 789
Насколько я помню, по русски это непротиворечивое.

К примеру, когда нет незавершенных транзакций (все или приняты, или откачены). В отсутствие физических сбоев носителей.

Оганичения целостности могут, кстати, выполняться, но база находится в инконсистентном состоянии (ИМХО).
23 апр 07, 14:27    [4057253]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

const64

Оганичения целостности могут, кстати, выполняться, но база находится в
инконсистентном состоянии (ИМХО).

Пример в студию!

Posted via ActualForum NNTP Server 1.4

23 апр 07, 14:29    [4057276]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
tru55
Member

Откуда: СПб
Сообщений: 19788
А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?

Будем (хотя бы условно :) ).
Если база в этот момент грохнется, то при запуске данные будут неконсистентны. Другое дело, что путем наката журнальной информации она БУДЕТ доведена до консистентного состояния
23 апр 07, 14:38    [4057360]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
Изопропил
!
Evgeshka
Что такое консистентное состояние БД?


Когда все изменения, произведенные в БД, синхронизированны с файлами на дисках.

Интересно, а если СУБД без дисков?

А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?


А это в какой СУБД так происходит?

----------
Еврейский SQL сервер отвечает запросом на запрос.
23 апр 07, 14:44    [4057423]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
Изопропил

Интересно, а если СУБД без дисков?


Когда не установлено ни одного мутекса(латча, семафора .....) на изменение данных
в памяти СУБД.
23 апр 07, 15:01    [4057571]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
tru55
Member

Откуда: СПб
Сообщений: 19788
!
Изопропил
!
[quot Evgeshka]Что такое консистентное состояние БД?


Когда все изменения, произведенные в БД, синхронизированны с файлами на дисках.

Интересно, а если СУБД без дисков?

А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?


А это в какой СУБД так происходит?
[quot]

Например, в Oracle в общем случае журнальный буфер скидывается на диск чаще данных
23 апр 07, 15:18    [4057728]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
pavelvp
Member

Откуда:
Сообщений: 673
!
Изопропил
А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?
А это в какой СУБД так происходит?

Во всех.
23 апр 07, 15:37    [4057873]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
const64
Member

Откуда:
Сообщений: 789
Dimitry Sibiryakov

const64

Оганичения целостности могут, кстати, выполняться, но база находится в
инконсистентном состоянии (ИМХО).

Пример в студию!
Posted via ActualForum NNTP Server 1.4


Согласен, это я загнул :(( (Точнее, перепутал с допустимостью...)

По Дейту: "Под понятием непротиворечивости ... мы подразумеваем отсутствие нарушений каких-либо ограничений целостности."
Дейт К.Дж., "Введение в системы баз данных", издание 8, глава 15, с.577.

Думаю, для "теоретического вопроса" этого достаточно...
23 апр 07, 15:53    [4058002]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
tru55
!
Изопропил
[quot !][quot Evgeshka]Что такое консистентное состояние БД?


Когда все изменения, произведенные в БД, синхронизированны с файлами на дисках.

Интересно, а если СУБД без дисков?

А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?


А это в какой СУБД так происходит?


Например, в Oracle в общем случае журнальный буфер скидывается на диск чаще данных


По поводу частичной консистентности вобщем я с Вами полность согласен.

НО консистентной либо есть либо ее нет(частично не считается).

Не понятно какого уровня консистентность автор имел ввиду. И какую СУБД.



Я, например, не совсем понимаю откуда при накатке журналов Oracle узнает,
что транзакция уже закомичена, если информация о комите умерла
в логбуфере при смерти экземпляра.

Либо буфер сбрасывается по каждому комиту,
либо сбрасывается выборочно для конкретного SCN.

Если информация о комите сохранена в redo, а блоки с даннми нет, то
при востановлении консистентности блоки с данніми должны быть опять загружены
в буферный пул, и изменены поворно в соответсвии с информацией из журнала.
Значит в журнале должна быть информация о том какие блоки синхронизированы а какие нет.

Буду благодарен за ссылки раскрывающие эту тему.
23 апр 07, 16:14    [4058227]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
tru55
Member

Откуда: СПб
Сообщений: 19788
Если конкретно про Oracle, то он оч-ч-чень трепетно относится к журнальной информации, поэтому достаточно часто скидывает журнальный буфер на диск
- при каждом commit
- каждые 3 сек
- при накоплении 1М инфы
- при заполнении буфера на 1/3
23 апр 07, 16:42    [4058556]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
pavelvp

Во всех.


Не верю, см. сообщение выше.
23 апр 07, 16:44    [4058576]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
pavelvp
Member

Откуда:
Сообщений: 673
!
pavelvp

Во всех.


Не верю, см. сообщение выше.
Возможно моя фраза была неправильно понята. Речь шла о том, что состояние "блоков данных" - записаны они на диск или нет - никак на непротиворечивость не влияет. Данные на диск могут быть и не записаны.
23 апр 07, 17:36    [4058963]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17472
автор
Я, например, не совсем понимаю откуда при накатке журналов Oracle узнает,
что транзакция уже закомичена, если информация о комите умерла
в логбуфере при смерти экземпляра.

неповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.
24 апр 07, 15:52    [4063553]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
ScareCrow
автор
Я, например, не совсем понимаю откуда при накатке журналов Oracle узнает,
что транзакция уже закомичена, если информация о комите умерла
в логбуфере при смерти экземпляра.

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


А как же консистентность?
24 апр 07, 16:54    [4064071]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
pavelvp
Member

Откуда:
Сообщений: 673
!
ScareCrow
неповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.

А как же консистентность?

Ты прикидываешься или издеваешься?
Всё хорошо будет. В базе останутся только зафиксированные транзакции.
24 апр 07, 18:52    [4064859]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
!
Guest
pavelvp
!
ScareCrow
неповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.

А как же консистентность?

Ты прикидываешься или издеваешься?
Всё хорошо будет. В базе останутся только зафиксированные транзакции.


Я прекрасно понимаю, что база будет консистентна относительно последнего
комита попавшего в redo.

Но реально это не последний комит.
Что бы этого избежать( частично ) нужно играться с параметрами типа

FAST_START_MTTR_TARGET

или

LOG_CHECKPOINT_TIMEOUT
LOG_CHECKPOINT_INTERVAL
FAST_START_IO_TARGET

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

тынц сюда

з.ы. Продолжаю самообразовываться.

Сообщение было отредактировано: 6 май 13, 17:24
24 апр 07, 19:09    [4064925]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
pavelvp
Member

Откуда:
Сообщений: 673
!
Я прекрасно понимаю, что база будет консистентна относительно последнего
комита попавшего в redo.

Но реально это не последний комит.
Что бы этого избежать( частично ) нужно играться с параметрами типа

Уж и не знаю что ты там вычитал про Oracle, но если приложение подало commit и на этот коммит вренулся успешный код завершения, то этот "последний commit" должен быть в базе (при условии, что журнал не был уничтожен направленным взрывом).
Если же это не так - не соблюдаются требования ACID - ВЫКИНУТЬ НАФИГ ТАКУЮ СУБД!!!

А для сомообразования можно почитать про WAL, ARIES, ну и конечно же Transaction Processing Грея.
24 апр 07, 21:06    [4065329]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67433
Блог
pavelvp
Уж и не знаю что ты там вычитал про Oracle, но если приложение подало commit и на этот коммит вренулся успешный код завершения, то этот "последний commit" должен быть в базе (при условии, что журнал не был уничтожен направленным взрывом).

С идеологической точки зрения я с Вами согласен, но в какой-то момент Oracle решил дать инструмент работы с двумя типовыми ситуациями:

1. Какой-то идиот написал адекватный себе код, например, миллиона инсертов с autocommit=true.
2. Идет очень большое изменение, по техническим причинам разбиваемое промежуточными commit-ами, скажем, ETL.

Так появились http://www.oracle-base.com/articles/10g/Commit_10gR2.php
24 апр 07, 23:15    [4065656]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
const64
Member

Откуда:
Сообщений: 789
Гораздо интереснее выглядит консистентность в распределенных БД.

К примеру, часть узлов м.б. в непротиворечивом состоянии, часть - нет. Тогда как можно определить состояние всей БД? А если еще при проектировании заложена избыточность данных, и данные неконсистентных узлов перекрываются данными консистентных?


Либо, можно рассмотреть репликацию БД. При каких условиях реплика будет консистентной, если основная БД - нет?
26 апр 07, 06:55    [4071601]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

const64

Либо, можно рассмотреть репликацию БД. При каких условиях реплика будет
консистентной, если основная БД - нет?

При условии, что основная БД поддерживает ACID, т.е. ее невозможно
увидеть "со стороны" в неконсистентном состоянии.

Posted via ActualForum NNTP Server 1.4

26 апр 07, 09:36    [4071927]     Ответить | Цитировать Сообщить модератору
 Re: Теоретический вопрос.  [new]
10046
Member

Откуда: oraus.msg
Сообщений: 877
!
Буду благодарен за ссылки раскрывающие эту тему.

Сам напросился

!
Либо буфер сбрасывается по каждому комиту,
либо сбрасывается выборочно для конкретного SCN.

redo_write_triggers

!
Если информация о комите сохранена в redo, а блоки с даннми нет, то
при востановлении консистентности блоки с данніми должны быть опять загружены
в буферный пул, и изменены поворно в соответсвии с информацией из журнала.
Значит в журнале должна быть информация о том какие блоки синхронизированы а какие нет.

Что хранится в редо
InternalsOFrecovery1
InternalsOFrecovery2

!
Я, например, не совсем понимаю откуда при накатке журналов Oracle узнает,
что транзакция уже закомичена, если информация о комите умерла
в логбуфере при смерти экземпляра.

!
Я прекрасно понимаю, что база будет консистентна относительно последнего
комита попавшего в redo.

Но реально это не последний комит.
Что бы этого избежать( частично ) нужно играться с параметрами типа

FAST_START_MTTR_TARGET

или

LOG_CHECKPOINT_TIMEOUT
LOG_CHECKPOINT_INTERVAL
FAST_START_IO_TARGET

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

Бред
За это отвечает недокументированный _WAIT_FOR_SYNC, и играться с ним я не рекомендую. В 10-ке появилась документированная фишка, про которую уже сказал softwarer.
26 апр 07, 10:12    [4072161]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить