powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кластерный индекс создался, но операция продолжается
10 сообщений из 10, страница 1 из 1
Кластерный индекс создался, но операция продолжается
    #39902976
Andy06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS SQL 2017
Задача была вот в чем:
Имеется таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE [dbo].[T1](
	[COL1] [int] NOT NULL,
	[COL2] [tinyint] NOT NULL,
	[COL3] [smallint] NOT NULL,
	[COL4] [tinyint] NOT NULL,
	[DCOUNTER] [int] NOT NULL,
	[F1] [tinyint] NOT NULL,
	[F2] [tinyint] NOT NULL,
	[F3] [tinyint] NOT NULL,
	[F4] [tinyint] NOT NULL,
	[F5] [tinyint] NOT NULL,
	[F6] [tinyint] NOT NULL,
	[F7] [tinyint] NOT NULL,
	[F8] [tinyint] NOT NULL,
	[F9] [tinyint] NOT NULL,
	[F10] [tinyint] NOT NULL
) ON [T1_DATA]


Данных там много (8,3+ млрд записей). Обращение через некластеризованный индекс занимает очень много времени: 22 секунды против 2 секунд кластеризованного индекса. Соотв. принял решение сформировать кластер. индекс для one-time-job. (Это сформировано для одного анализа (в рутине такого кол-ва записей не будет))
Метод восстановления БД = Simple.
Вот код индекса:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE CLUSTERED INDEX [T1_DefIndexClustered] ON [dbo].[T1]
(
	[COL2] ASC,
	[COL3] ASC,
	[COL1] ASC,
	[COL4] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [T1_INDEX]


Группа [T1_DATA] содержит 21 файл для размещения записей таблицы.
Группа [T1_INDEX] содержит 10 файлов для размещения индексов.
Суть вопроса в следующем. Индекс наполнился данными примерно за 23 часа (сравнивал объём индекс-файлов и объем data-файлов). После этого прошло уже 16 часов. Операция все еще не завершена, идет обращение и наполнение лог-файла базы. Растет он очень медленно и я вообщше не понимаю чего он растет то.
Скажите кто нибудь, пожалуйста, как происходит формирование индекса? При создании индекса лог будет расширяться на весь объем индекс-файлов чтоли (они весят суммарно 261 гб)? Потому что расширяется он ооооочень медленно.
В общем не знаю что делать. Мне уже нужно работать с этой таблицей, а она не проиндексирвоана.
Подскажите кто-нибудь где я ошибся или что я делаю не правильно? И если я делаю все правильно, то сколько в таком случае мне ждать еще? Пока лог станет размером с индекс?
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39902983
Andy06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снимается. Индекс сформировался. 42 часа 50 минут.
Но если есть полезные ресурсы, где почитать подробнее, буду признателен за ссылку!
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39902993
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy06,

Код: 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.
--Перед скриптом создания индекса или другой тяжелой операции
SET STATISTICS PROFILE ON;
--И можно мониторить в другой сессии
;WITH agg AS
(
SELECT SUM(qp.[row_count]) AS [RowsProcessed],
SUM(qp.[estimate_row_count]) AS [TotalRows],
MAX(qp.last_active_time) - MIN(qp.first_active_time) AS [ElapsedMS],
MAX(IIF(qp.[close_time] = 0 AND qp.[first_row_time] > 0,
[physical_operator_name],
N'<Transition>')) AS [CurrentStep]
FROM sys.dm_exec_query_profiles qp
WHERE qp.[physical_operator_name] IN (N'Table Scan', N'Clustered Index Scan', N'Sort')
AND qp.[session_id] = @ID_SESSION
), comp AS
(
SELECT *,
([TotalRows] - [RowsProcessed]) AS [RowsLeft],
([ElapsedMS] / 1000.0) AS [ElapsedSeconds]
FROM agg
)
SELECT [CurrentStep],
[TotalRows],
[RowsProcessed],
[RowsLeft],
CONVERT(DECIMAL(5, 2),
(([RowsProcessed] * 1.0) / [TotalRows]) * 100) AS [PercentComplete],
[ElapsedSeconds],
(([ElapsedSeconds] / [RowsProcessed]) * [RowsLeft]) AS [EstimatedSecondsLeft],
DATEADD(SECOND,
(([ElapsedSeconds] / [RowsProcessed]) * [RowsLeft]),
GETDATE()) AS [EstimatedCompletionTime]
FROM comp; 
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903013
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При создании/пересоздании кластерного индекса перестраиваются все существующие на таблице некластерные индексы.
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903220
Andy06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич , я оставил только кластерный, некластерный удалил.

Критик , пробовал этой коммандой вывести, но процент = 0:
Код: sql
1.
SELECT command, percent_complete, start_time FROM sys.dm_exec_requests WHERE session_id = 54


Вашу комманду тоже видел на stackoverflow и применял - резальтат был тот же. Но
Код: plaintext
SET STATISTICS PROFILE ON;
я не делал перед скриптом, в следующий раз попробую, спасибо.

P.S. Я понял чего он так долго потом работал еще. Кластерный индекс ведь данные содержит все, так что шла миграция данных из data-файлов в файлы индекса. Совсем вылетело из головы это. Даже не подумал.
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903261
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy06,
создавали бы с online = on могли бы отследить стадию создания индекса. ну а таблица в 8 ТБ это мягко говоря "ОК" :)
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903264
Andy06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff , спасибо за совет, в будущем учту, а в MS SQL я еще новичек, многого не знаю. Таблица не 8ТБ, а 8,3+ млрд. записей (строк). Сама таблица весит (вместе с индексом) 253Гб (существенно сократил объем путем изменения типов столбцов на более компактные (int -> smallint & tinyint), там где это было возможно.
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903272
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, отсортировать 240Гб по четырем полям, да еще и не в темпдб, это конечно круто,база наверное на пару терабайтов подросла? ужасы нашего городка...
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903276
Andy06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123 , вообще почти не подросла. А должна была?
Варианта в любом случае не было другого. С индексом наполнение таблицы такого объема шло бы месяцами, так что индекс пришлось удалять, потом наполнять и потом уже только создавать заново.
...
Рейтинг: 0 / 0
Кластерный индекс создался, но операция продолжается
    #39903284
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy06
Вопрос снимается. Индекс сформировался. 42 часа 50 минут.
Но если есть полезные ресурсы, где почитать подробнее, буду признателен за ссылку!


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


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