powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ускорить пересоздание кластерного индекса
49 сообщений из 49, показаны все 2 страниц
Ускорить пересоздание кластерного индекса
    #39740850
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел, в процессе создания кластерного индекса (после его удаления) инструкцией

Код: sql
1.
ALTER TABLE [dbo.TableName] ADD CONSTRAINT [PK] PRIMARY KEY CLUSTERED (...) ... 



выполняется такая команда

Код: sql
1.
insert [dbo].[TableName] select * from [dbo].[TableName] option (maxdop 1)



Можно ли как-то вмешаться в её maxdop, увеличив его с 1 до ... , если обстановка на сервере позволяет?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740854
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
ALTER TABLE [dbo.TableName] ADD CONSTRAINT [PK] PRIMARY KEY CLUSTERED (...) ... with ( maxdop = N )
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740870
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помогло.
Полный список опция таков:
Код: sql
1.
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, maxdop = 70)



Странно: подчёркивает "maxdop = 70" красным как ошибочное, но выполняет и... не распараллеливает.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740874
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть, при выполнении осталось как и было:
Код: sql
1.
insert [dbo].[TableName] select * from [dbo].[TableName] option (maxdop 1)
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740875
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®,

как maxdop даст улучшение скорости при вставке?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740876
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

разве там нужен знак равенства?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740879
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовГавриленко Сергей Алексеевич,

разве там нужен знак равенства?Может и не нужен.

Владислав Колосовкак maxdop даст улучшение скорости при вставке?Создание индекса -- это не только вставка, но еще и чтение с сортировкой.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740882
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовAR®,

как maxdop даст улучшение скорости при вставке?
хинт на всю инструкцию, а селект параллелится.
и никакой знак равенства в хинте, разумеется, не нужен
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740890
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В select в option (maxdop 1) знак "=" действительно не используется.
А во with без него ошибка, а с ним работает, но - без распараллеливания.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740893
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123,

да, распараллелится, но потом застрянет в бутылочном горлышке. Профита ноль целых, ноль десятых.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740901
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовПрофита ноль целых, ноль десятых.

Известны ли Вам другие средства?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740903
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовYasha123,

да, распараллелится, но потом застрянет в бутылочном горлышке. Профита ноль целых, ноль десятых.Откуда вы знаете? Может он на стопятьст SSD-дисков индекс льет.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740961
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Не помогло.
Странно: подчёркивает "maxdop = 70" красным как ошибочное, но выполняет и... не распараллеливает.
а цифра 70 для maxdop только меня удивила?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740969
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовAR®,

как maxdop даст улучшение скорости при вставке?
Так, что дисковая подсистема вполне может работать быстрее чем все прочие операции в один поток.
И для этого совсем не обязательно иметь огромные полки c SSD.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740972
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архивариус,
Нет не только, сервер тоже обалдел и отказался параллелить :)
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740991
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архивариуса цифра 70 для maxdop только меня удивила?

А что удивительного? Написал же сразу, что обстановка позволяет.
Это пока сервер в монопольном распоряжении для проведения работ.
При обычном повседневном использовании maxdop 70 - это, конечно, некоторый избыток оптимизма.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39740997
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®архивариуса цифра 70 для maxdop только меня удивила?

А что удивительного? Написал же сразу, что обстановка позволяет.
Это пока сервер в монопольном распоряжении для проведения работ.
При обычном повседневном использовании maxdop 70 - это, конечно, некоторый избыток оптимизма.
богатые люди...
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741001
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®архивариуса цифра 70 для maxdop только меня удивила?

А что удивительного? Написал же сразу, что обстановка позволяет.
Это пока сервер в монопольном распоряжении для проведения работ.
При обычном повседневном использовании maxdop 70 - это, конечно, некоторый избыток оптимизма.70 ядер для перестроения индекса - это сильно. Сколько же там всего? Хотя сейчас у одного сокета бывает по 32 ядра, 64 потока...
И система хранения должна соответствовать, а то не имеет смысла.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741002
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKAR®пропущено...


А что удивительного? Написал же сразу, что обстановка позволяет.
Это пока сервер в монопольном распоряжении для проведения работ.
При обычном повседневном использовании maxdop 70 - это, конечно, некоторый избыток оптимизма.
богатые люди...Угу, 70 ядер да по $20 000 на ядро лицензия на сиквел... Так можно и DBA 5 тыр накинуть... :-)
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741005
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgУгу, 70 ядер да по $20 000 на ядро лицензия на сиквел...Ой, нет, по 5К, перепутал с сокетом
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741009
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg70 ядер для перестроения индекса - это сильно

Жаль только, что задействовать их не получается.
А без распараллеливания - не менее 10 часов работы, поэтому и задумался...
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741019
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документации написано, что для параллельного создания индекса надо указывать значение от 2 до 64.

И еще написано, что "Parallel index operations are not available in every SQL Server edition. For more information, see Features Supported by the Editions of SQL Server 2016"
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741026
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®архивариуса цифра 70 для maxdop только меня удивила?
А что удивительного? Написал же сразу, что обстановка позволяет.
Это пока сервер в монопольном распоряжении для проведения работ.
При обычном повседневном использовании maxdop 70 - это, конечно, некоторый избыток оптимизма.
Меня терзают смутные сомнения что лучше все же начинать с числа равного количеству физических ядер в одном сокете (или numa узле), а таких интел еще не завозил?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741039
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxdop 0 еще попробуйте раз тестите, узнаем сколько SQL сам решит выделить ядер.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741041
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архивариусmaxdop 0 еще попробуйте раз тестите, узнаем сколько SQL сам решит выделить ядер.
Сервер сам(по усолчанию) не хочит параллелить индексацию, при этом сразу получаете фрагментацию индекса.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741056
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любое значение maxdop=... игнорируется, включая = 0.
У нас 2008R2 - он ещё не знает этого?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741064
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Любое значение maxdop=... игнорируется, включая = 0.
У нас 2008R2 - он ещё не знает этого?
смотря какой
https://msdn.microsoft.com/it-it/library/cc645993(v=sql.105).aspx
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741091
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, у нас Standard, а у него Parallel index operations = "".
Жаль.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741093
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Похоже, у нас Standard
вы не уверны?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741098
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741101
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Не уверен.
как вы к серверу вообще пробраись?

SELECT @@VERSION
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741103
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Standard Edition (64-bit), я почему-то был уверен, что Enterprise (возможно он у нас на другой машине).
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741105
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Standard Edition (64-bit), я почему-то был уверен, что Enterprise (возможно он у нас на другой машине).
и ядер сразу не 70 становится :)
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741115
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то регламентируется Number of CPUs, а про ядра ничего не сказано.
Процессоров как раз 4, по 20 Logical на каждого...
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741120
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё, раз уж заговорили, интересует, что в

Код: sql
1.
insert [dbo].[TableName] select *, %%bmk%% from [dbo].[TableName] option (maxdop 1)



означает %%bmk%% ?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741122
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Вообще-то регламентируется Number of CPUs, а про ядра ничего не сказано.
Процессоров как раз 4, по 20 Logical на каждого...
Поодозреваю, что устаревшее описание Limited to lesser of 4 sockets or 24 cores.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741125
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Вообще-то регламентируется Number of CPUs, а про ядра ничего не сказано.

really?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741133
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в еррорлоге посмотрите, сколько он реально видит
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741141
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В логе windows или SQL-server?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741146
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сервера.
Код: sql
1.
exec xp_readerrorlog 0,1,N'cores';
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741179
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все равно не верю, что писать в один поток сервер будет не хуже, чем читать в 10 в одну и ту же файловую группу, например. Хоть SSD хоть RAM Disk. Запись ну никак не может быть быстрее чтения даже один поток к одному.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741200
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовВсе равно не верю, что писать в один поток сервер будет не хуже, чем читать в 10 в одну и ту же файловую группу, например. Хоть SSD хоть RAM Disk. Запись ну никак не может быть быстрее чтения даже один поток к одному.Тот факт, что при создании индекса надо не только читать и писать данные, но еще и сортировать, вы сознательно игнорируете?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741260
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичВладислав КолосовВсе равно не верю, что писать в один поток сервер будет не хуже, чем читать в 10 в одну и ту же файловую группу, например. Хоть SSD хоть RAM Disk. Запись ну никак не может быть быстрее чтения даже один поток к одному.Тот факт, что при создании индекса надо не только читать и писать данные, но еще и сортировать, вы сознательно игнорируете?


А еще игнорируется тот основополагающий факт, что сразу на диск пишется только лог, а данные меняются в памяти, и только потом lazywrite-ом сбрасываются на диск
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741316
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexГавриленко Сергей Алексеевичпропущено...
Тот факт, что при создании индекса надо не только читать и писать данные, но еще и сортировать, вы сознательно игнорируете?


А еще игнорируется тот основополагающий факт, что сразу на диск пишется только лог, а данные меняются в памяти, и только потом lazywrite-ом сбрасываются на диск

не совсем так, лог тоже на диск сразу не пишется.

это при том если не рассматривать еще delayed durablity
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741326
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ffне совсем так, лог тоже на диск сразу не пишется.Ну давайте еще там про кеш на контроллере вспомним, ага.

Максимальная очередь на запись лога - не более 112 реквестов на базу (начиная с 2012го), так что можно считать, что сразу. (Сколько по факту, каждый может помониторить сам через sys.dm_io_pending_io_requests)
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741442
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123сервера.
Код: sql
1.
exec xp_readerrorlog 0,1,N'cores';




(0 row(s) affected)

Т.е. работает 2008R2 Standard на 4 процах = 80 логических процах.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741445
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другой вопрос возник неожиданно.

Код: sql
1.
2.
3.
ALTER TABLE [dbo].[TableName] ADD  CONSTRAINT [I_IDX] PRIMARY KEY CLUSTERED (...)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) 
ON [NewFileGroup]



работало минут 10 и упало с:
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
The statement has been terminated.
Msg 4902, Level 16, State 1, Line 1
Cannot find the object "dbo.TableName" because it does not exist or you do not have permissions.

И в SSMS текущая база стала master (в которой действительно нет и не было таблицы TableName).

Если создавать заново кластерный индекс на группе PRIMARY, то он создаётся.
Другие таблицы благополучно перенеслись на [NewFileGroup].

Чем может отличаться проблемная таблица?
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741452
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, dbcc checktable сделайте, если явно не понятно, в чем проблема.
...
Рейтинг: 0 / 0
Ускорить пересоздание кластерного индекса
    #39741455
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так делал, никаких патологий.
Как и при обычном повседневном использовании этой таблицы.
Не получается перенести её в другую файловую группу.
Повторюсь, если снести кластерный индекс и пересоздать его на PRIMARY, всё получается за разумное время.
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ускорить пересоздание кластерного индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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