Преподаватель
Опубликован: 11.12.2006 | Уровень: специалист | Доступ: свободно
Лекция 30:

Администрирование Microsoft SQL Server

Команда UPDATE STATISTICS

По умолчанию SQL Server автоматически обновляет статистику. Вы можете отключить эту возможность с помощью команды UPDATE STATISTICS и затем обновлять статистику вручную, чтобы она соответствовала текущему состоянию данных. Эта команда позволяет вам обновлять статистику по индексированным колонкам и неиндексированным колонкам. Возможно, вы создадите сценарий, который будет выполнять команду UPDATE STATISTICS для наиболее часто модифицируемых таблиц, и затем будете периодически запускать этот сценарий как задание SQL Server. Это позволит поддерживать статистику в соответствии с текущим состоянием данных и поддерживать более высокую производительность запросов. (О синтаксисе и параметрах команды UPDATE STATISTICS см. в разделе "Перестроение индексов" [Rebuilding Indexes] "Создание и использование индексов" .) Чтобы активизировать или отключить автоматическое обновление для определенной статистики, вы можете использовать хранимую процедуру sp_autostats, которая описывается далее.

Процедура sp_autostats

Используя системную хранимую процедуру sp_autostats, вы можете активизировать или отключить автоматическое обновление определенной статистики. Запуск этой процедуры не приводит к обновлению данной статистики; она просто определяет, должно ли происходить автоматическое обновление статистики. Вызов этой хранимой процедуры происходит с одним, двумя или тремя параметрами: имя таблицы и – дополнительно – флаг и имя статистики. Флаг указывает состояние автоматического обновления и может принимать значения ON (включено) или OFF (отключено). Чтобы вывести текущий статус обновления для всех наборов статистики по определенной таблице (статистика по индексированным колонкам и неиндексированным колонкам), запустите эту команду с именем этой таблицы. Следующая команда выводит этот статус для наборов статистики по таблице Customers:

USE Northwind
GO
sp_autostats Customers
GO

Будет выведено имя каждого набора статистики независимо от значения флага автоматического обновления ( ON или OFF ) и время последнего обновления. Не обращайте внимания на заголовок первой колонки Index Name (Имя индекса). Он относится ко всем наборам статистики, а не только к индексам. Если вы не отключили вручную обновление для этих наборов статистики, то они будут представлены со статусом ON, поскольку это принятое по умолчанию состояние в SQL Server.

Чтобы отключить автоматическое обновление всех наборов статистики в таблице Customers базы данных Northwind, используйте следующую команду:

USE Northwind
GO
sp_autostats Customers, 'OFF'
GO

Вы можете снова активизировать автоматическое обновление статистики, задав для флага значение ON. Чтобы изменить статус определенного набора статистики или статистики для индекса, включите в обращение соответственно имя набора статистики или имя индекса. Например, следующая команда задает автоматическое обновление статистики для индекса PK_Customers:

USE Northwind
GO
sp_autostats Customers, 'ON', 'PK_Customers'
GO

Статус всех других наборов статистики по таблице Customers не изменится.

Рост файлов

Работая с SQL Server 2000, вы можете конфигурировать файлы данных для их автоматического увеличения по мере необходимости. Это средство полезно, поскольку оно препятствует случайному выходу файлов за пределы допустимого дискового пространства. Однако использование это средства не освобождает вас от обязанности мониторинга размера ваших баз данных и выполнения время от времени процедур планирования мощности. Вы также должны следить за тем, как быстро происходит рост таблиц, чтобы вы могли определить, нужно ли вам выполнять регулярное удаление ненужных, возможно, устаревших данных в некоторых таблицах, чтобы сдерживать рост ваших таблиц. По мере роста количества данных в таблице запросы могут занимать больше времени, что приводит к снижению уровня производительности. Тема конфигурирования автоматического роста при создании базы данных была затронута в "Создание баз данных" , а здесь вы узнаете, как изменять параметры увеличения файлов для существующей базы данных. Параметры автоматического роста файлов можно сконфигурировать в Enterprise Manager. Для этого выполните следующие шаги.

  1. В левой панели Enterprise Manager раскройте сервер и затем щелкните на папке Databases (Базы данных). Щелкните правой кнопкой мыши на базе данных, которую вы хотите модифицировать (в данном примере мы будем модифицировать базу данных MyDB), и выберите из контекстного меню пункт Properties, чтобы открыть окно свойств базы данных Properties.
  2. Щелкните на вкладке Data Files (Файлы данных) (рис. 30.5), чтобы увидеть свойства файлов данных для этой базы данных. Параметры секции File properties (Свойства файлов) предназначены для того, чтобы вы могли контролировать рост файла данных. Чтобы разрешить автоматический контроль роста файла, установите флажок Automatically grow file (Автоматический рост файла). Используя средство автоматического увеличения файла, вы должны задать ограничения, чтобы воспрепятствовать неконтролируемому росту файла.
    Вкладка Data Files (Файлы данных) окна Properties базы данных MyDB

    Рис. 30.5. Вкладка Data Files (Файлы данных) окна Properties базы данных MyDB
    Максимальный размер файла указывается с помощью параметров секции Maximum file size (Максимальный размер файла). Щелкните на кнопке выбора Restrict file growth (Ограничить рост файла) и введите максимально допустимый размер в прокручиваемом поле-счетчике. Если щелкнуть на кнопке выбора Unrestricted file growth (Неограниченный рост файла), то в дальнейшем вы можете столкнуться с тем, что вся ваша дисковая подсистема заполнена до конца без какого-либо предупреждения, создавая проблемы как для работы, так и производительности.

    Степень роста файла задается с помощью параметров секции File growth (Рост файла). Если щелкнуть на кнопке выбора In megabytes (Мегабайты), то после заполнения этого файла данных SQL Server увеличит его размер на указанную величину. Если щелкнуть на кнопке выбора By percent (Проценты), то SQL Server увеличит размер файла данных на указанную величину в процентах от текущего размера.

  3. Щелкните на вкладке Transaction Log (Журнал транзакций) (рис. 30.6), чтобы задать параметры автоматического роста для журнала транзакций. Параметры этой вкладки используются так же, как и соответствующие параметры вкладки Data Files. Вы должны задать пределы для файлов журнала транзакций, чтобы воспрепятствовать их неконтролируемому росту.
    Вкладка Transaction Log (Журнал транзакций) для окна Properties базы данных MyDB

    Рис. 30.6. Вкладка Transaction Log (Журнал транзакций) для окна Properties базы данных MyDB
    Средство контроля автоматического роста файлов удобно использовать во многих случаях. Просто убедитесь в том, что вы не задали случайно неконтролируемый рост файла, что может привести к использованию этим файлом всего дискового пространства вашей системы.
Контрольные точки

SQL Server выполняет операции с контрольными точками автоматически. Частота создания контрольных точек автоматически рассчитывается в соответствии со значением, которые вы задали для параметра конфигурирования SQL Server recovery interval. Этот параметр указывает длительность вашего ожидания в минутах при восстановлении базы данных после аварии системы. Контрольные точки создаются достаточно часто, чтобы время восстановления системы не превысило указанного вами значения в минутах. Кроме того, контрольные точки автоматически создаются при отключении SQL Server с помощью оператора SHUTDOWN или Service Control Manager (Диспетчер управления службами). Вы можете также создавать контрольные точки вручную с помощью оператора CHECKPOINT.

Если вы хотите, чтобы система работала оптимальным образом и если вы готовы подождать подольше, то можете задать для параметра recovery interval достаточно большое значение, например, 60. Это означает, что при аварии вашей системы автоматическое восстановление будет занимать до 60 минут. При создании контрольных точек выполняется большое количество операций записи на диск, а они могут отбирать часть ресурсов обработки у пользовательских транзакций, увеличивая время отклика на запросы пользователей. Вот почему менее частое создание контрольных точек может помочь в повышении производительности по транзакциям в целом. Конечно, слишком большое значение параметра может приводить к слишком длительному простою после аварии. Обычно для recovery interval задают значение от 5 до 15 (минут).

По умолчанию для recovery interval задано значение 0. Это значение указывает, что SQL Server будет определять наилучшие моменты создания контрольных точек, исходя из загруженности системы. Обычно при использовании этого значения по умолчанию контрольные точки создаются приблизительно раз в минуту. Если вы считаете, что они создаются слишком часто, то можете изменить значение recovery interval. Чтобы определить, не слишком ли часто SQL Server создает контрольные точки, используйте флаг трассировки SQL Server -T3502. Это флаг указывает запись информации по контрольным точкам в журнал ошибок SQL Server. Отметим, что контрольные точки создаются по каждой базе данных.

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Игорь Соловьев
Игорь Соловьев
Россия, Братск