Все версии SQL Server автоматически перестраивают индексы или имеют критерии перестройки по умолчанию? Я понимаю, что статистика автоматически перестраивается, но не уверен, что индексы также работают.
Все версии SQL Server автоматически перестраивают индексы или имеют критерии перестройки по умолчанию?
Ответ 1
Восстановление индексов не поддерживается автоматически в любой версии Microsoft SQL Server - причина в том, что перестроение индексов может быть очень дорогостоящим операциям, поэтому необходимо тщательно планировать и планировать.
Во многих средах для его обработки будут записаны специальные скрипты, например:
http://weblogs.sqlteam.com/tarad/archive/2008/09/03/Defragmenting-Indexes-in-SQL-Server-2005.aspx
Обратите внимание, что в то время как SQL может автоматически обновлять статистику для вас, во многих случаях наблюдается усиление производительности, а также более эффективное управление ими.
Ответ 2
Как уже упоминалось здесь, ваши индексы автоматически не перестраиваются. Это довольно большая проблема в SQL Server, так как ваши индексы будут фрагментироваться с течением времени. Вы можете найти свои индексы на 95% плюс фрагментированные, что плохо влияет на производительность запросов.
Вот простой запрос для проверки фрагментации существующих индексов:
DECLARE @DBNAME VARCHAR(130);
SET @DBNAME = 'MYDBNAME';
DECLARE @DBID INT;
SET @DBID = DB_ID(@DBNAME);
SELECT
OBJECT_ID AS objectID
, index_id AS indexID
, avg_fragmentation_in_percent AS fragmentation
, page_count
INTO #indexDefragList
FROM
sys.dm_db_index_physical_stats
(@DBID, NULL, NULL , NULL, N'Limited')
WHERE
index_id > 0
OPTION (MaxDop 1);
SELECT
i.[name] as indexname,
d.fragmentation,
d.page_count
FROM
#indexDefragList d
INNER JOIN sys.indexes i
ON d.objectid = i.object_id
ORDER BY
d.fragmentation DESC
DROP TABLE #indexDefragList
Это вернет список всех индексов в вашей текущей БД с их фрагментацией в%.
Вы можете легко создать script для автоматической перестройки или реорганизации. Существует отличная статья от SQLFool по этому вопросу, включая полный готовый script.
Ответ 3
Чтобы расширить то, что сказал Крис:
Что касается статистики, то столбцы, не охваченные индексом, не будут обновлять свою статистику, перестраивая все индексы. Они могут периодически обновляться SQL Server, однако вам может понадобиться сделать это самостоятельно с помощью инструкции UPDATE STATISTICS.
SQL Server 2005 определяет, следует ли автоматически обновлять статистику на основе изменений в счетчиках модификации столбцов (colmodctrs).
Объект статистики считается устаревшим в следующих случаях:
1. Размер таблицы изменился с 0 нa > 0 строк.
2. Количество строк в таблице, когда были собраны статистические данные, составляло 500 или менее, а из-за того, что colmodctr ведущего столбца объекта статистики изменился более чем на 500.
3. В таблице было собрано более 500 строк, когда статистика была собрана, а колмодктр главного столбца объекта статистики изменился более чем на 500 + 20% от количества строк в таблице, когда статистика была собрались
Вы можете найти следующую ссылку относительно статистики использования:
http://blogs.technet.com/rob/archive/2008/05/16/sql-server-statistics.aspx
Надеюсь, что это поможет, но не стесняйтесь задавать дополнительные вопросы.
Приветствия, Джон
Ответ 4
Это должно быть расписание и упорядочено.
При сортировке это зависит от размера ваших таблиц и окна обслуживания.
Кроме того, статистика автоматически восстанавливается, когда индексы перестраиваются, но могут быть запланированы отдельно.
Для быстрого исправления, предполагая хорошее длинное окно обслуживания и не слишком большое (до нескольких 100 ГБ), просто заплатите это:
EXEC sp_msforeachtable 'SET QUOTED_IDENTIFIER ON ALTER INDEX ALL ON ? REBUILD WITH (FILLFACTOR = 90)'
Изменить: только для > SQL 2005 этот SQL
Ответ 5
Как заметил @Chris, индексы не перестраиваются автоматически в любой версии SQL Server. Надлежащее обслуживание индексов часто отсутствует на сайтах без отдельной роли DBA, и часто, когда базы данных просто перемещаются из разработки в производство (наряду с обслуживанием журнала транзакций).
SQL Server 2005+ имеет возможность выполнять онлайн-реорганизации индекса и автономные полные перестройки.