powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Теоретический вопрос.
25 сообщений из 26, страница 1 из 2
Теоретический вопрос.
    #34476510
Фотография Evgeshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое консистентное состояние БД?
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34476625
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда выполняются все ограничения целостности в ней.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34479549
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
EvgeshkaЧто такое консистентное состояние БД?

Когда все изменения, произведенные в БД, синхронизированны с файлами на дисках.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480338
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
! EvgeshkaЧто такое консистентное состояние БД?

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

А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480411
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню, по русски это непротиворечивое.

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

Оганичения целостности могут, кстати, выполняться, но база находится в инконсистентном состоянии (ИМХО).
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480423
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64
Оганичения целостности могут, кстати, выполняться, но база находится в
инконсистентном состоянии (ИМХО).

Пример в студию!
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480467
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?

Будем (хотя бы условно :) ).
Если база в этот момент грохнется, то при запуске данные будут неконсистентны. Другое дело, что путем наката журнальной информации она БУДЕТ доведена до консистентного состояния
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480489
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
Изопропил ! EvgeshkaЧто такое консистентное состояние БД?

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

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

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

----------
Еврейский SQL сервер отвечает запросом на запрос.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480581
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
Изопропил
Интересно, а если СУБД без дисков?


Когда не установлено ни одного мутекса(латча, семафора .....) на изменение данных
в памяти СУБД.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480677
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
! Изопропил ![quot Evgeshka]Что такое консистентное состояние БД?

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

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

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

Например, в Oracle в общем случае журнальный буфер скидывается на диск чаще данных
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480770
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
! ИзопропилА если журнал на диск записан, а блоки данных не записаны - состояние будем считать неконсистентным?А это в какой СУБД так происходит?
Во всех.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480860
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
const64
Оганичения целостности могут, кстати, выполняться, но база находится в
инконсистентном состоянии (ИМХО).

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

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

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

Думаю, для "теоретического вопроса" этого достаточно...
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34480985
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
tru55 ! Изопропил[quot !][quot Evgeshka]Что такое консистентное состояние БД?

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

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

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


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

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

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

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



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

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

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

Буду благодарен за ссылки раскрывающие эту тему.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34481140
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если конкретно про Oracle, то он оч-ч-чень трепетно относится к журнальной информации, поэтому достаточно часто скидывает журнальный буфер на диск
- при каждом commit
- каждые 3 сек
- при накоплении 1М инфы
- при заполнении буфера на 1/3
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34481152
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
pavelvp
Во всех.

Не верю, см. сообщение выше.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34481375
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
! pavelvp
Во всех.

Не верю, см. сообщение выше. Возможно моя фраза была неправильно понята. Речь шла о том, что состояние "блоков данных" - записаны они на диск или нет - никак на непротиворечивость не влияет. Данные на диск могут быть и не записаны.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34483917
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ, например, не совсем понимаю откуда при накатке журналов Oracle узнает,
что транзакция уже закомичена, если информация о комите умерла
в логбуфере при смерти экземпляра.
неповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34484176
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
ScareCrow авторЯ, например, не совсем понимаю откуда при накатке журналов Oracle узнает,
что транзакция уже закомичена, если информация о комите умерла
в логбуфере при смерти экземпляра.
неповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.

А как же консистентность?
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34484641
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
! ScareCrowнеповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.
А как же консистентность?
Ты прикидываешься или издеваешься?
Всё хорошо будет. В базе останутся только зафиксированные транзакции.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34484669
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
pavelvp ! ScareCrowнеповеришь. он об это мне узнает и откатит все изменения сделанные этой транзакцией.
А как же консистентность?
Ты прикидываешься или издеваешься?
Всё хорошо будет. В базе останутся только зафиксированные транзакции.

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

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

FAST_START_MTTR_TARGET

или

LOG_CHECKPOINT_TIMEOUT
LOG_CHECKPOINT_INTERVAL
FAST_START_IO_TARGET

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

тынц сюда

з.ы. Продолжаю самообразовываться.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34484818
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!Я прекрасно понимаю, что база будет консистентна относительно последнего
комита попавшего в redo.

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

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

А для сомообразования можно почитать про WAL, ARIES, ну и конечно же Transaction Processing Грея.
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34484942
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavelvpУж и не знаю что ты там вычитал про Oracle, но если приложение подало commit и на этот коммит вренулся успешный код завершения, то этот "последний commit" должен быть в базе (при условии, что журнал не был уничтожен направленным взрывом).
С идеологической точки зрения я с Вами согласен, но в какой-то момент Oracle решил дать инструмент работы с двумя типовыми ситуациями:

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

Так появились http://www.oracle-base.com/articles/10g/Commit_10gR2.php
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34488350
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гораздо интереснее выглядит консистентность в распределенных БД.

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


Либо, можно рассмотреть репликацию БД. При каких условиях реплика будет консистентной, если основная БД - нет?
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34488552
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64
Либо, можно рассмотреть репликацию БД. При каких условиях реплика будет
консистентной, если основная БД - нет?

При условии, что основная БД поддерживает ACID, т.е. ее невозможно
увидеть "со стороны" в неконсистентном состоянии.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Теоретический вопрос.
    #34488678
10046
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!Буду благодарен за ссылки раскрывающие эту тему.
Сам напросился

!Либо буфер сбрасывается по каждому комиту,
либо сбрасывается выборочно для конкретного 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.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Теоретический вопрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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