Программирование в 1СЧетверг, 25.04.2024, 12:53

| RSS
Главная | Каталог статей
Меню сайта

Категории раздела
Обзор платформы [8]
Архитектура 1С Предприятия [4]
Средства разработки [8]
Работа пользователей с 1С Предприятием 8.0 [8]
Установка и настройка [10]
Особенности администрирования Windows XP SP2 [5]
Особенности использования HASP [5]
Особенности настройки SQL Server 2000 [9]
Администрирование [18]

Поиск

Поиск по сайту

Главная » Статьи » 1С v.8.x » Особенности настройки SQL Server 2000

Эффективность использования индексов Microsoft SQL Server 2000
Одно из ключевых условий эффективности использования Microsoft SQL Server 2000 состоит в создании такого набора индексов для таблиц, чтобы любые запросы к таблицам могли бы выполняться эффективно. С увеличением объема данных эффективность использования индексов может снижаться, приводя к увеличению времени выполнения операций по чтению и модификации данных. Microsoft SQL Server 2000 имеет свойство автоматического обновления статистики индексов, но для поддержания индексов в актуальном состоянии этого бывает недостаточно, поскольку Microsoft SQL Server 2000 не перестраивает индексы автоматически.
 
Проблема:

После выполнении интенсивных операций по модификации данных в таблицах базы данных увеличивается время выполнения запросов и операций по модификации данных.

Это обусловлено тем, что при таких операциях происходит модификация индексов, что приводит к их фрагментации и увеличению количества операций ввода-вывода при использовании индексов в процессе выполнения операций чтения и записи данных.
 
Решение:
  • Регулярная переиндексация таблиц базы данных с помощью команды DBCC DBREINDEX ( table_name ).
  • Регулярная дефрагментация индексов базы данных с помощью команды DBCC INDEXDEFRAG(database_name, table_name, index_name).

Выбор способа решения этой проблемы зависит от интенсивности операций по модификации таблиц базы данных.

Регулярная переиндексация таблиц базы данных является более эффективной процедурой, однако время выполнения у нее существенно больше. Кроме того, ее выполнение может замедлить работу пользователей, поскольку на время перестроения индекса блокируется доступ к таблице базы данных, индекс которой в данный момент перестраивается.
 
В отличие от переиндексации, дефрагментация индексов является обычной операцией и не приводит к блокировкам таблиц, поэтому она может выполняться без прерывания работы пользователей. Эта операция использует стандартный механизм транзакций для перемещения страниц индекса. Кроме того, это работает быстрее, чем построение нового индекса. С помощью её можно дефрагментировать и кластерные и не кластерные индексы, что улучшает эффективность доступа к данным, поскольку физический порядок будет соответствовать логическому порядку и уменьшится количество операций ввода-вывода при просмотре индекса.
 
При высокой интенсивности операций модификации данных, возможно использование комбинации этих методов:
  • Выполнение в течении рабочего дня дефрагментации индексов.
  • Выполнение переиндексации таблиц базы данных после окончания рабочего дня.
Сочетание этих двух методов позволит поддерживать индексы в актуальном состоянии, независимо от интенсивности операций с базой данных.
 
Эту процедуру можно автоматизировать, написав скрипт на Transact-SQL, который будет исполнятся с требуемой периодичностью с помощью Microsoft SQL Server Agent.

Пример подобного скрипта оформленный в виде хранимой процедуры:
 
CREATE PROCEDURE DBReindex AS
SET NOCOUNT ON
DECLARE @TableName char(32)
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE type='U'
OPEN SysCur
FETCH NEXT FROM SysCur INTO @TableName
WHILE @@FETCH_STATUS=0 BEGIN
DBCC DBREINDEX(@TableName)
FETCH NEXT FROM SysCur INTO @TableName
END
CLOSE SysCur
DEALLOCATE SysCur

Аналогичный результат можно получит с помощью Database Maintenance Plan Wizard из SQL Server Enterprise Manager.

Более подробное описание и рекомендации по использованию этих команд и Database Maintenance Plan Wizard можно найти в документации по Microsoft SQL Server 2000.
Категория: Особенности настройки SQL Server 2000 | Добавил: Spacer (23.10.2009)
Просмотров: 3564
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Copyright 1C:Programmer © 2024
    Бесплатный конструктор сайтов - uCoz