# Обслуживание баз данных

Компонент SQL Server Database Engine автоматически поддерживает состояние индексов при выполнении операций вставки, обновления или удаления в отношении базовых данных. Со временем эти изменения могут привести к тому, что данные в индексе окажутся "разбросанными" по базе данных (фрагментированными). Фрагментация индексов негативно сказывается на скорость обработки данных.

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

{% hint style="info" %}
При необходимости создайте регламентное задание в SQL Server Configuration Manager и произведите настройки его расписания, *например, ежедневное в 03:00:00.*
{% endhint %}

![](https://2323113550-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDkZZ4KLHlNn6g8TQlV%2F-LtPbQH6PoUBOYjRjblG%2F-LtPhyw-eljksIku3OPY%2FImage%2031.png?alt=media\&token=542315fb-ee19-40bb-96ea-d21a24960c53)

Скачайте три файла и запустите их в окне SQL Management Studio в следующем порядке:

1. IndexOptimize.sql
2. CommandExecute.sql
3. LogOptimize.sql

{% file src="<https://2323113550-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDkZZ4KLHlNn6g8TQlV%2F-LtPbQH6PoUBOYjRjblG%2F-LtPhS5jRBq79vrVX_mY%2FIndexOptimize.sql?alt=media&token=92fd5d6a-2799-4ad7-b34d-2636ef239f1f>" %}

{% file src="<https://2323113550-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDkZZ4KLHlNn6g8TQlV%2F-LtPbQH6PoUBOYjRjblG%2F-LtPhYYJeX4O7ckfaXF2%2FCommandExecute.sql?alt=media&token=6942d4d1-9f04-4d33-ac0a-5ef65ad1bcd6>" %}

{% file src="<https://2323113550-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDkZZ4KLHlNn6g8TQlV%2F-LtPbQH6PoUBOYjRjblG%2F-LtPh_ki12Qqedx9vFnk%2FLogOptimize.sql?alt=media&token=7f27b810-fcfc-4e7a-b98b-ad3966566d08>" %}

В базе данных \[master] в разделе пользовательских хранимых процедур появятся соответствующие процедуры.

Для дефрагментации и обновления статистики в нужной базе данных выполните следующий код в SQL Management Studio

```sql
EXEC dbo.IndexOptimize @Databases = N'ИМЯ ВАШЕЙ БАЗЫ ДАННЫХ',
                       @UpdateStatistics = N'ALL';
```

или

```sql
EXEC dbo.IndexOptimize @Databases = N'ALL_DATABASES',
                       @UpdateStatistics = N'ALL';
```

для всех баз, размещенных на сервере.

В процессе выполнения в логе будет доступна информация о состоянии дефрагментируемых индексов и обновленных статистиках.

Для сжатия файла .log воспользуйтесь процедурой LogOptimize
