|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
Всем, привет. Прочитал на msdn что если делать insert с опцией tablock, то это ускоряет скорость вставки данных в таблицу за счет оптимизации ведения журнала транзакций. Там речь идет о куче и из описания я не понял, ускоряет ли это вставку данных если таблица индексированная? Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 16:47 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
assmsk Прочитал на msdn что если делать insert с опцией tablock, то это ускоряет скорость вставки данных в таблицу за счет оптимизации ведения журнала транзакций. Там речь идет о куче и из описания я не понял, ускоряет ли это вставку данных если таблица индексированная? Если она непустая, но установлен флаг 610, то пишут, что минимальное протоколирование "возможно". https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 17:05 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
alexeyvg assmsk Прочитал на msdn что если делать insert с опцией tablock, то это ускоряет скорость вставки данных в таблицу за счет оптимизации ведения журнала транзакций. Там речь идет о куче и из описания я не понял, ускоряет ли это вставку данных если таблица индексированная? Если она непустая, но установлен флаг 610, то пишут, что минимальное протоколирование "возможно". https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN Те правильно я понимаю, что если я буду вставлять данные в пустую индексированную таблицу циклом с опцией tablock, то получу прирост в производительности только в 1ой итерации цикла, а со 2ой будет так же как и без tablock? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 17:13 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
assmsk Те правильно я понимаю, что если я буду вставлять данные в пустую индексированную таблицу циклом с опцией tablock, то получу прирост в производительности только в 1ой итерации цикла, а со 2ой будет так же как и без tablock? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 17:22 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
assmsk, если нет явных проблем с записью в журнал, например, мало памяти, медленные диски, то на глаз разницу не заметите. WITH (TABLOCK) даст выигрыш в объеме записи в журнал любом случае, даже если нет минимального протоколирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 17:29 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
Версия SQL Server'a какая? Начиная с 2016 сервер умеет делать parallel insert при указании TABLOCK https://www.sqlshack.com/use-parallel-insert-sql-server-2016-improve-query-performance/ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 18:30 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
assmsk Всем, привет. Прочитал на msdn что если делать insert с опцией tablock, то это ускоряет скорость вставки данных в таблицу за счет оптимизации ведения журнала транзакций. Там речь идет о куче и из описания я не понял, ускоряет ли это вставку данных если таблица индексированная? Код: sql 1. 2.
Если таблица имеет кластерный индекс, то есть смысл отсортировать вставляемые данные в порядке этого ключа. В дополнение к TABLOCK ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2019, 09:38 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
a_voronin Если таблица имеет кластерный индекс, то есть смысл отсортировать вставляемые данные в порядке этого ключа. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2019, 10:01 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
Сортировка в некоторых случаях требуется для выполнения условий минимального протоколирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2019, 12:30 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
alexeyvg assmsk Прочитал на msdn что если делать insert с опцией tablock, то это ускоряет скорость вставки данных в таблицу за счет оптимизации ведения журнала транзакций. Там речь идет о куче и из описания я не понял, ускоряет ли это вставку данных если таблица индексированная? Если она непустая, но установлен флаг 610, то пишут, что минимальное протоколирование "возможно". https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN Те правильно я понимаю, что если я буду вставлять данные в пустую индексированную таблицу циклом с опцией tablock, то получу прирост в производительности только в 1ой итерации цикла, а со 2ой будет так же как и без tablock? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:45 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
assmsk alexeyvg пропущено... Если есть индексы, то для использования минимального протоколирования нужно, что бы перед INSERT таблица была пустая Если она непустая, но установлен флаг 610, то пишут, что минимальное протоколирование "возможно". https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN Те правильно я понимаю, что если я буду вставлять данные в пустую индексированную таблицу циклом с опцией tablock, то получу прирост в производительности только в 1ой итерации цикла, а со 2ой будет так же как и без tablock? alexeyvg assmsk Те правильно я понимаю, что если я буду вставлять данные в пустую индексированную таблицу циклом с опцией tablock, то получу прирост в производительности только в 1ой итерации цикла, а со 2ой будет так же как и без tablock? Но, заметьте, что есть флаг 610, который позволит минимально логировать и в следующих итерациях. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:02 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
Флаг 610 является устаревшим с 2014 или 2016 версии, точно не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:18 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
alexeyvg, случайно продублировал) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:49 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
Владислав Колосов Флаг 610 является устаревшим с 2014 или 2016 версии, точно не помню. https://docs.microsoft.com/ru-ru/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-ver15 Документация610 Управляет вставками с минимальным протоколированием в индексированные таблицы. Этот флаг трассировки необязателен начиная с версии SQL Server 2016, поскольку минимальное протоколирование для индексированных таблиц включено по умолчанию. В SQL Server 2016, когда операция массовой загрузки вызывает выделение новой страницы, все строки, последовательно заполняющие эту новую страницу, имеют минимальное протоколирование, если выполняются остальные необходимые условия для минимального протоколирования. Строки, вставляемые в существующие страницы (без выделения новой страницы) для сохранения порядка индексов, по-прежнему протоколируются полностью, как и строки, перемещенные в результате разбиения страницы во время загрузки. Параметр ALLOW_PAGE_LOCKS должен иметь значение ON для индексов (указано по умолчанию), чтобы операция минимального протоколирования выполнялась, поскольку при выделении устанавливаются блокировки страниц, и протоколируются только выделения страниц или экстентов. assmsk, Значит, нужно руководствоваться этой таблицей: ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:59 |
|
INSERT WITH (TABLOCK)
|
|||
---|---|---|---|
#18+
Владислав Колосов Флаг 610 является устаревшим с 2014 или 2016 версии, точно не помню. С 2016 https://blogs.msdn.microsoft.com/sql_server_team/sql-server-2016-minimal-logging-and-impact-of-the-batchsize-in-bulk-load-operations/ интересная статья с тестами для более ранних версий: https://orderbyselectnull.com/2017/07/10/trace-flag-610-and-sql-server-2016/ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:02 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1686695]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 169ms |
0 / 0 |