Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58TaPaKи скорее всего в индексы в не попадаете Вот эту фразу не совсем понял. fullscan статистики в ночь включу. если не смотрите в конкретные запросы, то начните например https://blog.sqlauthority.com/2011/01/03/sql-server-2008-missing-index-script-download/ с фильтром на ваши основные объекты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:09 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
TaPaKесли не смотрите в конкретные запросы, то начните например https://blog.sqlauthority.com/2011/01/03/sql-server-2008-missing-index-script-download/ с фильтром на ваши основные объектынужно предупредить - что все рекомендации, выдаваемые такими скриптами, требуют тщательной проверки! Возможно, в системе уже есть подобные индексы, у которых всего лишь не хватает поля-другого в секции include. Слепо плодить индексы - не стОит, они - не бесплатные. Индексы нужно хранить, индексы нужно поддерживать в актуальном состоянии (и сейчас речь не за пользовательские манипуляции, а про "подкапотную" работу сервера, связанную с поддержанием целостности и актуальности индексов и с вязанной с ними информацией). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:16 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Щукина АннаTaPaKесли не смотрите в конкретные запросы, то начните например https://blog.sqlauthority.com/2011/01/03/sql-server-2008-missing-index-script-download/ с фильтром на ваши основные объектынужно предупредить - что все рекомендации, выдаваемые такими скриптами, требуют тщательной проверки! Возможно, в системе уже есть подобные индексы, у которых всего лишь не хватает поля-другого в секции include. Слепо плодить индексы - не стОит, они - не бесплатные. Индексы нужно хранить, индексы нужно поддерживать в актуальном состоянии (и сейчас речь не за пользовательские манипуляции, а про "подкапотную" работу сервера, связанную с поддержанием целостности и актуальности индексов и с вязанной с ними информацией). чукча не читатель? авторPlease note, if you should not create all the missing indexes this script suggest. This is just for guidance. You should not create more than 5-10 indexes per table. Additionally, this script sometime does not give accurate information so use your common sense. авторИндексы нужно хранить кхм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:20 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
TaPaK, почитайте, с каким рвением и, практически, без проверок ТС пускает решения с форума в продакт (и его можно понять - база "тормозит", работа стоит, сроки срываются - тут нет времени на обдумывания и глубокое погружение во всё и сразу)... Вам станет понятно - что это не такое уж и бесполезное замечание.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:26 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, я к тому, что стОит делать акценты на очевидные (не для новичка), но критичные в ситуации ТС моменты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:27 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, охх сколько бессмысленного текста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:28 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
TaPaK, вас никто не заставляет его читать... ;) можете просто игнорировать посты с моим авторством... в конце концов - я же не вам помогаю ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 12:31 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Щукина АннаTaPaK, почитайте, с каким рвением и, практически, без проверок ТС пускает решения с форума в продакт (и его можно понять - база "тормозит", работа стоит, сроки срываются - тут нет времени на обдумывания и глубокое погружение во всё и сразу)... Вам станет понятно - что это не такое уж и бесполезное замечание.... на самом деле это действительно полезно - предупредить об использовании "опасных" советов/скриптов. Поэтому, в очередной раз, спасибо. А можно вопрос? А то запутались совсем... - Разностное резервное копирование (Differential backup) BACKUP DATABASE WITH DIFFERENTIAL; - Резервное копирование журнала транзакций (Transaction Log Backup) BACKUP LOG; это взаимоисключащие вещи или нет? То есть, если мы делаем разностное копирование надо ли нам делать второе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 14:33 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58, если не хотите терять данные между разностными копими, то надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 14:47 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58А можно вопрос? А то запутались совсем... - Разностное резервное копирование (Differential backup) BACKUP DATABASE WITH DIFFERENTIAL; - Резервное копирование журнала транзакций (Transaction Log Backup) BACKUP LOG; это взаимоисключащие вещи или нет? То есть, если мы делаем разностное копирование надо ли нам делать второе? [SET "Captain Obvious" = ON] Гораздо правильнее будет сказать - "взаимодополняющие". 1) Полный бэкап, как и следует из его названия, представляет собой самодостаточную консистентную согласованную копию базы данных на определенный момент времени. В случае сбоя базы и при наличии только полного бэкапа - восстановиться можно, но лишь на состояние базы, соответствующее моменту выката бэкапа. Все изменении с момента выката копии и до краха базы - будут утеряны. 2) Разностный бэкап, как и алгебраическая "разность", представляет собой разницу между "уменьшаемым" и "вычитаемым" - то есть, по сути, это копия тех страниц, что претерпели изменения с момента последнего бэкапа. И так как это "разность", то сама по себе, без исходного состояния базы, он не представляет никакой ценности. Для восстановления с разностной копии требуется "уменьшаемое" - стартовая ПОЛНАЯ копия базы + все промежуточные "разности". Восстановление возможно лишь на момент выката любой из разностных копий. При наличии только разностной копии, без полной - восстановиться невозможно. 3) Копия транзакт-лога. Журнал, он и в африке - журнал. Содержит все ЛОГИРУЕМЫЕ операции, применяемые к базе. Сам по себе - малоинтересен и бесполезен. Но при наличии исходной полной копии и промежуточных копий журнала позволяет восстановиться на любой момент времени. В этом плане, если и решать вопрос резервного копирования, то предпочтительнее будет делать полное копирование (обязательно) + копии журнала (обязательно) + разностные копии (по желанию). Периодичность того или иного вида копирования - выбирать исходя из требований ко времени восстановления и допустимому "объему" потерянных данных в случае краха. Потому как, восстановиться с недельной давности полной копии + накат разностных копий за неделю + накат логов с момента последнего разностного бэкапа до момента краха, скорее всего, будет быстрее, чем восстановление с полной копии + накат всех логов за неделю. [SET "Captain Obvious" = OFF] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 16:08 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Щукина АннаГораздо правильнее будет сказать - "взаимодополняющие"... Вооот! У вас очень просто и понятно написано, откуда вы цитируете если не секрет? И у меня несколько уточняющих вопросов: 1.если делать только полный бекап по понедельникам и каждый следующий день недели разностный, то что будет с лог файлом? Он будет расти и расти? Надо ли его как-то чистить? Вот этот момент мне не понятен. Или вообще я не должен беспокоится о его размере, сколько он будет весить, столько и должен, а попытки его уменьшить негативно отразятся на работе БД? 2. Если делать полный бекап по понедельникам, разностный ежедневно в 02:00, а бекап транзакт-лога в полдень. То как выглядит восстановление? Сначала восстанавливаем последний полный бекап, потом последний разностный и потом последний транзакт-лог? я думаю, надо мне проще создать тестовую бд и поиграться с различными вариантами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 16:22 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58, усвойте уже простую истину: в полной модели восстановления единственно возможный способ сделать так что бы журнал транзакций не рос до бесконечности это сделать его бэкап {инструкция backup log} если вас не смущает что в какой то момент место на диске может закончится то можете бекапов лога не делать. (опять таки же на произвольный момент времени не восстановитесь не имея бекапа лога) вся информация есть в официальной справке: https://docs.microsoft.com/ru-ru/sql/relational-databases/backup-restore/transaction-log-backups-sql-server?view=sql-server-2017 https://docs.microsoft.com/ru-ru/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 16:41 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58, 1) В общем случае, транзакт-лог - это "бесконечная лента", размер которой ограничен либо заданным на уровне базы лимитом, либо (в отсутствии лимита) - доступным размером свободного места на диске. Как вам уже отвечали ранее другие ораторы - размер лога (занятое место внутри LDF-файла) уменьшается (штатно) только механизмом его резервного копирования. Ни полный бэкап, ни разностный бэкап - размер транзакт-лога не уменьшают. Есть "нештатный" способ уменьшения лога - перевод базы в режим восстановления "simple" с последующим шринком лога. Почему "нештаный"? Потому что есть ограничения на его применения. Если в базе используются вещи, требующие режима "full" или "bulk" (к примеру, лог-шиппинг), то перевод базы в "simple" "ломает" эти вещи и требует дальнейшей их повторной настройки. Более того - сервер будет всячески сопротивляться переводу в simple в этом случае. Поэтому, сначала придется "сломать" лог-шиппинг, после - перевести базу в симпл, урезать лог, а затем - всё вернуть в исходное состояние. Поверьте - по количеству телодвижений и потенциальных мест для факапа - это сильно сложнее, чем банальный бэкап транзакт-лога. 2) Если есть набор разных вариантов бэкапа, то и варианты восстановления будут разные. Можно восстановить полный бэкап и накатить на него все доступные копии журнала транзакций, без промежуточного наката разностных копий. Можно восстановиться с полной копии, "догнаться" всеми промежуточными разностными до какой-то точки, после чего "шлифануть" всё копией журнала. Тут главное помнить - движемся от большего к меньшему. Накатили полный - (опционно) накатили разностные - накатили журнал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 16:54 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58Щукина АннаГораздо правильнее будет сказать - "взаимодополняющие"... Вооот! У вас очень просто и понятно написано, откуда вы цитируете если не секрет? И у меня несколько уточняющих вопросов: 1.если делать только полный бекап по понедельникам и каждый следующий день недели разностный, то что будет с лог файлом? Он будет расти и расти? Надо ли его как-то чистить? Вот этот момент мне не понятен. Или вообще я не должен беспокоится о его размере, сколько он будет весить, столько и должен, а попытки его уменьшить негативно отразятся на работе БД? 2. Если делать полный бекап по понедельникам, разностный ежедневно в 02:00, а бекап транзакт-лога в полдень. То как выглядит восстановление? Сначала восстанавливаем последний полный бекап, потом последний разностный и потом последний транзакт-лог? я думаю, надо мне проще создать тестовую бд и поиграться с различными вариантами. для ваших объёмов вы можете спокойно делать full раз в сутки + log (15- 60 минут) и хранить эту вакаханалию на -7 дней(или как душа желает). Дифференциальный вам не ясно зачем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 16:59 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Serg58Вооот! У вас очень просто и понятно написано, откуда вы цитируете если не секрет?Это - вольный, адаптированный и упрощенный пересказ документации ;). Хотя, некоторые считают, что это всего лишь "охх сколько бессмысленного текста..." :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 17:15 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Щукина Анна...+ все промежуточные "разности" .... + накат разностных копий за неделю У меня создалось впечатление, что вы путаете инкрементальные бэкапы с дифференциальными. Инкрементальные - содержат разницу между предыдущим инкрементальным (если он был) или полным (если не было) бэкапом и текущим состоянием. Дифференциальные всегда содержат разницу между полным бэкапом и текущим состоянием. В SQL Server есть только дифференциальные бэкапы, поэтому использовать необходимо один разностный бэкап - самый последний перед датой, на которую вы желаете восстановиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 18:24 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Minamoto, верное замечание... видимо, в голове "сварилась каша" из Oracle/PostgreSQL/MS SQL... В целом, понятно, что общие стратегии и подходы - везде если не одинаковы, то схожи... Нужно будет вспомнить СУБД-зависимые нюансы и разложить всё по полочкам... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 20:11 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
TaPaKдля ваших объёмов вы можете спокойно делать full раз в сутки + log (15- 60 минут) и хранить эту вакаханалию на -7 дней(или как душа желает). Дифференциальный вам не ясно зачем+1 Классический простой вариант, позволяет восстановить данные на любую секунду, прост в управлении. Диффами многие заморачиваются, видимо, из за названия, а зря. Они сложнее, и неоптимальны по месту хранения. Притом они не прощают ошибок - сделанным каким то внешним средством бакапом можно их запороть, и получить отсутствие бакапов в самый ответственный момент, причём узнать про это получится именно тогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2018, 20:26 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
alexeyvgTaPaKдля ваших объёмов вы можете спокойно делать full раз в сутки + log (15- 60 минут) и хранить эту вакаханалию на -7 дней(или как душа желает). Дифференциальный вам не ясно зачем+1 Классический простой вариант, позволяет восстановить данные на любую секунду, прост в управлении. Диффами многие заморачиваются, видимо, из за названия, а зря. Они сложнее, и неоптимальны по месту хранения. Притом они не прощают ошибок - сделанным каким то внешним средством бакапом можно их запороть, и получить отсутствие бакапов в самый ответственный момент, причём узнать про это получится именно тогда. Таки позволю себе немного дополнить уважаемых коллег. Сам принцип создания индексов приводит к тому, что размер базы данных распухает - и распухает бэкап как самой базы, так и ее журнала транзакций (в общих чертах). Бэкап нужен не абы какой. А такой, чтобы можно было восстановиться на нужный момент НЕ прерывая бизнес. Перефразирую. Есть таблица 10 Гбайт с кластерным индексом (условно). На нее можно навесить 3 некластерных индекса еще по 5 Гбайт. Итого получаем вместо базы в 10 новый размер в 25 - в 2.5 раза больше предыдущего. Подобрали железо такое, что бэкап делается 10 минут, а восстанавливаем из него базу в случае ее повреждения - 8 минут. База обслуживает учетную систему, в которую вносятся первичные документы (ну или продажи/заказы по интернет-магазину). И главный директор говорит так - "12 минут простоя мы можем себе позволить, а свыше 12 - уже нет. Некуда будет вбивать первичные документы или факты, а на бумаге записывать и потом в базу вбивать невозможно никак". Отсюда вывод - делать бэкап 10 минут и разворачивать 8 минут можно. Делать 15 и разворачивать 12 минут - уже на грани фола. Поэтому один некластерный индекс в 5 Гб мы можем себе позволить и использовать его - а вот три индекса таки никак нельзя. Не соответствует целям ЗАКАЗЧИКА и по факту главного владельца и распорядителя всей этой базы. И поэтому когда разработчики говорят "а вот бы еще парочку кошерных индексов создать, чтобы 99% тяжелых отчетов ускорить раз в 10" - DBA отвечает - "стоп, извините, делайте асинхронную реплику, обвешивайте ее индексами, а на первичную реплику/базу я больше ничего не дам создать". Надеюсь, понятно разъяснил автору темы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 00:32 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPИ поэтому когда разработчики говорят "а вот бы еще парочку кошерных индексов создать, чтобы 99% тяжелых отчетов ускорить раз в 10" - DBA отвечает - "стоп, извините, делайте асинхронную реплику, обвешивайте ее индексами, а на первичную реплику/базу я больше ничего не дам создать".Тема создания индексов только на вторичной асинхронной реплике (на основной-то DBA запрещает!) раскрыта не полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 02:19 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичAndy_OLAPИ поэтому когда разработчики говорят "а вот бы еще парочку кошерных индексов создать, чтобы 99% тяжелых отчетов ускорить раз в 10" - DBA отвечает - "стоп, извините, делайте асинхронную реплику, обвешивайте ее индексами, а на первичную реплику/базу я больше ничего не дам создать".Тема создания индексов только на вторичной асинхронной реплике (на основной-то DBA запрещает!) раскрыта не полностью. Тема интересная. Берешь read-only реплику, навешиваешь на нее кучу индексов, все запросы на выборку направляешь туда, а на primary оставляешь одни кучи, ну или где надо добавляем класт. индекс и парочку обычных, чтоб update всю таблицу не сканил, и все, во красота та какая! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 07:05 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Есть другая практика - развернутая и проиндексированная "вчерашняя" база для формирования отчетов на втором сервере. Дабы не мешать оперативному вводу, и не тормозить им отчетность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 07:33 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Всем огромное спасибо за ответы, ссылки, рекомендации. Очень много почерпнул. Вчера сделал на основную базу полное (fullscan) обновление статистики, выполнилась за 1ч40м. Продолжаю расчищать базу данных, на это уйдёт ещё примерно 20 суток. И на бекапы скорее всего перейдём ночью полностью, днём несколько раз бекап лога транзакций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 10:39 |
|
||
|
подскажите по расчистке БД и последующему обслуживанию
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичAndy_OLAPИ поэтому когда разработчики говорят "а вот бы еще парочку кошерных индексов создать, чтобы 99% тяжелых отчетов ускорить раз в 10" - DBA отвечает - "стоп, извините, делайте асинхронную реплику, обвешивайте ее индексами, а на первичную реплику/базу я больше ничего не дам создать".Тема создания индексов только на вторичной асинхронной реплике (на основной-то DBA запрещает!) раскрыта не полностью. И я таки не стану эту тему раскрывать. Хотя бы потому, что процитировал злобного DBA, который хочет запугать наивных и глуповатых разработчиков. Разумеется, термин "асинхронная реплика" никак не связан с AlwaysOn и прочими механизмами самого MSSQL. Но поскольку Вы, Сережа, работаете в конторе довольно успешной и имеете под рукой таких же молодых и талантливых разработчиков - я Вам лично могу хороший рецепт дать. Берете исходники MSSQL Server, смотрите механизм накатки журнала на вторичную реплику, пишете сетевой драйвер, который перехватывает и модифицирует пакеты с нужными транзакциями - типа на первичной отыграла insert 1 строка into ненужная таблица, подменили на вторичной create нужный индекс на нужной таблице, а далее delete 1 строка from ненужная таблица на drop нужный индекс на нужной таблице. Если драйверы под Windows будет написать сложно - поставьте 2017-й на кошерную корпоративную сборку типа RedHat. Под Linux намного проще драйверы писать, API меняется относительно небыстро для нужного направления. А мои гвардейцы проследят, чтобы при всем стратегическом союзе между красношапочными и микромягкими индусы из Редмонда не переходили в Роли и ничего не испортили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 11:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39647818&tid=1689625]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
16ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 448ms |

| 0 / 0 |
