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

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

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

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

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

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

Если речь про оперативные источники - например 1С - то нужно смотреть по месту, применять скрипты анализа текущей фрагментации индексов, коррелировать их с бизнес-операциями, выполняемыми "сверху", с уровня приложения, - например, как часто делаются перепроводки документов
...
Рейтинг: 0 / 0
09.08.2019, 15:58
    #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
09.08.2019, 16:27
    #39847585
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок выполнения регламентной операции (статистика, индексы)
1C Developer,

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

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

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


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