Книга знаний

1С:Предприятие / v8 / Администрирование

v8: Перестройка индексов MS SQL Server 2005

Одно из ключевых условий эффективности использования Microsoft SQL Server состоит в создании такого набора индексов для таблиц, чтобы любые запросы к таблицам могли бы выполняться эффективно. С увеличением объема данных эффективность использования индексов может снижаться, приводя к увеличению времени выполнения операций по чтению и модификации данных. Microsoft SQL Server имеет свойство автоматического обновления статистики индексов, но для поддержания индексов в актуальном состоянии этого бывает недостаточно, поскольку Microsoft SQL Server не перестраивает индексы автоматически...Автор статьи: Demiurg | Редакторы:
Последняя редакция №2 от 12.08.07 | История
URL: http://kb.mista.ru/article.php?id=576

Ключевые слова: Перестройка индексов MS SQL Server 2005


Для нормальной работы 1С:Предприятия 8.1 с Microsoft SQL Server 2005 в качестве регламентной процедуры, исполняемой с периодичностью пропорциональной объему вводимых данных (например, 1 раз в сутки):
USE db1cut
GO
DECLARE @MyTable varchar(252)
DECLARE @MyIndex varchar(252)
declare @DSQL varchar(8000)
DECLARE MyCursor CURSOR FOR
SELECT o.name, i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id
WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0)
ORDER BY o.name, i.indid
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
WHILE @@FETCH_STATUS=0
BEGIN
PRINT 'Перестройка индекса '+@MyIndex+' из таблицы '+@MyTable
SET @DSQL = ' BEGIN TRY
                 ALTER INDEX '+@MyIndex+' ON  '+@MyTable+
                 ' REBUILD WITH (ONLINE = ON,
                 SORT_IN_TEMPDB = ON,
           STATISTICS_NORECOMPUTE = ON)
END TRY
BEGIN CATCH ALTER INDEX '+@MyIndex+' ON  '+@MyTable+
                 ' REBUILD WITH (ONLINE = OFF,
                 SORT_IN_TEMPDB = ON,
           STATISTICS_NORECOMPUTE = ON) END CATCH;'
EXEC(@DSQL)

FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
END
CLOSE MyCursor
DEALLOCATE MyCursor

вместо sp_msforeachtable N'DBCC DBREINDEX (''?'')' для SQL Server 2000

оригинал заметки http://www.gilev.ru/1c/mssql/dbreindex.htm

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика