Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 13:23 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Без плана ускоряют только телепаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 14:27 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичБез плана ускоряют только телепаты. во вложении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 15:03 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
estimated execution plan ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 15:03 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Чтобы не сканить каждый раз две таблицы, выделите базе db_from новые записи (хоть триггером в таблицу, хоть в очередь), дальше разбирайте новые записи порциями и вливайте в db_to. Непосредственно со вставкой тут мало что сделаешть, разве что поддерживать fillfactor для индекса по id регулярными редилдами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 15:15 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичЧтобы не сканить каждый раз две таблицы, выделите базе db_from новые записи (хоть триггером в таблицу, хоть в очередь), дальше разбирайте новые записи порциями и вливайте в db_to. Как-то сложно. Может проще? Повесить rowversion, сделать индекс по rowversion include [все поля]... И каждый раз тянуть только строки старше предыдущего rowversion. Тут только последний rowversion где-то хранить надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 16:49 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Андрей ЮниорПовесить rowversion, сделать индекс по rowversion include [все поля]... И каждый раз тянуть только строки старше предыдущего rowversion. Тут только последний rowversion где-то хранить надо.rowversion меняется при каждом обновлении. А ТС нужно только добавлять новые строки. Тогда уж лучше не rowversion, а identity. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:02 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
У Id тип uniqueidentifier. Никакого identity... Да, повторы будут. Но сканов всё равно будет меньше. Да и, собственно, если данные изменились, то в конечной таблице может тоже обновить надо, верно? Или в исходной данные не меняются - тогда всё отлично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:11 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Андрей ЮниорУ Id тип uniqueidentifier. Никакого identity... Только если ещё одно поле... Ну можно, конечно, но rowversion функциональнее: с ним при необходимости изменения можно отследить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:12 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Андрей ЮниорМожет проще? Повесить rowversion...Тут только последний rowversion где-то хранить надо.1. Как будете гарантировать отсутствие выпадения строк таблицы-источника из последующих синхронизаций? 2. Как быть, если после последней синхронизации в целевой таблице некоторые строки были удалены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:25 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
listtoview, Для начала, если допустимо блокировать таблицу Код: sql 1. И план актуальный покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:28 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Андрей ЮниорУ Id тип uniqueidentifier. Никакого identity...Да, разве я говорил про другое??? Андрей ЮниорТолько если ещё одно поле... Ну можно, конечно, но rowversion функциональнее: с ним при необходимости изменения можно отследить.Отслеживать изменения противоречит задаче ТС. Будут ложные срабатывания. Можно сделать и datetime, но это вызовет некоторые технические сложности. invm2. Как быть, если после последней синхронизации в целевой таблице некоторые строки были удалены?У ТС нет задачи синхронизации таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:37 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
invm1. Как будете гарантировать отсутствие выпадения строк таблицы-источника из последующих синхронизаций? 2. Как быть, если после последней синхронизации в целевой таблице некоторые строки были удалены? Насколько вижу я, автора эти моменты не интересуют. Меня тем более Вопрос про конкретную вставку, которая медленно ищет новые строки. Я предложил решение уменьшить время поиска новых сток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2019, 17:40 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Непонятная дискуссия, автору надо изменить формулу кластерного индекса на IGNORE_DUP_KEY = ON и вставлять без фильтра в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 12:24 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, И каждый раз вливать всю db_from.[dbo].TextTranslates в db_to.[dbo].TextTranslates ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 12:40 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, может это небольшая таблица, кто знает. И как она пополняется - неизвестно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 12:51 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовГавриленко Сергей Алексеевич, может это небольшая таблица, кто знает. И как она пополняется - неизвестно. Что гадать, в плане есть оценка: - из db_to вынимается 1млн. 264тыс записей размером 26М - из db_from поднимается почти 600 тыс записей размером 2.2Г - все это для того, что бы найти ОДНУ запись в db_from в 4К, которую добавить в db_to. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 13:52 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовавтору надо изменить формулу кластерного индекса на IGNORE_DUP_KEY = ON и вставлять без фильтра в запросе.1. Т.е. вы уверены, что отсутствие ошибок в местах, где они раньше были, никак не скажется на работе системы? 2. Производительность данной "формулы" очень сильно зависит от объема добавляемых данных и количества дубликатов в них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 17:27 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
invm, дык есть только один способ узнать - приемлемое будет время вставки или нет. Да, логика может пострадать, а может и не пострадать. Автор сам пусть решает. Он даже не четверть задачи описал, а вырвал какой-то фрагмент из контекста. Поэтому мое предложение ничуть не хуже остальных. Иному серверу выполнить слияние в 600к записей - как чихнуть, а иной задумается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 17:42 |
|
||
|
Как ускорить INSERT?
|
|||
|---|---|---|---|
|
#18+
listtoview, используйте sequential ID , а ещё лучше INT (BIGINT если очень много). INSERT INTO db_to.[dbo].TextTranslates WITH (TABLOCK) SELECT * FROM db_from.[dbo].TextTranslates AS f WHERE f.Id NOT IN ( SELECT [Id] FROM db_to.[dbo].TextTranslates ) ORDER BY f.ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 18:54 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39875672&tid=1687131]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 536ms |

| 0 / 0 |
