powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
96 сообщений из 96, показаны все 4 страниц
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981503
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу архитектуру кластерного решения с одним из режимов работы в оперативной памяти.
В связи с чем провожу ревизию знаний и возникло несколько вопросов. Сначала приведу краткое описание, а затем задам список вопросов.

Рассмотрим следующую архитектуру. Базу средних размеров наверное до 300 ГБ полностью помещаем в оперативную память(виртуальный диск). Плюсом такого решения будет ускорения работы, минусом – потеря данных, что неприемлемо. Далее берем и включаем асинхронный always on на сервер с физическим диском. Таким образом у нас имеется копия БД на диске с небольшим отставанием. Как показывает практика(для большинства oltp ИТ систем) без учета пересчета статистики или индексов среднее оставание составляет 2-3 секунды.
Можно ли исключить потерю данных за эти 2-3 секунды? - Можно! Необходима интеграция с приложением. Реализуется простейшая система логирования транзакций на триггерах. Например в таблицу пишутся ссылки на документы, тип операции(I,U,D), доп информация(например сумма документа и т.п.). Далее job непрерывно работающий сравнивает две таблицы – на сервере источнике с оперативной памятью и на сервере приемнике с диском и апдейтит статус транзакций(разумеется в источнике) которые уже записаны на диск. Таким образом мы оперативно получаем дельту не записанных на диск транзакций и статус транзакций когда они записаны на диск.
Важный момент, что приложение должно делить транзакции на важные и нет. То есть на те которые можно потерять и на те которые нельзя. Далее приложение для важных транзакций передает фокус управления только тогда, когда они записаны на диск. Для транзакций не важных можно передавать фокус моментально. Под фокусом управления подразумевается не только активизация окна диалога приложения но и выгрузка во внешние базы, распечатка документов и т.п. Передача фокуса может быть реализована различным способами, например сокет сервер опрашивает статус таблицы логирования(запрос таблицы транзакций на севрерах) их апдейтит и передает сообщения на сокет клиент в приложение, которое разрешает дальнейшие действия.
Если мы считаем что все транзакции важны и фокус всегда ожидает статуса(ЗаписаноНаДиск) то в этом случае у нас вообще исключена потеря данных! (Если кто то считает по другому просьба обосновать)
При использовании такого подхода у нас уменьшается время блокировок, потому как время транзакций уменьшается(ожидание статуса идет вне транзакции,уже после ее фиксации). Для большинства транзакций просто уменьшается время выполнения потому как их в случае непредвиденного выключения сервера(что в последнее время редкость) их можно воспроизвести в системе(то есть их можно спокойно потерять), тем более всегда есть лог незакомиченных транзакций(номер документа, время, пользователь, например сумма) который можно писать на физический диск.
Если считать среднее время рассинхронизации нод - 2 сек. То за это время пользователь даже осмыслить ничего не успеет. Например можно разрешить передавать фокус управления приложения пользователю после проведения документа заказа, но печатать(отправлять на печать) его позволять только после фиксации на диске. На самом деле для подавляющего количества операций можно не дожидаться фиксации на диске. Что приведет к существенному уменьшению времени отклика от ИТ системы.
В случае размещения базы в памяти у нас ускоряются не только операции вставки и изменений но и мы гарантированно всегда обращаемся к данным в памяти. В этом случае вообще необходимо запретить СУБД обращаться к кешу данных в оперативной памяти, потому как это будет двойная работа.(если это возможно, будет один из вопросов)
Плюсы этой системы я уже приводил а минусы тоже существуют.

Обслуживание БД, переиндексация и пересчет статистики могут привести к большому времени рассинхронизации – из чего следует, что их необходимо проводить в режиме прямого коннекта к БД.(необходимо автоматизировать режим реконнекта) Перезагрузка сервера должна предварять процедура остановки БД и ожидания (пара секунд) нулевого времени рассинхронизации. Короче говоря, процедуру перезагрузки необходимо также автоматизировать. После перезагрузки сервера необходимо вычитать всю БД в память, это тоже время(пару минут,300 ГБ). В общем, перезагрузка сервера будет занимать немного больше времени и требовать доп. регламента. В самом приложении, тажке нужна небольшая адаптация(система логирования и система семафоров).
С точки зрения надежности мы полагаемся на надежный транспорт always on. Надежность работы памяти в современных серверах также обеспечивается механизмами про которые я здесь не буду расписывать. По сути эффективность системы будет определятся размером БД(для супер больших БД памяти не напасешься), количеством незапланированных перезагрузок СУБД(надежность ЦОД-а в первую очередь), а также средним временем рассинхронизации нод.


А теперь вопросы.

Вы реализовывали подобную схему?
Кто ни будь размещал БД в память, проводил замеры? Можно поделиться результатами?
Кто ни будь размещал БД приемник в always on в память, с целью горизонтального масштабирования? Каковы результаты?(то есть описанная ситуация но наоборот)
Можно ли, и какими настройками запретить СУБД обращаться к кешу данных в оперативной памяти? (заставить считывать все страницы напрямую с виртуального диска)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981509
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну совсем детали я не стал расписывать. Например это могут быть два инстанса на одном физическом сервере для того что бы атач базы можно было быстро сделать в оперативную память. Не знаю к слову, можно ли обмануть систему и писать always on из одной БД в другую на этом же сервере?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981537
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имхо
1) Если СУБД ненагруженная (пользователь легко ждет 2 сек.), то и затевать не стоит. Выигрыш во времени не компенсируется усложнением архитектуры
2) Если СУБД высоконагруженная, то она сама выкачает в кэш все таблицы и все прочее, лишь бы памяти хватило
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981585
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Узким местом станут триггера. Смысл "мутить"? Если "ради искусства",- ну может быть. Я искал бы алтернативный инструмент.

PS Если это не своя "база" а чья-то стандартная - проверьте, А НОРМАЛЬНО ли она будет функционировать со всеми навешанными триггерами?,- у меня был опыт (делал логирование действий пользователей), когда навешанный триггер привёл к неправильной логике работы,- остался лог глобальных изменений а вот от конкретики пришлось отказаться (ну, компромисс, да).

PPS Если "клиент" может "ждать" 2-3 секунды,- то какая же это "высоконагруженная" база. Тогда надо задумываться о правильности архитектуры базы, серверной части и клиентских приложений. А так это выглядит как "второе дно у корзинки с яйцами",- но ручка-то тоже может оборваться Оправдание только одно,- вложиться в сервак с терабайтом оперативы лет десять стоит дешевле труд спеца

IMHO, конечно... Есличо - поправьте...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981597
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу,

Мне вот не понятны цели всего этого. Вроде бы если вы можете себе позволить поместить 300 ГБ в оперативку + 2 секунды(!) ожидания для вас не критичны, то почему не купить ssd вместо памяти - дешевле, а результат тот же.

Вот это вот "приложение должно делить транзакции на важные и нет" оно и есть самоцель или оно обусловлено какими то целями?

Ради искусства то оно конечно да...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981617
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 секунды - не критично? Хм, в HFT за это время среднестатистический трейдинговый бот успеет вас продать, купить, и потом еще раз продать, но уже дороже.

Я бы скорее подождал пару-тройку лет, пока Optane станет достаточным мейнстримом.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981711
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу,

не сосем понятно. Если Вам требуется база реального времени, то MS SQL нельзя использовать, надо подобрать другую систему.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981714
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу,

авторВ случае размещения базы в памяти у нас ускоряются не только операции вставки и изменений но и мы гарантированно всегда обращаемся к данным в памяти.

Ничего не ускорится, т.к. сиквел уже кеширует все данные, при достаточном объеме памяти. Данные уже находятся в памяти и с диском общаются в фоновом режиме. Для подготовки базы к "горячей" работе достаточно просканировать все таблицы и сканировать из с какой-то периодичностью для поддержания кэша в дальнейшем.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981856
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
МуМу,

авторВ случае размещения базы в памяти у нас ускоряются не только операции вставки и изменений но и мы гарантированно всегда обращаемся к данным в памяти.


Ничего не ускорится, т.к. сиквел уже кеширует все данные, при достаточном объеме памяти. Данные уже находятся в памяти и с диском общаются в фоновом режиме. Для подготовки базы к "горячей" работе достаточно просканировать все таблицы и сканировать из с какой-то периодичностью для поддержания кэша в дальнейшем.

Мой опыт подсказывает, что это несколько спорное заявление, основанное на весьма оптимистичном взгляде на скуль

PS Ну да, да,- конечно все мы помним про lock pages in memory

PPS Напоминаю: организатор срача пытается выгадать время ещё и на сбросе данных на диск. Тут он немного прав, за исключением того что в реалиях данные кидаются не на диски как таковые а в энергонезависимую память дискового контроллера/стойки и "комитятся" тут же,- до "физической" (ха!-ха!!-ха!!!) записи. Потому задержка там копеечная,- и сэкономить особо не удастся.

-------------------------------------------


Владислав Колосов
МуМу,

не сосем понятно. Если Вам требуется база реального времени, то MS SQL нельзя использовать, надо подобрать другую систему.


Поддерживаю, в общем-то. Но с другой стороны "а почему бы и нет?" ,- особенно учитывая "те самые" упомянутые две секунды (на ожидание со стороны клиента/приложения) . А если автор пишет какую-нибудь систему резервирования авиабилетов (или "горящих" туров),- то это не сильно критично,- из-за отмены заказа вторая волна короновируса не придёт,- и я бы тоже выбрал скуль (ну, хотя бы потому что это единственное в чём я могу говнокодить ). Я только бы посоветовал писать на основной сервак а читать (подтверждение) с зеркала (при переключении ролей "основной - зеркало" - соответствующим образом переключаться обратно) , ну для риалтайма 24 * 7 - три сервака и робинраунд (что бы один можно было вывести безболезненно на профилактику, да и датацентры иногда "падают", увы).


---------------------------------------------

Это, есличо - поправьте ;)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981915
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,

Оракл может "взлететь", поскольку не блокировочник. Вопрос стоимости такой системы.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981923
AlexBra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981930
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Оракл может "взлететь", поскольку не блокировочник.

SQL уже 15 лет как не блокировочник.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981941
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

за счет tempdb или inmemory? Это цирк еще тот, тем более для реального времени.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981962
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
msLex,

за счет tempdb или inmemory? Это цирк еще тот, тем более для реального времени.

За счёт rcsi
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981966
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

а где rcsi данные хранит, разве не в tempdb? Надо рулбуки перечитать...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981968
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая-то крайне странная идея у топикстартера...
Почему не использовать in-memory + always on?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39981981
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,

inmemory вроде бы плохо дружит с AlwaysOn?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982002
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
не сосем понятно. Если Вам требуется база реального времени, то MS SQL нельзя использовать, надо подобрать другую систему.
По моему, МуМу про систему реального времени не писал.

Вопрос про ускорение обработки транзакций, ну, или про повышение производительности без перехода на распределённую систему. "Системы реального времени" - это не "быстрые системы", между этими двумя понятиями нет ничего общего.

Ещё был задан интересный вопрос "как не терять транзакции при сбое системы", но он не имеет отношения к варианту "сервер/базы в RAM", он актуален и для обычной типовой системы.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982037
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не удивлюсь, что это очередная версия "а как бы нам усовершенствовать нашу 1С" , на которой строят в реальном времени разнообразные (неоптимизированные!) отчёты. Причём отчёты строят из примитивных конструкторов (или вообще эти отчёты натыкивают мышками в Access "налету")...

Данные в скуль, кстати, можно лить быстро (не супер моментально, но всё-таки достаточно быстро), просто это делать относительно равномерным потоком. Хотя, конечно, кому-то и тысячи записей в секунду будет "так себе задачка" ;)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982166
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, спасибо за живой интерес к данному вопросу. Просьба к данной теме не относится слишком серьезно, это скорее логический эксперимент. Тем не менее, интуитивно я уверен, что для небольшого количества систем это вариант в разы уменьшить количество блокировок в системе с относительно небольшими трудозатратами(за счет уменьшения времени транзакций). Буду рад если кому то эта информация пригодится.

Сразу задам единственный вопрос касающийся практической стороны вопроса. Кто ни будь знает(догадывается) оптимальные настройки для работы БД полностью в оперативной памяти?
Какая может быть(возможно) практическая польза. Компания, в которой я работаю активно использует always on для построения кластеров для горизонтального масштабирования. Также знаю, что некоторые участники этого форума используют в подобных целях. Как вы знаете транспортировке данных c помощью always-on возникает некоторая задержка(в синхронном в том числе тоже). Иногда она не важна и запрос можно перенаправлять на доп. ноду, игнорируя запоздалость данных, а иногда это важно и необходимо дожидаться синхронности с помощью семафоров. Уменьшение времени синхронизации для некоторых систем становится важной задачи. Размещение ноды в памяти позволяет уменьшить время рассинхронизации ,в этом случае можно и синхронный режим(alwaya on) включать а в асинхронном писать на диск.


Теперь просто размышления на тему.
Как правильно отметил alexeyvg , вопрос о сохранности данных стоит не только для размещенных в памяти данных но и для классических дисковых хранилищ. Независимо от моделей, принцип остается один – контроллер пишет во внутренний кеш(память), затем порциями записывает на диск. За счет укрупнения происходит ускорение(не буду вдаваться в детали), но за счет этого происходит риск потери части данных. Все сводится к записи порции данных из кеша на диск в случае аварии. Для некоторых банковских систем подобное кеширование осознанно отключают. То есть данные записанные в БД немедленно записываются на диск(происходит замедление, увеличение времени отклика). Но многие данный факт скромненько замалчивают так как сами в жизни ни разу с этим не сталкивались, либо последствия были не существенны.
Владислав Колосов , вы видимо подзабыли что условие большего обьема(да хоть бы и в три раза) памяти по отношению к БД вовсе не гарантирует нам того что она целиком будет в кеше.
Есть запросы когда оптимизатору нужно выбрать вариант долгий и тяжелый с точки зрения ЦПУ и низкого использования памяти вариант типа вложенных циклов(nested loops).Либо оптимизатору выбрать затратный с точки зрения памяти типа хеш джоин. Так вот такие запросы выполняемый многочисленно в единицу времени могут постоянно вытеснять память(page life expectancy – падает) и результатом этого будет нахождение в памяти, например, не более чем 30% от БД. Понятно что это неоптимальные запросы и нужно их оптимизировать но это жизнь и наблюдал это многократно.

А вообще, еще есть мысли реализовать отдельное кластерное решение полностью работающая синхронно в памяти на нескольких географически распределенных нодах с асинхронной записью на диск. Решение это не на базе always -on. Как вы считаете насколько такая система жизненно способна с точки зрения надежности? Каковы риски потери данных(не синхронной дельты между памятью и диском)?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982232
PizzaPizza
Мне вот не понятны цели всего этого. Вроде бы если вы можете себе позволить поместить 300 ГБ в оперативку + 2 секунды(!) ожидания для вас не критичны, то почему не купить ssd вместо памяти - дешевле, а результат тот же.

а я вот взял и погуглил
раз
авторЛатентность доступа на чтение SSD весьма далека от латентности RAM в пару десятков нс.
Латентность записи - пока есть свободные страницы для записи ещё ничего, а вот если свободных страниц нет - то привет. Латентность растёт крайне существенно.
авторВ теории использовать можно. Самые быстрые SSD отстают от нормальной DDR4 примерно на порядок-два.
YouTube Video
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982236
МуМу
Сразу задам единственный вопрос касающийся практической стороны вопроса. Кто ни будь знает(догадывается) оптимальные настройки для работы БД полностью в оперативной памяти?
Какая может быть(возможно) практическая польза.

вы никогда не получите от БД "работу в ОЗУ". Всё это абстракция через обвязки самой БД. Кеш ничего общего с вашей задумкой не имеет.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982254
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу,

распределение памяти вполне себе регулируется средством Resource Governor, можно настроить так, что запросы не будут вытеснять кэш данных при достаточном объему оперативной памяти.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982263
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Критик,

inmemory вроде бы плохо дружит с AlwaysOn?


у меня нет таких данных, если у вас есть - линканите, с удовольствием почитаю
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982274
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
Владислав Колосов
msLex,

за счет tempdb или inmemory? Это цирк еще тот, тем более для реального времени.

За счёт rcsi


Вы меня немного сбили с толку, проверил - tempdb используется при версионировании. Так что я верно написал, за счет tempdb, на которую тратятся ресурсы.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982295
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Это цирк еще тот
А в чем "цирк"?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982312
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза

авторSSD по сравнению с оперативной памятью - это просто какой-то космический слоупок


А процессорный кэш гораздо быстрее, чем оперативка. Почему бы не построить систему из 100500 процессоров и попробовать запихать данные в процессорный кэш? Тоже искусство.

Есть довольно стандартные способы масштабирования ресурсов сервера. А для вашего описания я все равно не могу понять задачи , которые вы ставите.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982321
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza

А процессорный кэш гораздо быстрее, чем оперативка.

Только он забит, как правило, всякой фигнёй
Но идея мне понравилась. Может закопирайтить "In-processor tables"

PS Чорт, есть ещё регистры (и теневые тоже),- так там ещё быстрее всё... declare @table register (EAX bigint, EBX bigint,...)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982355
PizzaPizza
Почему бы не построить систему из 100500 процессоров и попробовать запихать данные в процессорный кэш?

патамушта энергозатратно шописдец. биткоины покажутся свечечкой.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982394
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу
Для некоторых банковских систем подобное кеширование осознанно отключают. То есть данные записанные в БД немедленно записываются на диск(происходит замедление, увеличение времени отклика). Но многие данный факт скромненько замалчивают так как сами в жизни ни разу с этим не сталкивались, либо последствия были не существенны.
Это, по моему, стандартная позиция менеджера "не стать крайнем", а не средство обеспечения сохранности данных.
Если в результате чего то страдает хранилище данных, на котором лежит лог, данные будут потеряны, включён кэш, или выключен. Даже рейд при этом не даёт гарантии, бывает же, что ломается кэш, или взрываются датацентры. Впрочем, представить контроллер рейда без кэша невероятно трудно, неужели так делают, это же безумно медленно?

Единственным надёжным вариантом является запись журнала клиентским приложением, типа фискальной памяти банкомата. Собственно, у вас что то в этом роде описано, хотя и не на стороне клиента.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982396
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
авторВ теории использовать можно. Самые быстрые SSD отстают от нормальной DDR4 примерно на порядок-два.
Есть же промежуточный вариант между SSD и DRAM, называется NVRAM; говорят, результаты впечатляют.
Сиквел их умеет использовать для очереди записи в лог.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982402
alexeyvg, чем именно впечатляют?
авторВ более общем смысле, энергонезависимая память — любое устройство компьютерной памяти, или его часть, сохраняющее данные вне зависимости от подачи питающего напряжения или способа активации памяти
это здорово, но сильной проблемы в отключении питания нет. Все новые данные скидываются на диск каждые X секунд.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982444
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Владислав Колосов
Это цирк еще тот
А в чем "цирк"?
Цирк в ненативной поддержке, в том, что механизм имеет неприятные побочные эффекты и ограничения. Нельзя вот так просто перейти на RCSI, требуется, чтобы изначально архитектура и аппаратура были сконструированы с учетом недостатков этого средства. То же касается inmemory таблиц и скомпилированных в своем коде процедур.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982445
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДля некоторых банковских систем подобное кеширование осознанно отключают.

Чтобы не отключать кэш, придумали массивы с батарейкой.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982490
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,Давно дело было. Помнится одного админа за разряженную батарейку уволили:)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982512
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу
А теперь вопросы.

Ознакомьтесь с СХД энтерпрайз-уровня.
Там все особенности работы с СУБД проработаны намного глубже (при соответствующем лицензировании) и не нужно изобретать костыли.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982513
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Цирк в ненативной поддержке
Поясните.
Владислав Колосов
механизм имеет неприятные побочные эффекты и ограничения
Какие?
Владислав Колосов
Нельзя вот так просто перейти на RCSI, требуется, чтобы изначально архитектура и аппаратура были сконструированы с учетом недостатков этого средства
Объясните, почему систему, функционируюущую на RC, нельзя перевести на RCSI без изменения ее архитектуры?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982520
rahzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу - откройте для себя уже NVDIMM - и работайте с ней, она с MS Server 2016 поддерживается штатно..
Да, при отключении\либо неработоспособности энергонезависимого модуля кэша - система должна автоматический переходить в сквозную запись (то есть прямо на диски), кто данную опцию отключает принудительно, чтобы система всегда работала с отложенной записью (записью в кэш) - ССЗБ.
И да, профилактические работы и мониторинг системы на предметы ошибок, чтобы исключить подобные вещи, когда винты отказавшие долго не меняют или случай с разряженной батарейкой - тоже надо делать..
Иначе такой результат и будет - админ уволен, контора с упавшим продакшеном и без актуальных бэкапов..
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982567
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

зачем Вам что-то объяснять, Вы явно лучше во всем разбираетесь и знаете весь стек проблем. Вы отлично знаете, какие проблемы имеют указанные технологии, но с какой целью задаёте вопросы, не пойму.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982583
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Все-таки хотелось бы увидеть перечень проблем в архитектуре БД, не позволяющих перейти с RC на RCSI.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982613
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

не проблема, а риск существенного снижения производительности запросов + откатов транзакций, что я и наблюдал. Плюс технические проблемы - выделение дополнительного дискового пространства. Вы об этом прекрасно осведомлены, зачем спрашивать - не пойму.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982641
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Вы объявили некую технологию "фу-фу-фу", но никаких объективных данных в пользу своего утверждения не приводите, только общие слова.
Я надеялся, что назовете хоть одну архитектурную проблему (а она таки есть), но нет.

Складывается впечатление, что RCSI было включено на БД с данными, замечена некоторая деградация производительности и был навешен ярлык "фу-фу-фу", без попыток понимания работы RCSI.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982664
Mr. X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Первое, что приходит на ум, это обработка взаимоблокировок. Возвращаемые коды ошибок будут разные и это нужно учитывать. Ну и да, нагрузка по IO на tempdb возрастёт. Да и место нужно больше. Но, начиная с 2019 появились варианты по размещению снимков. А все фундаментальное/архитектурные описано в справке. Зачем тут перечислять?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982669
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

технология-то хорошая, но требует особого подхода. А это снижает область ее применимости. Производственную систему нельзя "взять - и переключить" на неё. Надо _перестраивать_ эту систему, на что требуются разноплановые ресурсы, отсюда и "цирк". Вроде сделали благое дело, но применить его без вреда для себя невозможно.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982670
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы RCSI включалась не для всей базы,а для отдельных запросов, то и вопроса бы не было.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982678
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Производственную систему нельзя "взять - и переключить" на неё. Надо _перестраивать_ эту систему
Что конкретно нужно перестроить?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982757
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rahzer, Все что нужно я для себя открыл;)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982767
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B., Общаюсь регулярно с инженерами в том числе разрабатывающие такие решения. Может вы мне чего нового расскажете кроме общих туманных формулировок? А в целом ничего нового(SSD немного поменяла расклады), оперативная память гораздо быстрее диска. Хоть онлайн репликацию сделайте на СХД, вам пользы от нее ноль будет - все равно нужна реплика памяти. Если у вас стоит задача горизонтального масштабирования то чем вам СХД поможет(Ну только если у него время отклика не будет как у памяти)? Рекомендую вам прежде про Numa архитектуру почитать прежде, чем давать советы по СХД;)
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982801
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Владислав Колосов
Производственную систему нельзя "взять - и переключить" на неё. Надо _перестраивать_ эту систему
Что конкретно нужно перестроить?

Не включайте почемучку, это не к месту. Вы всё отлично знаете, что требуется перестроить.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982804
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Не включайте почемучку, это не к месту. Вы всё отлично знаете, что требуется перестроить.
Ну что к месту, а что нет - я сам решу.

Предположим, - я обладаю нужными знаниями. Почему не хотите ответить тем, кто не обладает?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982828
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

проблемы я изложил выше, простого решения, например, путем изменения SET настроек для решения этих проблем я не знаю. Вероятно, и Вы не знаете простого решения, иначе бы вопросы не задавали. Возможно, Вы игнорировали часть ответов, считая эти проблемы несущественными, повторяться нет желания при таком диалоге. Может для Вас падение производительности в 3-5 раз несущественно, мне это неизвестно.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982837
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Не нужно перекладывать с больной головы на здоровую.
Вам были заданы конкретные вопросы. В ответ была только демагогия.

ЗЫ: Если применение RCSI дает постоянную просадку производительности в N раз, то это говорит не о проблемах RCSI, а о кривом дизайне и БД и работы с ней.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982847
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm

Вам были заданы конкретные вопросы. В ответ была только демагогия.

ну видно же, что человеку нечего сказать кроме "сами знаете, сами понимаете"
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982850
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

о том же я и писал - требуется доработка и реконфигурация. Не взлетит само собой. Если RC "терпело", то при включении RSCI все недостатки могут всплыть. Для того, чтобы RCSI работало с требуемой производительностью, требуется изначально учитывать его особенности, о чем я также писал выше. Не панацея - включили версионирование и залетало на любой базе. И не должно летать. Для этого требуется учесть особенности, не строить какие попало таблицы и писать какие попало, манагерские, запросы. Надо настраивать tempdb и выделять ресурсы с заведомо повышенной производительностью. И это надо делать изначально, а не тогда, когда в базе несколько тысяч таблиц и около того процедур и все это 24/7. Отсюда простой вывод - затраты на его внедрение никто не будет оплачивать, т.е. для большого ряда потребителей эта возможность просто бесполезна. Вы можете не понимать этих проблем, только если не сталкивались в реальными производственными процессами в условиях ограниченных ресурсов. Гладко было на бумаге, да забыли про овраги. Поэтому "цирк".
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982851
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
invm

Вам были заданы конкретные вопросы. В ответ была только демагогия.

ну видно же, что человеку нечего сказать кроме "сами знаете, сами понимаете"


Я не хочу идти на поводу у человека, который знает ответы, но задает вопросы "с подковыркой" типа "проверяет". Это отвратительно.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982940
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
о том же я и писал - требуется доработка и реконфигурация. Не взлетит само собой. Если RC "терпело", то при включении RSCI все недостатки могут всплыть. Для того, чтобы RCSI работало с требуемой производительностью, требуется изначально учитывать его особенности, о чем я также писал выше. Не панацея - включили версионирование и залетало на любой базе. И не должно летать. Для этого требуется учесть особенности, не строить какие попало таблицы и писать какие попало, манагерские, запросы. Надо настраивать tempdb и выделять ресурсы с заведомо повышенной производительностью. И это надо делать изначально, а не тогда, когда в базе несколько тысяч таблиц и около того процедур и все это 24/7. Отсюда простой вывод - затраты на его внедрение никто не будет оплачивать, т.е. для большого ряда потребителей эта возможность просто бесполезна. Вы можете не понимать этих проблем, только если не сталкивались в реальными производственными процессами в условиях ограниченных ресурсов. Гладко было на бумаге, да забыли про овраги. Поэтому "цирк".
Опять сплошная демагогия...
Оказывается Вы даже не в курсе зачем вообще был введен RCSI.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39982988
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

просветите меня. С какой целью - мне действительно неизвестно.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983000
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

RCSI предназначен только для устранения проблем производительности, связанных с конфликтами читатель-писатель и только на RC, не меняя при этом сути RC. Все.
Следовательно, для его включения не требуется никаких доработок архитектуры БД, за исключением моментов когда конфликт читатель-писатель используется сознательно.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983015
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Понятно. Допустим, я наблюдаю большое число ожиданий в некоторых таблицах, связанных с выборкой и обновлением и принимаю решение включить в базе настройку RCSI. При этом каждая операция обновления начинает выполнять записи в tempdb, тратить вычислительные ресурсы, оперативную память и дисковое пространство. Итог такого включения, который Вы назвали "демагогией", был описан выше. База выигрывает в производительности относительно нескольких таблиц и теряет производительность в целом, причем, не на проценты, а на сотни процентов. Как решить эту задачу без замены аппаратных средств и реконструкции схему хранения данных?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983036
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз уж начался офтоп, пользуясь случаем хочу, спросить.:) Как то читал статью про издержки Numa а также про физические ограничения на количество узлов и длину шины. Чего то не могу найти. Может кто помнит, ссылку киньте пожалуйста.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983107
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
При этом каждая операция обновления начинает выполнять записи в tempdb, тратить вычислительные ресурсы, оперативную память и дисковое пространство
А каждый читающий запрос с worktables и workfiles не тратит, причем может гораздо больше?
А не хотите подумать почему, например, в Azure RCSI включен по дефолту, если все так плохо?

Постоянного падения производительности у писателей в разы на RCSI не получите.
Зато обязательно получите временное, сразу после включения оного. Причем может именно в разы.
Связано это с необходимостью выделять для каждой строки дополнительно 14 байт для нужд версионирования.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983143
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
А каждый читающий запрос с worktables и workfiles не тратит, причем может гораздо больше?

тратит, но при этих тратах не лазит в tempdb.

invm
А не хотите подумать почему, например, в Azure RCSI включен по дефолту, если все так плохо?

потому что блокировочная модель в принципе не масштабируется, а у азура есть возможность потратить время и ресурсы на приседания вокруг tempdb и сгладить недостатки реализации версионности в мсскл. Владислав же объяснил.

invm
Постоянного падения производительности у писателей в разы на RCSI не получите.

представь один единственный файл tempdb на обычном HDD, там и так уже сортировки, временные таблицы, временные переменные, а ты еще и каждую транзакцию туда читать писать старые строки отправил. плюс вакум.
без определенных приседаний просадку получишь гарантированно. посмотри на что приходится идти майкрософт с темпдб в тесте tpc-e, ради того что бы получить достойный результат.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983207
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
тратит, но при этих тратах не лазит в tempdb.
А куда лазит-то?

Нам остальное даже отвечать не хочется...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983334
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
А куда лазит-то?

Нам остальное даже отвечать не хочется...

и не надо злится, надо просто потратить 15 минут на выяснение, что хранит версионный механизм в tempdb и зачем RCSI полезет в tempdb.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983337
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
надо просто потратить 15 минут на выяснение, что хранит версионный механизм в tempdb и зачем RCSI полезет в tempdb.
Ну так потратьте.
Заодно потратьте еще чуть-чуть времени и выясните где создаются worktables и workfiles.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983341
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

эти 14 байт работают очень жестко, по всей видимости, происходит расщепление страниц и так далее. Через три часа терпение у людей лопнуло и пришлось всё отключить.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983347
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
invm
А куда лазит-то?

Нам остальное даже отвечать не хочется...

и не надо злится, надо просто потратить 15 минут на выяснение, что хранит версионный механизм в tempdb и зачем RCSI полезет в tempdb.
Вы с Владислав Колосов зря так концентрируетесь на слове tempdb
Разницу в разы для писателей лучше показать на тестах, а не на слове tempdb.

H5N1
у азура есть возможность потратить время и ресурсы на приседания вокруг tempdb и сгладить недостатки реализации версионности в мсскл
А, получается, версионность в MSSQL всё таки сделали не зря, оно повышает производительность, причём не нужно, вопреки мнению Владислав Колосов, для нанимать программирования специальных программистов, для постановки задач специальных менеджеров, и подстраивать под версионность бизнес-процессы?

Да, нужно потратить ресурсы на tempdb, и что такого? Просто некое перераспределение, некая специальная настройка железа, в случае включения RCSI. Админ настроит, для блокировчного OLTP так, для DWH сяк, для RCSI эдак.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983348
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
invm,

эти 14 байт работают очень жестко, по всей видимости, происходит расщепление страниц и так далее. Через три часа терпение у людей лопнуло и пришлось всё отключить.
Да, отлично, "просто не дождались".
Если эффективный менеджер приказывает корячить галочку в настройках, а потом через 3 часа корячит обратно, "не шмогла"(с), то цирк не в RCSI, цирк в организации.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983366
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg

Вы с Владислав Колосов зря так концентрируетесь на слове tempdb
Разницу в разы для писателей лучше показать на тестах, а не на слове tempdb.

не, так это не работает. тесты производитель должен показывать, т.к. те кто вечерком нарисуют тесты побыстрому всегда могут чего-то не знать или не учесть.

alexeyvg
А, получается, версионность в MSSQL всё таки сделали не зря, оно повышает производительность, причём не нужно, вопреки мнению Владислав Колосов, для нанимать программирования специальных программистов, для постановки задач специальных менеджеров, и подстраивать под версионность бизнес-процессы?

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

alexeyvg

Да, нужно потратить ресурсы на tempdb, и что такого? Просто некое перераспределение, некая специальная настройка железа, в случае включения RCSI. Админ настроит, для блокировчного OLTP так, для DWH сяк, для RCSI эдак.

в tpc-e тестах данные лежат на raid-5, а темпдб на raid-10 и дисков на tempdb тратят больше, чем на данные. т.е. Владислав совершенно по делу написал возможных сложностях. вот так взять и выдать tempdb iops больше, чем под данные не каждый сможет. тем более речь про мир майкрософт, где tempdb такая боль, что у немалой части и так уже вынесен на рамдиск.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983498
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
а логику адаптировать нужно. он совершенно прав. подавляющее большинство логики спроектированной на блокировочном режиме, начнет хрень выдавать на версионном. вы меня пугаете, неужели такие вещи все еще кому то надо разжевывать?
Вы, прежде чем писать про "адаптацию", осознайте разницу между SI и RCSI. А после осознания приведите пример, когда именно на RCSI без адаптации будет "хрень".
H5N1
речь про мир майкрософт, где tempdb такая боль, что у немалой части и так уже вынесен на рамдиск.
Ну да. Вместо того чтобы эту память отдать под BP и уменьшить сброс данных tempdb на диск, мы саму tempdb в память захерачим. Очень грамотный подход.
Если так хочется чего-нибудь от tempdb непременно разместить на рамдиске, то класть туда нужно ЖТ - хоть какая-то польза будет.
А полностью размещать tempdb на рамдиске имеет смысл, когда памяти завались, а сиквел не может всю ее утилизировать.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983531
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Вы, прежде чем писать про "адаптацию", осознайте разницу между SI и RCSI. А после осознания приведите пример, когда именно на RCSI без адаптации будет "хрень".


Модератор: обсуждаем sql server, а не друг друга
блокировочник. два типа транзакций: первая делает апдейт на мастер таблицу, потом делает апдейты в детаил таблицах. вторая: читает мастер, после чего инсертит в детаил.
у блокировочника первый тип транзакций заблокирует второй тип, пока первая не снимет блокировку, вторая не прочтет мастер таблицу. если бездумно эту логику перенести на версионный IL, не важно SI или RCSI, получится хрень, т.к. второй тип транзакции в версионном режиме будет инсертить независимо от того, что делает первый тип транзакций.
если тебе нужно разжевывать такие простые вещи, ты явно занялся не своим делом.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983534
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги а в чем спор? Наверняка можно сравнить запрос на тестовой бд с включенным режимом версионирования и без. (Ну разумеется с открытыми транзакциями увеличивающие кол. версий) а затем сравнить reads. Уверен такие примеры уже существуют.tpc-e хорошо, но можно же и попроще метрики сравнивать
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983554
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
первая делает апдейт на мастер таблицу, потом делает апдейты в детаил таблицах. вторая: читает мастер, после чего инсертит в детаил.


Достаточно один раз читающей мастер транзакции добраться до мастер таблици первой, и в блркировочном режиме мы получим все теже проблемы. Если требуется синхронизировать чтение из мастера и запись в детейл, нужно повышать читающую мастер транзакцию до RR
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983555
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
представь. блокировочник. два типа транзакций: первая делает апдейт на мастер таблицу, потом делает апдейты в детаил таблицах. вторая: читает мастер, после чего инсертит в детаил.
у блокировочника первый тип транзакций заблокирует второй тип, пока первая не снимет блокировку, вторая не прочтет мастер таблицу. если бездумно эту логику перенести на версионный IL, не важно SI или RCSI, получится хрень
"Великий адаптатор со стажем" видимо не в курсе что такое RC и что описанная ситуация никак не противоречит RC.
И на RC разруливание такого конфликта должно быть реализовано явно, если это вообще считается конфликтом по БЛ.
А если код писал рукожоп и этого не сделал, то он ССЗБ.
И об этом я уже упоминал - 22172207
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983588
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Владислав Колосов
invm,

эти 14 байт работают очень жестко, по всей видимости, происходит расщепление страниц и так далее. Через три часа терпение у людей лопнуло и пришлось всё отключить.
Да, отлично, "просто не дождались".
Если эффективный менеджер приказывает корячить галочку в настройках, а потом через 3 часа корячит обратно, "не шмогла"(с), то цирк не в RCSI, цирк в организации.


Не думаю, что это верный подход к определению, на производстве сферические кони никого не интересуют и в боевой обстановке меткость оружия снижается на порядок и больше. Технология классная, только внедрить ее нельзя без плясок с бубном и неожиданными последствиями. Вы же покупаете автомобиль с уверенностью, что он заведется и поедет. не так ли? Это коммерческий продукт и работать он должен соответственно.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983590
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

Достаточно один раз читающей мастер транзакции добраться до мастер таблици первой, и в блркировочном режиме мы получим все теже проблемы. Если требуется синхронизировать чтение из мастера и запись в детейл, нужно повышать читающую мастер транзакцию до RR

не нужно ничего менять, нужно понять, что пример иллюстрирует. нужно осознать, что при переключении поведение транзакций кардинально изменится.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983591
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

авторДа, нужно потратить ресурсы на tempdb, и что такого?

На производстве существуют планы закупки оборудования, причем на следующий год. Как, например, оценить затраты на рост tempdb, существуют ли какие-то способы оценки?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983603
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
msLex

Достаточно один раз читающей мастер транзакции добраться до мастер таблици первой, и в блркировочном режиме мы получим все теже проблемы. Если требуется синхронизировать чтение из мастера и запись в детейл, нужно повышать читающую мастер транзакцию до RR

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


Да, только ваш пример отлично демонстрирует, что в большинстве случаев "проблемы" при переходе на RCSI вызваны изначальными ошибками в проектировании, и те же проблемы возможны и при блокировочном RS.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983606
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
msLex

Достаточно один раз читающей мастер транзакции добраться до мастер таблици первой, и в блркировочном режиме мы получим все теже проблемы. Если требуется синхронизировать чтение из мастера и запись в детейл, нужно повышать читающую мастер транзакцию до RR

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

Да, речь о том, что если в криво написанной логике все работало из-за блокировок по стечению обстоятельств то, в этом случае, процессы сломаются. О чем я писал выше: "Нельзя вот так просто перейти на RCSI" без полной, трудозатратной ревизии кода и рефакторинга + аппаратные затраты. Писать с учетом RCSI и планировать "железо" надо с первой строчки продукта.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983610
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, если бы MS устроили так, что RCSI можно было бы включить хинтом или SET настройкой, при том, что для остального кода RC остался при включение RCSI для базы, то проблем не было бы. Можно было предусмотреть два режима - активный, когда все запросы обрабатываются с версиями и пассивный, когда только указанные запросы так обрабатываются. Вот это был бы коммерческий подход.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983616
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
нужно осознать, что при переключении поведение транзакций кардинально изменится.
Осознаем. Как только покажете пример "на RC не хрень, а на RCSI - хрень".
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983632
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Да, речь о том, что если в криво написанной логике все работало из-за блокировок по стечению обстоятельств
Можете привести пример такого стечения обстоятельств на RC, которые всегда стекаются так, что неявно обеспечивается правильный результат?
Владислав Колосов
Писать с учетом RCSI и планировать "железо" надо с первой строчки продукта.
Писать надо с учетом RC. Потому что поведение транзакции определяется TIL. А с точки зрения TIL - RC и RCSI этого одно и тоже.
А вы и адаптатор никак не можете этого понять.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983635
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Однако, если бы MS устроили так, что RCSI можно было бы включить хинтом или SET настройкой
MS поступили мудрее - RC можно включать хинтом readcommittedlock.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983738
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
SET ALLOW_SNAPSHOT_ISOLATION ON не обязывает переключать RC в RCSI.
Что, так и не удосужился почитать про разницу между SI и RCSI?

Ну и пример не засчитан, ибо не показывает требуемое.
На будущее: прежде чем надувать щеки - внимательно читай, что тебе пишут.

На этом я с тобой прощаюсь.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983761
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

такой сценарий разве не приведет к ошибке?

1 процесс: UPDATE SET f1 = 'a' WHERE ... f1 = 'b'
2 процесс: IF NOT EXISTS (SELECT * FROM ... WHERE f1='a') INSERT ... 'a'

где f1 уникально. Второй процесс при RCSI прочитает 'b' и попытается вставить 'a', но первый процесс также будет обновлять на 'a'.
В случае RC 2 процесс при выполнении SELECT будет заблокирован до обновления 'b' на 'a'.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983766
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Владислав Колосов
Однако, если бы MS устроили так, что RCSI можно было бы включить хинтом или SET настройкой
MS поступили мудрее - RC можно включать хинтом readcommittedlock.


Относительно READCOMMITTEDLOCK я размышлял, однако, оснащать 99% таблиц таким хинтом не хочется.
Однако, я увидел, что при подключении реплики доступности AlwaysON сервер начинает резервировать 14 байт в строках, если реплика включена в режиме чтения. Надо подумать на возможностью включения RCSI, поскольку реплику не так давно включили.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983781
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
такой сценарий разве не приведет к ошибке?
Приведет.
Но если на RC поменять процессы местами, получите такую же ошибку.

Просто вы рассуждаете не в контексте TIL, а в контексте специфики реализации этого TIL через блокировки.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983790
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
alexeyvg
пропущено...
Да, отлично, "просто не дождались".
Если эффективный менеджер приказывает корячить галочку в настройках, а потом через 3 часа корячит обратно, "не шмогла"(с), то цирк не в RCSI, цирк в организации.


Не думаю, что это верный подход к определению, на производстве сферические кони никого не интересуют и в боевой обстановке меткость оружия снижается на порядок и больше. Технология классная, только внедрить ее нельзя без плясок с бубном и неожиданными последствиями. Вы же покупаете автомобиль с уверенностью, что он заведется и поедет. не так ли? Это коммерческий продукт и работать он должен соответственно.
И у Оракла оно работало бы так же, если бы версионность была не изначально, а переключалось бы из блокировочника.
И что?

А 10 тонный кран должен поднимать 100 тонн, и на жигули можно нагрузить как на товарный поезд?

На производстве сферические кони никого не интересуют, там покупают продукт, и эксплуатируют его согласно его назначению, посредством найма умеющего специалиста, а не так, что бы менеджер согнал бы крановщика, и стал бы тянуть с 10 кратным перевесом.

Это физика, против не попрёшь, называй "цирком" или не называй.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983822
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm

На будущее: прежде чем надувать щеки - внимательно читай, что тебе пишут.


transaction 1
Код: sql
1.
2.
insert into detail_table select id, 20 from main_table where id=1 and isAllowed=1;
commit;



transaction 2
Код: sql
1.
2.
3.
4.
begin tran
update main_table set isAllowed=0 where id=1;
delete from  detail_table where id=1;
commit;



на RC isAllowed=0 гарантирует пустоту в detail_table, на RCSI же будет хрень (tm).
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983897
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
на RC isAllowed=0 гарантирует пустоту в detail_table, на RCSI же будет хрень (tm).
Как получить хрень (tm) на блокировочном RC. Пошаговая инструкция.1. Подготовка таблиц и данных
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
use tempdb;
set transaction isolation level read committed;
go

create table dbo.main_table (id int, IsAllowed bit);
create table dbo.detail_table (id int, some_value int);
create table dbo.some_table (id int, some_value int);

insert into dbo.main_table values (1, 1);
insert into dbo.some_table values (1, 1);
go


2. Открываем новое соединение и выполняем
Код: sql
1.
2.
3.
4.
5.
6.
7.
use tempdb;
set transaction isolation level read committed;
go

begin tran;

update dbo.some_table set some_value = 2 where id = 1;


3. Открываем новое соединение и выполняем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
use tempdb;
set transaction isolation level read committed;
go

begin tran;

insert into dbo.detail_table
select
 mt.id, st.some_value
from
 (select top (1) id from dbo.main_table where IsAllowed = 1 order by id) mt join
 dbo.some_table st on st.id = mt.id;

commit;


4. Открываем новое соединение и выполняем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
use tempdb;
set transaction isolation level read committed;
go

begin tran;

update dbo.main_table set IsAllowed = 0;
delete from dbo.detail_table where id = 1;

commit;


5. В соединении из п.2 выполняем commit

6. Любуемся хренью (tm)
Код: sql
1.
2.
3.
4.
5.
select
 mt.id, mt.IsAllowed, dt.some_value
from
 dbo.main_table mt join
 dbo.detail_table dt on dt.id = mt.id;

...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983910
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

безусловно можно говнокодить, так что не будет работать ни в RC ни RCSI. но ты хотел пример который работает на RC и хрень на RCSI
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983920
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Владислав Колосов
пропущено...


Не думаю, что это верный подход к определению, на производстве сферические кони никого не интересуют и в боевой обстановке меткость оружия снижается на порядок и больше. Технология классная, только внедрить ее нельзя без плясок с бубном и неожиданными последствиями. Вы же покупаете автомобиль с уверенностью, что он заведется и поедет. не так ли? Это коммерческий продукт и работать он должен соответственно.
И у Оракла оно работало бы так же, если бы версионность была не изначально, а переключалось бы из блокировочника.
И что?

А 10 тонный кран должен поднимать 100 тонн, и на жигули можно нагрузить как на товарный поезд?

На производстве сферические кони никого не интересуют, там покупают продукт, и эксплуатируют его согласно его назначению , посредством найма умеющего специалиста, а не так, что бы менеджер согнал бы крановщика, и стал бы тянуть с 10 кратным перевесом.

Это физика, против не попрёшь, называй "цирком" или не называй.


Спасибо,- поржал!: нынешним утром напряг сразу двух человек увидев в рабочей базе адский триггер с курсором. Ну вот так "сложилось",- и всё тут. И ведь нормально работает уже полгода как В общем, у коллег выходные "незадались",- но они об этом пока не догадываются...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983921
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
безусловно можно говнокодить, так что не будет работать ни в RC ни RCSI
Говнокодить - это писать так, как-будто TIL RC гарантирует что-еще, кроме отсутствия грязного чтения.
Твой пример и есть такой говнокод, что и было продемонстрировано.
А то, что ты не понял как и почему это происходит - так это твои проблемы - учи матчасть. Или вежливо попроси объяснить.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983959
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах, мечты об идеальном коде, который учитывает возможность существования RCSI сейчас и тем более учитывал это в 2010ish году. Вот бы весь SQL код писали только профессионалы... Как же жестоко устроен мир, что всякие там... пейзане... фи... пишут код, который, при включении RCSI меняет свое поведение! *упал в обморок*

*пришел в себя* А если подумать... не все так идеально в мире SQL, да и в принципе, экспертные знания SQL сами не приносят счастья, тем более, когда надо вот так, с переходами на ты ...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39984050
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
Ах, мечты об идеальном коде, который учитывает возможность существования RCSI
Опять...
Не надо учитывать существование RCSI или еще какой-нибудь реализации TIL RC.
Надо просто правильно писать под этот самый TIL RC. И это должно быть требованием, иначе обязательно будут сюрпризы, именуемые "хренью".
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39984283
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Владислав Колосов
такой сценарий разве не приведет к ошибке?
Приведет.
Но если на RC поменять процессы местами, получите такую же ошибку.

Просто вы рассуждаете не в контексте TIL, а в контексте специфики реализации этого TIL через блокировки.


Это да. Есть такие неудачные решения, которые работают если не с использованием багов, то фич. А когда баг исправляют, решение перестаёт работать.
...
Рейтинг: 0 / 0
96 сообщений из 96, показаны все 4 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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