Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
MSSQL 2008 R2 (10.50.6000) БД Recovery model: Simple Есть хранимая процедура, в которой обрабатываются данные, которые заносятся в подготовленную временную таблицу (несколько миллионов записей): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Кроме того, есть большая таблица [big] аналогичной структуры, в которой есть кластерный индекс по полю [id]. Больше никаких индексов нет. Делаю вставку стандартно: Код: sql 1. 2. Работает приемлемо, но хочется быстрее. Как можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2018, 23:05 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
убрать как минимум свойство identity(1,1) как минимум. Что по вашему быстро и какие сейчас проблемы? Может у вас просто проблемы с вводом\выводом, которое все тормозит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 00:09 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
=Сергей=Работает приемлемо, но хочется быстрее.Что хочется быстрее, вставку в временную, или в большую таблицу? Если второе, попробуйте вставку с минимальным логированием Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 00:30 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
alexeyvg=Сергей=Работает приемлемо, но хочется быстрее.Что хочется быстрее, вставку в временную, или в большую таблицу? Если второе, попробуйте вставку с минимальным логированием Код: sql 1. 2. А где тут минимальное логирование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:02 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
alexeyvg=Сергей=Работает приемлемо, но хочется быстрее.Что хочется быстрее, вставку в временную, или в большую таблицу? Если второе, попробуйте вставку с минимальным логированием Код: sql 1. 2. Здесь только максимальное блокирование есть. Совет то вредный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:03 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
MasterZiv, вы перед своими ответами хоть с документацией сверяйтесь, что ли... https://docs.microsoft.com/ru-ru/sql/t-sql/statements/insert-transact-sql?view=sql-server-2017 Рекомендации по массовому импорту данных Использование инструкции INSERT INTO…SELECT для массового импорта данных с минимальным протоколированием Инструкция INSERT INTO <target_table> SELECT <columns> FROM <source_table> может эффективно перенести большое количество строк из одной таблицы (например, промежуточной) в другую таблицу с минимальным протоколированием. Минимальное протоколирование может повысить производительность выполнения инструкции и снизить вероятность того, что во время операции будет заполнен весь журнал транзакций. Для минимального протоколирования этой инструкции необходимо выполнение следующих требований. Модель восстановления базы данных настроена на простое или неполное протоколирование. Целевой таблицей является пустая или непустая куча. Целевая таблица не используется в репликации. Для целевой таблицы указана подсказка TABLOCK. Для строк, которые вставляются в кучу в результате действия вставки в инструкции MERGE, также может применяться минимальное протоколирование. В отличие от инструкции BULK INSERT, которая удерживает менее строгую блокировку массового обновления, инструкция INSERT INTO…SELECT с указанием TABLOCK удерживает монопольную блокировку (X) таблицы. Это означает, что отсутствует возможность вставки строк с помощью параллельных операций вставки. TABLOCK - одно из обязательных требований.... Другое дело, что ТС упоминает о том, что целевая таблицы - с кластерным индексом. А "быстрая" вставка работает только в "кучу"... Ну и про модель восстановления ТС ничего не говорил... А требуется, как минимум, "неполное протоколирование". Но это -0 другая история и к таблоку оно не имеет никакого отношения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:13 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
Щукина АннаMasterZiv, вы перед своими ответами хоть с документацией сверяйтесь, что ли... https://docs.microsoft.com/ru-ru/sql/t-sql/statements/insert-transact-sql?view=sql-server-2017 Рекомендации по массовому импорту данных Использование инструкции INSERT INTO…SELECT для массового импорта данных с минимальным протоколированием Инструкция INSERT INTO <target_table> SELECT <columns> FROM <source_table> может эффективно перенести большое количество строк из одной таблицы (например, промежуточной) в другую таблицу с минимальным протоколированием. Минимальное протоколирование может повысить производительность выполнения инструкции и снизить вероятность того, что во время операции будет заполнен весь журнал транзакций. Для минимального протоколирования этой инструкции необходимо выполнение следующих требований. Модель восстановления базы данных настроена на простое или неполное протоколирование. Целевой таблицей является пустая или непустая куча. Целевая таблица не используется в репликации. Для целевой таблицы указана подсказка TABLOCK. Для строк, которые вставляются в кучу в результате действия вставки в инструкции MERGE, также может применяться минимальное протоколирование. В отличие от инструкции BULK INSERT, которая удерживает менее строгую блокировку массового обновления, инструкция INSERT INTO…SELECT с указанием TABLOCK удерживает монопольную блокировку (X) таблицы. Это означает, что отсутствует возможность вставки строк с помощью параллельных операций вставки. TABLOCK - одно из обязательных требований.... Другое дело, что ТС упоминает о том, что целевая таблицы - с кластерным индексом. А "быстрая" вставка работает только в "кучу"... Ну и про модель восстановления ТС ничего не говорил... А требуется, как минимум, "неполное протоколирование". Но это -0 другая история и к таблоку оно не имеет никакого отношения..."Слона-то я и не заметил..."(с) Модель же симпл . Значит, единственное оставшееся ограничение - наличие кластерного индекса на целевой таблице... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:16 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
=Сергей=, https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 10:00 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
Друзья, большое спасибо за ответы. Извините, не указал существенной информации, дополню свой пост: информация в таблицу [big] загружается одновременно из нескольких (3-7) подключений (job). Тогда, если я правильно понимаю, использование хинта TABLOCK будет накладывать блокировку на вставку из остальных подключений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 10:42 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
=Сергей=Тогда, если я правильно понимаю, использование хинта TABLOCK будет накладывать блокировку на вставку из остальных подключений?Предложенную статью читать лень? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 10:47 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
=Сергей=Друзья, большое спасибо за ответы. Извините, не указал существенной информации, дополню свой пост: информация в таблицу [big] загружается одновременно из нескольких (3-7) подключений (job). Тогда, если я правильно понимаю, использование хинта TABLOCK будет накладывать блокировку на вставку из остальных подключений?Да, т.к. у вас есть кластерный инедкс. Но тут надо смотреть, может, один поток с минимальным логированием может быть быстрее, чем много потоков без него. Ещё важно, что бы не использовалось сжатие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:25 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
alexeyvgДа, т.к. у вас есть кластерный инедкс.Тоже решили не читать статью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:53 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
invmalexeyvgДа, т.к. у вас есть кластерный инедкс.Тоже решили не читать статью?Эээ, читал, там для кластерного индекса написано "неконкурентный доступ", разве это не означает ответа на вопрос "Да, т.к. у вас есть кластерный инедкс."? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 16:37 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
alexeyvgЭээ, читал, там для кластерного индекса написано "неконкурентный доступ"С TABLOCK да. А без и с TF 610 - конкурентный. Или вы сугубо по TABLOCK отвечали? Тогда я Вас недопонял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 16:53 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
invmС TABLOCK да. А без и с TF 610 - конкурентный Но все флаги, как обычно, используйте на свой страх и риск: If trace flag 610 causes minimal logging to occur, you should generally see a performance improvement. But as always with trace flags, make sure you test for your specific environment and workload. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 17:23 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
EleanorНо все флаги, как обычно, используйте на свой страх и риск: Нет болл 610-го, почил в бозе. В 2016-ом логика минимального логирования вклчена прямо из коробки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 18:37 |
|
||
|
Быстрая вставка данных
|
|||
|---|---|---|---|
|
#18+
Col, Спасибо, нашла таблицу для минимального логирования в 2016. Хотя, ТС-у придется тестировать TF610 со своим 2008 R2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 19:15 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39662462&tid=1689543]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 568ms |

| 0 / 0 |
