Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
Microsoft SQL Server 2014 - 12.0.4100.1 (X64)

На одном сервере есть две базы данных:
- DB1 (COLLATION = Cyrillic_General_BIN)
- DB2 (COLLATION = SQL_Latin1_General_CP1251_CI_AS)

Нужно данные из таблицы TableSrc DB1 залить в таблицу TableRec DB2.
В таблице TableSrc 14 млн записей.
В таблице TableRec нет индексов.

Запускаю sql скрипт на DB1:
DBCC TRACEOFF(610)

insert into DB2.dbo.TableRec WITH(TABLOCK)
select *
from TableSrc
работает около часа

Ради интереса запускаю модифицированный sql скрипт на DB1, который делает все тоже самое только в рамках одной БД:
DBCC TRACEOFF(610)

insert into TableRec WITH(TABLOCK)
select *
from TableSrc
работает около двух минут


Не понимаю почему такая разница.
Можно как то ускорить выполнение первого скрипта?
28 окт 19, 19:40    [22004550]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33504
Блог
Evgi1980,

Может у вас источник лежит на массиве ssd, а приемник на одиноком hdd?
28 окт 19, 19:42    [22004551]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
опечатался, в обоих скриптах стоит
DBCC TRACENN(610)
28 окт 19, 19:43    [22004553]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
Критик
Evgi1980,

Может у вас источник лежит на массиве ssd, а приемник на одиноком hdd?

нет, обе базы на одном жестком диске
28 окт 19, 19:44    [22004554]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36900
Какие модели восстановления у обеих баз?
28 окт 19, 19:54    [22004558]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
msLex
Member

Откуда:
Сообщений: 7988
Какая модель восстановления в базах?
28 окт 19, 19:55    [22004560]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Evgi1980
Не понимаю почему такая разница.
1. Сравните определения таблиц (точно, включая всякие "опции", и наличие триггеров, не считайте какую то мелочь несущественной)
2. Сравните параметры авторасширения файлов у баз
3. Сравните модель логирования.
28 окт 19, 19:56    [22004561]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33504
Блог
Evgi1980,

И их логи тоже?
Модели восстановления одинаковы?

А запрос

Use DB2
Go

insert into dbo.TableRec WITH(TABLOCK)
select *
from db1..TableSrc

работает долго или быстро?
28 окт 19, 19:57    [22004562]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Evgi1980
опечатался
Раз "опечатался", то, наверное, и скрипты не такие, раз вы их не копировали, а набирали?
28 окт 19, 19:59    [22004563]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33504
Блог
Ну и проще всего сравнить планы, может там действительно триггеры или еще что.
28 окт 19, 19:59    [22004564]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
Свойства БД источника: https://i.imgur.com/JuXFyGg.png
Свойства БД приемника:https://i.imgur.com/54mejVw.png

В первом посте именно опечатка, потому что набирал от руки, конечно же стоит DBCC TRACEON(610).
Модели восстановления простые на обеих базах.
Триггеров, индексов и т.д. на таблице приемника нет (таблица свежесозданная).
Планы запросов одинаковые:
план запроса 1: https://i.imgur.com/hZF40qE.png
план запроса 2: https://i.imgur.com/JZFRGqk.png
29 окт 19, 00:04    [22004656]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
Критик
Evgi1980,

И их логи тоже?
Модели восстановления одинаковы?

А запрос

Use DB2
Go

insert into dbo.TableRec WITH(TABLOCK)
select *
from db1..TableSrc

работает долго или быстро?

так тоже пробовал, выполняется долго
29 окт 19, 00:09    [22004657]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
alexeyvg
Evgi1980
Не понимаю почему такая разница.
1. Сравните определения таблиц (точно, включая всякие "опции", и наличие триггеров, не считайте какую то мелочь несущественной)
2. Сравните параметры авторасширения файлов у баз
3. Сравните модель логирования.

Где это можно посмотреть?
29 окт 19, 00:12    [22004658]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
alexeyvg
2. Сравните параметры авторасширения файлов у баз

у источника:
база: с шагом 1мб без ограничений
лог: с шагом 100 мб до 20971152 мб

у приемника:
база: с шагом 1мб без ограничений
лог: с шагом 10% без ограничений
29 окт 19, 00:18    [22004660]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
источник: https://i.imgur.com/NdZkIo4.png
приемник: https://i.imgur.com/U3RxQ5s.png
29 окт 19, 00:21    [22004661]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
завтра попробую перетащить таблицу источник на DB2 и сделать копирование в таблицу приемник этой же базы.
29 окт 19, 00:33    [22004666]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Evgi1980
alexeyvg
2. Сравните параметры авторасширения файлов у баз

у источника:
база: с шагом 1мб без ограничений
лог: с шагом 100 мб до 20971152 мб

у приемника:
база: с шагом 1мб без ограничений
лог: с шагом 10% без ограничений
Возможно, у одной базы было мало свободного места, и серверу пришлось 14 раз выполнить увеличение файла, с разметкой структуры. К тому же база получилась фрагментированной.

Вообще, параметры установлены ужасные.

Evgi1980
alexeyvg
пропущено...
1. Сравните определения таблиц (точно, включая всякие "опции", и наличие триггеров, не считайте какую то мелочь несущественной)
2. Сравните параметры авторасширения файлов у баз
3. Сравните модель логирования.

Где это можно посмотреть?
1 - сделать скрипты обоих таблиц, в SSMS. Только нужно выставить в опциях параметры, что бы скриптовались индексы, и прочее, а не только поля.

3 - посмотреть свойства базы, options -> recovery model
29 окт 19, 01:06    [22004670]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Evgi1980
Свойства БД источника: https://i.imgur.com/JuXFyGg.png
Свойства БД приемника:https://i.imgur.com/54mejVw.png
Прикольно, установлен параметр автошринк :-)

И есть же ещё одно большое отличие - у второй базы установлен уровень совместимости 2008 R2
29 окт 19, 01:14    [22004675]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
[quot alexeyvg]
Evgi1980
Вообще, параметры установлены ужасные.

Посоветуйте пжл какие параметры какими значениями лучше установить
29 окт 19, 09:34    [22004757]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Evgi1980
Посоветуйте пжл какие параметры какими значениями лучше установить
Для источника сделать приращение файла данных 1 Гб, для приёмника 100 Мб
Приращение файла лога можно оставить как есть.
Вообще, нужно учитывать все особенности конкретной системы, но грубо, исходя из размеров, можно установить так.
29 окт 19, 10:40    [22004818]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Evgi1980
Посоветуйте пжл
И автошринк у базы-приёмника уберите, он только навредит.
29 окт 19, 10:41    [22004821]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
alexeyvg
Для источника сделать приращение файла данных 1 Гб, для приёмника 100 Мб

может, у него вся база целиком меньше гигабайта,
куда же такое приращение?

Evgi1980, размер базы огласите
29 окт 19, 10:55    [22004832]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Yasha123
Evgi1980, размер базы огласите

в виде резултьтата exec sys.sp_spaceused
29 окт 19, 10:58    [22004836]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
Evgi1980
Member

Откуда:
Сообщений: 19
Ради эксперимента в базе данных приемника (DB2) поставил увеличение приращения файла данных 1 Гб, стало работать 2 мин

Всем спасибо за помощь! :)
29 окт 19, 11:08    [22004849]     Ответить | Цитировать Сообщить модератору
 Re: Долгая вставка в таблицу другой базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
Yasha123
может, у него вся база целиком меньше гигабайта,
куда же такое приращение?

Evgi1980, размер базы огласите
На картинках видно, 28 и 2 Гб для первой и второй базы
29 окт 19, 13:27    [22004992]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить