powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
20 сообщений из 370, страница 15 из 15
Чем плох блокировочник по сравнению с версионником?
    #38967774
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей АрсеньевpkarklinНапомнило: "Если в Oracle этого нет - значит это никому не нужно!"
Те кому нужен dirty reads, тому не нужны ни версионники ни блокировочники.ну вот я могу придумать разумную задачу (вернее она у меня есть), где чтение заведомо [ONLY] dirty данных в версионнике мне бы сильно облегчила жизнь.

набросок постановкипримерно так -- реализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом.

Зная, какие значения ещё болтаются в dirty -- я это сделаю без лишних телодвижений. Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом.

Иначе мне как-то придется либо организовывать очередь в порядке коммитов с лишними метками (всего закоммиченного) этой самой очередью, т.е. не вдоль сиквенса. Либо сигнализировать себе (изо всех других транзакций) через сомнительные механизмы типа автономий и т.п. -- о запаздывающих значениях
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967782
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттавот я могу придумать
Фантазия у проктостоматологов как всегда буйная.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967801
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттареализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом.
...
Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом.
...

Если я правильно понимаю,
задача можно сформулировать: "реализовать асинхронный SEQUENCE/SERIAL с возможностью заполнения пропусков"?

Если да, то сценарий реализации в блокировочнике прост:

0. есть таблица с уникальным констрейнтом на id, и признаком "id_reserved bool "

1. сессия в dirty read резервирует себе id по алгоритму:
1) найди минимальный id, у которого id_reserved = false;
2) если нашёл, обнови ему id_reserved = true, при ошибке повтори 1)
3) иначе вставь (id, id_reserved) = (max(id)+1, true), при ошибке повтори 3).

Есть нюанс, таки есть периоды, когда пропуски существуют: между "rollback сесии не с последним id" и "ближайшей попыткой резервирования".
Больше волнует другой вопрос: что за прикладная задача-то такая?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967850
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойэттареализовать асинхронную обработку вставки в таблицу вдоль её сиквенса, с минимум телодвижений и без пропусков. с одним простеньким журналом.
...
Даже если какая-то падла редиска продержит очередное значение неделю, закоммитив сильно задним числом.
...

Если я правильно понимаю,
задача можно сформулировать: "реализовать асинхронный SEQUENCE/SERIAL с возможностью заполнения пропусков"?

неправильно понимаете.

хочу например обновлять статистику по вставкам, но не триггерно, с тормозами на each rows
а джобиком , по очереди, пачечками.

или слайсать очередь сообщений по вставкам , без создание навороченного журналирования "порядка коммитов" или чего иного -- этакого
АнатоЛойЕсли да, то сценарий реализации в блокировочнике прост:
<>
2) если нашёл, обнови ему id_reserved = true, при ошибке повтори 1)
<>хоть задачу не ту решаете --

и на кой мне на лям вставок -- лям "дед ровсов" ещё ? я чо, похож на больного ?

а всего то ведь нужен журнал достигнутого, с одной записью-писью. и возможность only dirty read-а.

с COALESCE (dirty_min-1,commited_max) -- в журнале.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967884
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта
хочу например обновлять статистику по вставкам, но не триггерно, с тормозами на each rows
а джобиком , по очереди, пачечками.

"статистику по вставкам" - это сам факт вставки, не анализируя, что же там вставляется?
Т.е. всего-то видеть, что кто-то зарезервировал запись ("очень вероятно, что я закоммичу запись, и чуть менее вероятно, что её содержимое останется таким как сейчас").
Правильно?

эттаили слайсать очередь сообщений по вставкам , без создание навороченного журналирования "порядка коммитов" или чего иного -- этакого

значение "слайсать" в данном контексте не понял. "слайсать" для чего? прикладной пример можно?

эттаа всего то ведь нужен журнал достигнутого, с одной записью-писью. и возможность only dirty read-а.

с COALESCE (dirty_min-1,commited_max) -- в журнале.
Понял. У вас типа ТОЛЬКО вставка идёт. И хотелось бы не только получить закоммиченное, а ещё и получить данные о незакоммиченных.
Если некую статистику посчитать - (учитывая, что статистика сама по себе "больше чем наглая ложь"), куда ни шло.

А кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38967972
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойА кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)-- вот под минимальный из них [-1] я очередью отработаю, его [-1] запишу в журнал джоба [как "достигнутого"], и эта единственная запись -- вместо "апдейтить, апдейтить и апдейтить", как вы пердлагаете -- все накладные расходы механизма.

а в следующий раз ломтик для обсчет джобом стартану от журнала, и до текущего "из них[-1]"


дёшево, это было бы, по сравнению с тем, что требуется сейчас.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968135
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевkdv,

Как бы пользуются люди Oracle, несмотря на то, что в нем очень затруднен режим dirty read.
Я как-то интересовался можно-ль "грязно-чтение" в Ораклах заюзать для сбора статики.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968199
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаАнатоЛойА кой вам ещё прок от самих незакомиченных записей, о которых вы узнали в dirty read? Как их "слайсать"? :)-- вот под минимальный из них [-1] я очередью отработаю, его [-1] запишу в журнал джоба [как "достигнутого"], и эта единственная запись -- вместо "апдейтить, апдейтить и апдейтить", как вы пердлагаете -- все накладные расходы механизма.

а в следующий раз ломтик для обсчет джобом стартану от журнала, и до текущего "из них[-1]"


дёшево, это было бы, по сравнению с тем, что требуется сейчас.
почему [-1]? У вас один писатель всего?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968298
Alexander RyndinПростите, какой-то поток сознания про RAM и диски. Какие такие версионники хранят блокировки на диске? Про Oracle могу сказать, что информация о блокировках хранится в заголовке блока данных, который в свою очередь лежит в оперативке.

стыдоба, ты видимо не слыхала про select генерящий redo (щито?). почитай про т. н. чистку блоков.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968306
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойэттапропущено...
-- вот под минимальный из них [-1] я очередью отработаю<>.
почему [-1]? У вас один писатель всего?

авторс COALESCE (dirty_min-1,commited_max) -- в журнале.
чо то оппонент совсем не всасывает
не всасывает, Карл
печалька
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968469
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаАнатоЛойпропущено...

почему [-1]? У вас один писатель всего?

авторс COALESCE (dirty_min-1,commited_max) -- в журнале.
чо то оппонент совсем не всасывает
не всасывает, Карл
печалька
всасывает, Клара, но низко-низко.
теперь понял. :)

Как я ещё понял, ONLY DIRTY - это когда в запросе ТОЛЬКО данные незафиксированные транзакцией. така фича имеется в реализации какой-то СУБД? Или dirty_min будем получать как min(dirty_as_all union committed)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968486
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправился
АнатоЛойИли dirty_min будем получать как min(dirty_as_all MINUS committed)?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968674
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛой
Как я ещё понял, ONLY DIRTY - это когда в запросе ТОЛЬКО данные незафиксированные транзакцией. така фича имеется в реализации какой-то СУБД?науке такая субд неизвестна

, но поиски ведутся

-- очевидно, что самой субд это знание более чем доступно
остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии.
АнатоЛойИли dirty_min будем получать как min(dirty_as_all EXCEPT committed)?
а вот это уже дорого, слишком дорого, Карл
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968706
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта-- очевидно, что самой субд это знание более чем доступно
остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии.
Вряд ли. Вот запускаю я full scan по таблице, который идет 2 часа. При прохождении блока данных N я понимаю, что он грязный. Ок. Идем дальше. Но в это время какое-то приложение меняет блоки N-100. Т.е. мой запрос не закончился, блок N-100 уже проверен - он был чистый, а значит я не увижу данные из этого блока и в будущем.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968752
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndinэтта-- очевидно, что самой субд это знание более чем доступно
остаётся его опубликовать в виде разумного SQL --синтаксиса или ф-ии.
Вряд ли. Вот запускаю я full scan по таблице, который идет 2 часа. При прохождении блока данных N я понимаю, что он грязный. Ок. Идем дальше. Но в это время какое-то приложение меняет блоки N-100. Т.е. мой запрос не закончился, блок N-100 уже проверен - он был чистый, а значит я не увижу данные из этого блока и в будущем.

на самом деле я интересуюсь не вообще dirty и вообще закоммиченными, а их соотношением на некий момент

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

думаю в блокировочнике увидеть одним стейтментом и то и другое -- тоже бы не составило труда. на "размазанный момент чтения записи" , который меня бы тоже устроил [просто по сути задачи], если я буду видеть статус [dirty|commited] каждой из.

другое дело -- выковырять в ноздре некую универсалию, сферически независимую от движка, и внести её в стандарт -- вот это, пожалуй, будет уже сложно и в постановке, и в реализации.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38968955
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттана самом деле я интересуюсь не вообще dirty и вообще закоммиченными, а их
соотношением на некий момент

т.ч. не знаю на предмет блокировочника
но в версионнике есть снепшот, относительно которого я свою задачу порешаю.
Нету там такого снапшота.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969100
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэтта<>
но в версионнике есть снепшот, относительно которого я свою задачу порешаю.
Нету там такого снапшота.

снапшот -- взять всё живое, что есть, и отсеять то, что по id транзакции не входит в видимость сессии.

мне вот вместо вот этого: "отсеять всё то" -- нужно напротив -- взять всё [вернее -- кое что] живое, что есть, но не входит в видимость (и, отдельной строкой -- кое-что, что входит).

если в fb это не реализуемо (вам виднее) -- не очевидно, что не реализуемо на других движках.

-- кстати, можете рассказать, почему оно там не реализуемо
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969114
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаможете рассказать, почему оно там не реализуемо
Потому что "взять всё живое на момент старта транзакции/запроса" и сделать неизменяемую
копию - чертовски дорогое занятие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969156
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттаможете рассказать, почему оно там не реализуемо
Потому что "взять всё живое на момент старта транзакции/запроса" и сделать неизменяемую
копию - чертовски дорогое занятие.

в том то и мякотка, что мне в задачу не нужно неизменяемый снапшот по dirty.

мне нужно знать, что на момент принятия мной решения там кое чего не болтается .
точка.
если оно не болталось от и до -- то оно там и не появится, поскольку у меня строго монотонная последовательность туда всовывается [факт "предметной области", о которой субд не оповещён].


понятно, что задача сильно специальная. сцепить синхронную логику с асинхронной -- но она всюду, где мы что-то хотим делать не тотчас.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38969180
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта... статус [dirty|commited] каждой из ....

Хм... Ну, насколько я знаю, для блокировочного IBM Informix Dynamic Server, например, такая задача теоретически разрешима: в таблицах системного каталога сервера есть таблица с блокировками, поэтому INNER JOIN легко даст ONLY DIRTY, а LEFT OUTER + COALESCE() - [dirty|commited]... С производительностью только может не всё ладно случиться, но утверждать с ходу плохого не буду...
...
Рейтинг: 0 / 0
20 сообщений из 370, страница 15 из 15
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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