|
|
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
kdvодновременно существование двух разных committed версий одной и той же записи. имел в виду "параллельно существующих". потому что обычная цепочка версий это последовательно обновленная запись, версии которой учитываются только подряд. Т.е. сервер (ИБ-ФБ) всегда считывает пакет версий записи, и в соответствии с уровнем видимости для каждой транзакции склеивает версии в одну запись. допустим, есть запись с буквой А в столбце F. - update set F='Б', commit. появилась версия с Б, которая ссылается на версию с А - update set F = '5', commit появилась версия с 5, которая ссылается на версию с Б Если не касаться сборки мусора, то на диске хранится 3 версии одной записи со значениями А, Б и 5 в столбце. Read Committed при перечитывании будут видеть А, Б и 5 по мере обновления и commit. Если в самом начале была транзакция Snapshot, то она будет видеть только версию с А, и ничего больше. И после обновления кем-то записи на Б уже обновить эту запись не сможет. И версия с А будет удерживаться от сборки мусора до тех пор, пока активна эта транзакция snapshot. Вот в общих чертах. Подробнее, с картинками, изложено тут http://www.ibase.ru/devinfo/mga.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 01:48 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
Di_LIne пишет: > А не прошедщие? А не прошедшие -- не стираются. Лог -- это кольцо с двумя маркерами. Один -- последний чекпоинт, до которого можно стирать, другой -- текущая последняя страница лога, куда пишутся активные транзакции. Оба бегут в одну сторону по кольцу. Если первый догонит второй -- хорошо, лог пустой. Если второй догонит первый -- место в логе кончилось, кранты, надо транзакцию откатывать. > Хотя, как сказали выше, хватит и двойной записи на диск, что бы закрыть > этот аспект для дискусси. В смысле ? Двойная запись -- это запись и страниц лога, и страниц данных на диск ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 11:49 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
kdv пишет: > логи может ничем от жураналирования и не отличаются. Только > журналирование у IB 2007 служит только для "защиты" базы от сбоев. Т.е. Журналирование в любой СУБД служит для защиты базы от сбоев, ну и что ? > В упрощенном виде журнал IB 2007 представляет собой следующее: > 1. пишем страницы не в базу а в "лог" > 2. лог имеет фиксированный размер, по заполнению создается новый лог > 3. логи циклические > 4. по checkpoint информация из лога переносится в базу. > все. Ну, в общем, ничего существенно отличающегося от других СУБД. > Кажется что это похоже на логи СУБД с transaction/undo log, но здесь > откатить или "накатить" лог нельзя, посмотреть лог нельзя, и т.п. Как и везде. > то есть, последний раз Вы что-то такое читали про ИБ-ФБ лет 8-9 назад. > Потому что у IB нет открытых исходников, они у Firebird. Это понятно. Но Firebird -- это бывший IB. Ладно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 11:52 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv > Кажется что это похоже на логи СУБД с transaction/undo log, но здесь > откатить или "накатить" лог нельзя, посмотреть лог нельзя, и т.п. Как и везде. Как это везде? В каких еще базах с логом нельзя накатить лог или посмотреть его содержимое, транслировав в SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 12:54 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Если второй догонит первый -- место в логе кончилось, кранты, надо транзакцию откатывать. Ну вот. Дальше-то что? Кто, как и куда ее откатит? Мы же наихудший вариант рассматривали для FB. Теперь очередь других отдуваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 14:37 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
Александр ГoлдунКак это везде? В каких еще базах с логом нельзя накатить лог или посмотреть его содержимое, транслировав в SQL? А какой объем, в записях, можно накатить? 100% базу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 14:39 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
vadiminfo пишет: > А версионники как разрешают конфликт, когда два юзера пытаются изменять > одну и туже запись. > По времени, по приоритету? На сколько я помню, чистые версионники никак эту проблему не разрешают. Отсюда -- проблемы write skew, lost update. Хотя возомжно я не прав, что-то я подзабыл уже это всё. > Поскольку какая никакая версионность позволяет не блокировать читателя, > а два писателя одновременно, не такое честоя явление, то все еще, > возможно, преждевременно относить Оракл к блокировочникам - это может > сбаить с толку: блокировочник в общепринятом значении обязан блокировать > читателя, т.е. припишем Ораклу то чего нет. А вот псевдоверсионники писателей разводят обычными блокировками. Так что там всё в порядке с этим делом. > > Что скрывается за понятием страница данных? У Оракла в явном виде такого > > понятия вроде как нет. Есть блоки, которые хранятся на диске либо в Ну блоки. Блок, страница -- одно и то же. Термины разные просто. > Ну это наверное в СУБД у которых данные вседа в оперативке. Оракл кстати У всех субд часть данных в оперативке. Кэш называется. Одно из самых мощных средств повышения производительности. Кэш и индексы. > закупли и такую. По моему IN TIME MEMORY. Но сам Оракл закомиченне > вынужден сбрасывать в дата файлы. Не обязан. как раз наличие лога (уточним -- write-ahead log) и позволяет сами страницы/блоки данных не записывать на диск. А записывать только по checkpoint-у. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 14:59 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун пишет: > Как это везде? В каких еще базах с логом нельзя накатить лог или > посмотреть его содержимое, транслировав в SQL? Давай лучше скажи, в каких это сделать можно. Я таких не знаю. Только тут в топике про оракл сказали, до этого я не знал. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 15:01 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
Di_LIne пишет: > Ну вот. Дальше-то что? > Кто, как и куда ее откатит? Сервер, СУБД откатит. ЗАвершить аварийно транзакцию, она и откатится. место освободится, другие транзакции, меньшего объёма, смогут работать. Ну или не смогут. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 15:03 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Александр Гoлдун пишет: > Как это везде? В каких еще базах с логом нельзя накатить лог или > посмотреть его содержимое, транслировав в SQL? Давай лучше скажи, в каких это сделать можно. Я таких не знаю. Только тут в топике про оракл сказали, до этого я не знал. В Sybase ASA это однозначно можно. Собственно активно и регулярно этим пользуюсь. Я был свято уверен, что это во всех базах с логом можно было сделать. Иначе нафига вообще с логами заморачиваться? В MSSQL, насколько помню, тоже можно было делать инкрементальный бэкап на базе логов. А восстановление как раз путем наката логов на последний полный бэкап. В MySQL в некоторых типах таблиц такое есть. И в PostgreSQL все это есть: http://resurection.ru/doc/postgres/backup-online.html Поэтому интересно, в каких СУБД с логом нельзя использовать лог таким естественным образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 15:17 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун пишет: > В Sybase ASA это однозначно можно. Собственно активно и регулярно этим погоди, мы про что ? про накат логов, или про просмотр содержимого и "транслировав в SQL" ? Я -- про второе. Первое, понятно, везде есть, иначе зачем лог нужен. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 15:40 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Сервер, СУБД откатит. ЗАвершить аварийно транзакцию, она и откатится. место освободится, другие транзакции, меньшего объёма, смогут работать. Ну или не смогут. - Не, ну в чё?! Логика работы cервера: - Нииииёт меня ваши данные, мне работать надо! Мне такая логика - нравися! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 15:46 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Александр Гoлдун пишет: > В Sybase ASA это однозначно можно. Собственно активно и регулярно этим погоди, мы про что ? про накат логов, или про просмотр содержимого и "транслировав в SQL" ? Я -- про второе. Я думал, и про то, и про другое. И что, получается оттранслировать лог в SQL можно только в оракле и Sybase ASA? Но если данные в логе есть, то почему нельзя их перевести в удобоваримый вид? Непонятно это. На самом деле такая возможность бывает нужна редко, но при этом очень метко. Несколько раз серьезно помогало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 16:11 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
короче, вы лучше не спорьте, а зафиксируйте у себя - что журналирование, которое введено в IB 2007/2009, является только журналированием, или WAL, как угодно, и выполняет функции "предварительного кэширования записи". И никакого "вот раньше не было лога, было плохо, а теперь есть лог, и стало хорошо" нет. И также нет разницы в смысле хранения версий в БД между базой с журналом и без. И, журналирование в IB2007/2009 является опциональным, не по умолчанию, и используется редко. Также не надо фантазий на тему "предыдущая реализация версионности без журналирования была плохая" - в версионности НИЧЕГО не поменялось, и никаких дополнительных фишек не добавилось. В плане "защиты от сбоев" тут тоже ничего нового - журнал и база должны быть на разных физических дисках. Если сбойнет диск с базой - кирдык базе (зависит от мест и объемов повреждений) если сбойнет диск с журналами - база целая если же сбой диска с журналами произойдет в момент checkpoint, после его начала и до конца переноса данных из журнала в базу - опять же базе кирдык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 16:14 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Лог -- это кольцо с двумя маркерами. Один -- последний чекпоинт, до которого можно стирать, другой -- текущая последняя страница лога, куда пишутся активные транзакции. Оба бегут в одну сторону по кольцу. это ж где такой зверь !? циклический лог транзакций, да еще и откатывающий транзакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2009, 16:30 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv vadiminfo пишет: > А версионники как разрешают конфликт, когда два юзера пытаются изменять > одну и туже запись. > По времени, по приоритету? На сколько я помню, чистые версионники никак эту проблему не разрешают. Отсюда -- проблемы write skew, lost update. Хотя возомжно я не прав, что-то я подзабыл уже это всё. > Поскольку какая никакая версионность позволяет не блокировать читателя, > а два писателя одновременно, не такое честоя явление, то все еще, > возможно, преждевременно относить Оракл к блокировочникам - это может > сбаить с толку: блокировочник в общепринятом значении обязан блокировать > читателя, т.е. припишем Ораклу то чего нет. А вот псевдоверсионники писателей разводят обычными блокировками. Так что там всё в порядке с этим делом. Не понял. Чистые версионники типа предлагают реализовать оптимистическую блокировку? Под этим понимается, что если запись изменена друшим юзером, то произойдент отказ сохранять изменение. Ну ить это тоже по сути разновидность блокировки? Чистота версионника может пострадать? Или я опять не так понял. MasterZiv > > Что скрывается за понятием страница данных? У Оракла в явном виде такого > > понятия вроде как нет. Есть блоки, которые хранятся на диске либо в Ну блоки. Блок, страница -- одно и то же. Термины разные просто. В таком случае Ваша фраза "В этих СУБД непосредственно на страницах данных храняться только последняя закоммиченая версия записи, в одном экземпляре. Старые версии записей, в разных вариантах, берутся из журнала транзакций, сегмента отката, roll-backward log и т.д. и т.п. -- " не совсем опять ясна. Так как сраницы (то бишь блоки хранятся в сегментах отката) MasterZiv > Ну это наверное в СУБД у которых данные вседа в оперативке. Оракл кстати У всех субд часть данных в оперативке. Кэш называется. Одно из самых мощных средств повышения производительности. Кэш и индексы. > закупли и такую. По моему IN TIME MEMORY. Но сам Оракл закомиченне > вынужден сбрасывать в дата файлы. Не обязан. как раз наличие лога (уточним -- write-ahead log) и позволяет сами страницы/блоки данных не записывать на диск. А записывать только по checkpoint-у. Ну тут мы опять не поняли тада друг друга. Вы говорилт про ТОЛЬКО в памяти. А это уже не ТОЛЬКО в памяти. Ить Кэш в силу ряда причин заполняется по разным алгоритмам и сбрасывает на диск лишние блоки время от времени включая и старые версии. Т.е. Оракл обязан сбросить када места мало. Тем более: А какая разница где блок в памяти или на диске в плане версионноси? (Хотя старые версии блока должны быть в оперативке чтобы их читать. И находятся в кэше каое-то время). Ить какие компориентированные моменты хранения. Это на первый взгляд не понятно как влияет на не "равноправие" блоков. Грязные блоки ( которые меняются в данный момент) не равноправны чистым - их копиям до изменения, наскока я пока понял так или иначе и в чистых версионниках. Или не правильно понял? Или в чистых версионноиках можно делать копии грязных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:00 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZiv> Ну и совсем непонятно мне как 10 записей попадают на 100 страниц. > Пересчитаем "экономию" ? Ну, сложилось так. Например, хочу каждую 10 запись по возрастающему PK поменять.Как 10 записей попадёт на 100 страниц ??? Или у вы считаете, что каждая запись занимает 10 страниц ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:06 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
MasterZivПонятно, что транзакции разные, и нагрузку на лог дают разнюу. Но логи тоже не дураки придумали. Так что в среднем в приложениях выгоднее писать на диск логи.Да, весьма доказательно, весьма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:07 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
vadiminfo, а Вы кого про версионники-то спрашиваете? MasterZiv, как бы, тоже про них вопросы задавал. или вы решили эти вопросы между собой обсудить? :-) to hvlad - может, поговорить с кем так же про DB/2? или про Оракл чего-нибудь загнуть? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:20 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
2 MasterZiv Я раньше думал так про версионость и блокировочник: Версионник имеет несколько копий записи (не важно где они хранятся). В частности, генерится копия перед изменением. При этом грязную копию видит тот кто меняет (пишущий), а чистую любой читающий. Пишущий не блокирует читающего и грязное чтение исключено. В псевдоблокировочнике типа Оракла, пишущий так или иначе блокирут другого пищущего. Блокировочники строго одну копию записи имеют. И либо пишущий блокирует читателя, либо грязное чтение разрешено. Вопросы про чистые. В них блокировок нет ни в каком виде? Читающий читает чистое? Но если двое пытаются изменить одну запись, то один из них получит сообщение об отказе? Если так, то разве это не разновидность блокировки на запись? Или что? А уже потом моно буит думать про физ реализацию. Потому что за деревьми реализации пока трудно увидеть ЧТО собсно реализуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:23 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
kdvto hvlad - может, поговорить с кем так же про DB/2? или про Оракл чего-нибудь загнуть? :-)Проще не тратить время на чтение этого бреда форума, IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:26 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
kdvvadiminfo, а Вы кого про версионники-то спрашиваете? MasterZiv, как бы, тоже про них вопросы задавал. или вы решили эти вопросы между собой обсудить? :-) to hvlad - может, поговорить с кем так же про DB/2? или про Оракл чего-нибудь загнуть? :-) Вооще то MasterZiv разделил версионники на истинные (чистые) и псевдо. Но пока концепцию чистых мне не удается вкурить. Пока тока понял почему Оракл псевдоверсионник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 01:35 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
Sergey Orlov Поскольку нужен web, то есть ASA web edition, и платить ничего не надо будет...Сходи посмотри, почитай лицензию, может понравиться, а на твоем железе летать будет, если запросы нормальные... Спасибо за хороший, дельный совет. Попробывал: -- немного разочарован стабильностью, т.к. сразу напоролся на баг, который убивает сервер-процесс сразу. Но для бага есть ворк эраунд. -- Производительностю пока доволен. Да и в остальном всё что желал получил. Вобщем просто хотел сказать спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 17:26 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
vadiminfoВопросы про чистые. В них блокировок нет ни в каком виде? Читающий читает чистое? Но если двое пытаются изменить одну запись, то один из них получит сообщение об отказе? Если так, то разве это не разновидность блокировки на запись? в какой-то мере разновидность. Сама запись (ее состояние) и является блокировкой на запись. Т.к. заголовок записи читается всегда, то дополнительных ресурсов (например, в некой таблице блокировок) это не требует. Второй писатель получит либо 100%-ый отлуп (если NOWAIT), либо вероятность отлупа (если WAIT). Читателей же это не затрагивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2009, 17:45 |
|
||
|
Выбор бюджетной базы для замены Postgres.
|
|||
|---|---|---|---|
|
#18+
dimitrvadiminfoВопросы про чистые. В них блокировок нет ни в каком виде? Читающий читает чистое? Но если двое пытаются изменить одну запись, то один из них получит сообщение об отказе? Если так, то разве это не разновидность блокировки на запись? в какой-то мере разновидность. Сама запись (ее состояние) и является блокировкой на запись. Т.к. заголовок записи читается всегда, то дополнительных ресурсов (например, в некой таблице блокировок) это не требует. Второй писатель получит либо 100%-ый отлуп (если NOWAIT), либо вероятность отлупа (если WAIT). Читателей же это не затрагивает. В таком случае они в "какой-то мере " блокировочники и псевдоверионники? По крайней мере, если подходить с позиций MasterZiv? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2009, 11:57 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36097202&tid=1552916]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 164ms |

| 0 / 0 |
