Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кто-нибудь работал с database snapshot?  [new]
User2155
Member

Откуда:
Сообщений: 150
Всем привет,

есть боевая база на несколько ТБ. К ней прилагается группа разработчиков, которые что-то делают, и группа пользователей, которые что-то постоянно читают. Проблема в том, что пользователи часто мешают разработчикам и наоборот.

Репликацию делать не вариант, т.к. нет места. Хотел сделать database snapshot.

Вопрос:
- правильно ли я понимаю, что snapshot не сможет разгрузить диски?
Т.е. данные как читались с одного диска, так и будут с него читаться. По причинческим технинам именно диски являются слабым местом на базе, поэтому для меня вопрос критичный.

Спасибо.
17 окт 17, 10:02    [20874832]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Eleanor
Member

Откуда:
Сообщений: 2641
User2155
Проблема в том, что пользователи часто мешают разработчикам и наоборот.

У вас проблема в том, что запросы друг друга блокируют или в том, что пользователи и разработчики вместе создают большую нагрузку на диск?
Если нагрузку на диск, то снапшот действительно не поможет.
17 окт 17, 10:13    [20874893]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Eleanor
Member

Откуда:
Сообщений: 2641
Или у вас есть отдельный зеркальный сервер, где вы хотите сделать снапшот?
17 окт 17, 10:16    [20874914]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
User2155
Member

Откуда:
Сообщений: 150
Eleanor,

отдельного сервака нет.
С дисками - да, проблема. Они большого размера, поэтому на них хранится много информации и если пользователи/программери что-то делают, то большой шанс что они это будут делать на одном диске.
17 окт 17, 10:26    [20874964]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Нектотам
Guest
User2155,

При наличии снепшотов запись в основную БД становится примерно в N+1..N+1.5 раз дольше (и примерно на столько же IO больше) (N - количество снимков данной БД). Это связано с тем, что снимки делаются через разреженные файлы NTFS и используется Copy-on-Write.

Чтения остаются примерно той же интенсивности. CPU используется немного интенсивнее.
Транзакционные блокировки между читателями и писателями зато можно исключить, причем читатели читают консистентный набор данных.
17 окт 17, 10:32    [20874987]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Офтоп. А что программисты делают в рабочей базе? Или это не совсем программисты?
17 окт 17, 10:33    [20874994]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
User2155
Member

Откуда:
Сообщений: 150
Mike_za,

Там идут перегрузки данных. У нас база аналитическая, т.е. хранилище, которое постоянно пополняется.
Программисты запускают SSIS пакеты и SQL хранимки, процессят кубики. Нет, автоматизировать пока не удалось, но работаем.
17 окт 17, 10:51    [20875053]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
User2155,

снимок фиксирует наборы данных и программный код на момент создания снимка. В случае интенсивного обновления данных надо подготовить достаточно места под рост базы снимка. Удобно использовать для построения отчетов, кубов и прочего, что не требует записи в базу. На диски нагрузку Вы не снизите, но уменьшите количество конфликтов чтения и обновления, устраните проблемы "зависших" внешних запросов.
17 окт 17, 11:39    [20875286]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Нектотам
User2155,

При наличии снепшотов запись в основную БД становится примерно в N+1..N+1.5 раз дольше (и примерно на столько же IO больше) (N - количество снимков данной БД). Это связано с тем, что снимки делаются через разреженные файлы NTFS и используется Copy-on-Write.

Чтения остаются примерно той же интенсивности. CPU используется немного интенсивнее.
Транзакционные блокировки между читателями и писателями зато можно исключить, причем читатели читают консистентный набор данных.
Запись замедлиться в 2+ раза, еще и нагрузка на память вырастет. Если памяти не хватит, то и чтения просядут.
17 окт 17, 23:15    [20877621]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
Mind
Нектотам
User2155,

При наличии снепшотов запись в основную БД становится примерно в N+1..N+1.5 раз дольше (и примерно на столько же IO больше) (N - количество снимков данной БД). Это связано с тем, что снимки делаются через разреженные файлы NTFS и используется Copy-on-Write.

Чтения остаются примерно той же интенсивности. CPU используется немного интенсивнее.
Транзакционные блокировки между читателями и писателями зато можно исключить, причем читатели читают консистентный набор данных.
Запись замедлиться в 2+ раза, еще и нагрузка на память вырастет. Если памяти не хватит, то и чтения просядут.
Запись замедлится в 2 раза в несколько маргинальном случае, когда каждая модификация попадает на новую страницу.
Про чтения аналогично -- должен быть еще более крайний случай, когда всем вдруг стали нужны данные с модифицированных ранее страниц.

Сообщение было отредактировано: 18 окт 17, 01:25
18 окт 17, 01:14    [20877727]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Гавриленко Сергей Алексеевич
Запись замедлится в 2 раза в несколько маргинальном случае, когда каждая модификация попадает на новую страницу.
Про чтения аналогично -- должен быть еще более крайний случай, когда всем вдруг стали нужны данные с модифицированных ранее страниц.
20 окт 17, 02:27    [20884344]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Гавриленко Сергей Алексеевич
Запись замедлится в 2 раза в несколько маргинальном случае, когда каждая модификация попадает на новую страницу.
Это в теории так, а на практике все совсем по-другому. Скажите мне какие модификации существующих данных происходят при записи в пустую таблицу? А вот сервер считает что происходит и что-то копирует в снапшот. И не в 2 раза на самом деле, а больше, не уверен во всех случая так происходит или нет, но наблюдали такую картину: обновляем много строк, запись на диск пошла экстентами по 64Кб, но снапшот отслеживает постранично, и в спанпшот пошли 8 операций записи. Итого все стало медленнее условно в 9 раз.

Гавриленко Сергей Алексеевич
Про чтения аналогично -- должен быть еще более крайний случай, когда всем вдруг стали нужны данные с модифицированных ранее страниц.
Про это я вообще молчу, я про другое. У вас теперь две базы, два кэша данных, и теперь при кривых запросах 10ти гигабайтная таблица скушает 20Гб памяти. Если памяти не хватит на обе базы, то увеличатся чтения с диска, что приведет к тормозам уже в обеих базах, не только в спашоте.
20 окт 17, 02:39    [20884351]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
bideveloper
Member

Откуда:
Сообщений: 486
User2155,
А у вас включён уже snapshot read committed on?
20 окт 17, 03:46    [20884367]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
Mind,

проблем скорости чтения не замечал, не далее как вчера переключили один из отчетов на снимок - время запроса приблизительно тоже самое.
Какая у вас версия сервера?
20 окт 17, 12:23    [20885415]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
o-o
Guest
Владислав Колосов
Mind,

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

версия ни при чем.
у вас просто памяти не под завязку, вот и не замечаете.
еще раз, пусть даже никто данные не меняет и не трогает вообще,
теперь кто-то читает полностью таблицу из базы-оригинала, а кто-то ту же таблицу читает из снэпшота,
думаете, второй заюзает страницы, поднятые с диска первым?
снапшот считается отдельной базой, так что страницы для второго запроса будут продублированы,
т.е. в памяти вместо одного экземпляра таблицы будут уже два.
теперь весь вопрос только в размере таблицы и в размере доступной памяти
20 окт 17, 12:43    [20885477]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
o-o,

как я понял - утверждалось, что снапшот приводит к деградации запросов при любых условиях, а не только при экстремальных.
Если мы прижмем памятью запросы - это все же экстремизм. То есть при достаточных для его работе условиях (память, диски) снапшот все же заметно НЕ ухудшает ситуацию, например, избыточными вычислениями или накладными расходами на чтение страниц из разных источников.
Нельзя писать в таком ключе, что снапшот - абсолютное зло.

Относительно записи в таблицы не буду ничего утверждать, не проводил наблюдения.
20 окт 17, 13:03    [20885576]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь работал с database snapshot?  [new]
o-o
Guest
при чем тут экстремизм?
Mind намекнул, что не надо думать, что снэпшот это такой бесплатный довесок к базе.
это "вторая база", и даже если на диске она может ничего не занимать, если в исходной базе ничего не поменялось,
то в памяти она гарантированно будет занимать место,
ибо хоть и будут вам читаться страницы исходной базы при обращении к снэпшоту,
это уже будут страницы "второй базы".
т.е. с памятью снэпшот работает абсолютно неэффективно.
что не всем очевидно
20 окт 17, 13:19    [20885682]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить