powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Порядок выполнения регламентной операции (статистика, индексы)
8 сообщений из 8, страница 1 из 1
Порядок выполнения регламентной операции (статистика, индексы)
    #39847505
trew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порядок выполнения регламентной операции.
Перестроение индексов и обновление статистики по всем таблицам.
В каком порядке их запускать (эти две операции)? (настраиваю план обслуживания)
...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847520
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trew,

Обновление статистик раз в 1-3 дня, перестроение индексов раз в 1-2 недели.
...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847526
1C Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовtrew,

Обновление статистик раз в 1-3 дня, перестроение индексов раз в 1-2 недели.

Данный алгоритм подойдет для любой базы?:)

И для архивной и для той в которой данные в течении суток изменяются полностью?:)
...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847552
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trew,

если речь про Хранилище Данных - то я бы рекомендовал делать перестроение индексов каждое технологическое окно, после полной/инкрементной загрузки данных в СУБД.
Причем на рассмотрение вам - есть паттерн, когда перед вставкой данных в большую таблицу фактов некластерные индексы временно опускаются, дабы ускорить процедуру, далее - в модуле, ответственном именно за эту таблицу фактов - индексы поднимаются снова.
Можно делать программно, курсором в цикле пройтись по всем индексам вначале и в конце кода.

Если речь про оперативные источники - например 1С - то нужно смотреть по месту, применять скрипты анализа текущей фрагментации индексов, коррелировать их с бизнес-операциями, выполняемыми "сверху", с уровня приложения, - например, как часто делаются перепроводки документов
...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847561
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha,
Если кстати мало ли пригодится кому - выкладывают код курсора по работе с некластерными индексами
Вызывается так:
EXEC dbo.usp_Process_NCIndexes_On_Table @Table_Name = 'sysdiagrams', @Schema_Name = 'dbo', @Action_Type = 'disable'

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
CREATE PROCEDURE [dbo].[usp_Process_NCIndexes_On_Table]
--EXEC dbo.usp_Process_NCIndexes_On_Table @Table_Name = 'sysdiagrams', @Schema_Name = 'dbo', @Action_Type = 'disable'
@Action_Type AS NVARCHAR(MAX),
@Table_Name AS NVARCHAR(MAX),
@Schema_Name AS NVARCHAR(10)

AS
BEGIN
-- ###########################
IF NOT (LOWER(@Action_Type) = 'enable' OR LOWER(@Action_Type) = 'disable')
	BEGIN
		SELECT 'Action type provided incorrectly. Please call the procedure either with ''enable'' or ''disable'' parameter'
		GOTO BRANCH_END
	END
-- ###########################
	
DECLARE @SQLCMD AS NVARCHAR(MAX)
DECLARE @Final_SQL AS NVARCHAR(MAX)
DECLARE @Index_Name AS NVARCHAR(2000)

--DECLARE @Table_Name AS NVARCHAR(100)
--SET @Table_Name = 'sysdiagrams'
--DECLARE @Schema_Name AS NVARCHAR(10)
--SET @Schema_Name = 'dbo'

SET @SQLCMD = 'DECLARE indexes_cursor CURSOR READ_ONLY FOR 
SELECT i.name AS [Index Name]
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
WHERE i.type = 2 --NC INDEX TYPE
AND tbl.name = ''' + @Table_Name + ''' AND schema_name(schema_id) = ''' + @Schema_Name + ''''

EXEC sp_executesql @SQLCMD

IF @Action_Type = 'enable' 
	BEGIN
		GOTO BRANCH_ENABLE
	END
ELSE
	BEGIN
		GOTO BRANCH_DISABLE
	END
	
-- ############
BRANCH_DISABLE:
OPEN indexes_cursor
FETCH NEXT FROM indexes_cursor INTO @Index_Name

WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @Final_SQL = 'ALTER INDEX [' + @Index_Name + '] ON ' + '[' + @Schema_Name + '].[' + @Table_Name + ']' + ' DISABLE'
		--EXEC @Final_SQL
		PRINT @Final_SQL
			FETCH NEXT FROM indexes_cursor INTO @Index_Name
	END

CLOSE indexes_cursor
DEALLOCATE indexes_cursor
GOTO BRANCH_END

-- ############
BRANCH_ENABLE:
OPEN indexes_cursor
FETCH NEXT FROM indexes_cursor INTO @Index_Name

WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @Final_SQL = 'ALTER INDEX [' + @Index_Name + '] ON ' + '[' + @Schema_Name + '].[' + @Table_Name + ']' + ' REBUILD WITH (FILLFACTOR=100, PAD_INDEX=ON)'
		--EXEC @Final_SQL
		PRINT @Final_SQL
			FETCH NEXT FROM indexes_cursor INTO @Index_Name
	END

CLOSE indexes_cursor
DEALLOCATE indexes_cursor
GOTO BRANCH_END

BRANCH_END:
	PRINT 'Done'
END
GO

...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847585
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1C Developer,

как правило да, если автоматический перерасчет статистик не отключён.
Для понимания того, какие статистики необходимо пересчитывать, а какие нет - можно использовать динамические административные представления. На мой взгляд, в лучшие практики должно входить сервисное приложение обслуживания статистик и индексов: https://ola.hallengren.com.
...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847608
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trewВ каком порядке их запускать (эти две операции)? (настраиваю план обслуживания)

при перестроении индекса обновляется и статистика
...
Рейтинг: 0 / 0
Порядок выполнения регламентной операции (статистика, индексы)
    #39847620
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КритикtrewВ каком порядке их запускать (эти две операции)? (настраиваю план обслуживания)

при перестроении индекса обновляется и статистика
отдельная по-колоночная нет
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Порядок выполнения регламентной операции (статистика, индексы)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]