Ускорение переливания данных

MaximFomenko
Дата: 24.01.2013 17:10:19
Добрый день.

Есть задача каждый день заново копировать таблицу без никаких изменений с одной базы на одном сервере в другую базу на другом сервере. Версии серверов одинаковые - MS SQL 2005.

INSERT INTO [database1].[table1]
SELECT * FROM [database1].[table1]


работает слишком медленно - больше часа на 8,5 млн. строк.

Попробовал ускорить это путем минимизации логгирования:

ALTER DATABASE [database1] SET RECOVERY BULK_LOGGED;
GO

SELECT * INTO [database2].[table1] FROM [database1].[table1]
GO

ALTER DATABASE [database1] SET RECOVERY FULL;
GO


стало быстрее - 12 мин.

Это конечно уже лучше, но все равно долговато. Разница всего раз в 5.

Пробовал решать эту же самую задачу но в среде Оракла и там разница в производительности между первым и вторым вышеизложенным вариантом решения была порядка 80 раз. Т.е. первый способ копирует таблицу за 1 час 20 мин, а второй за 1 минуту.

Можно ли с MS SQL Server тоже выжать такое ускорение как-то?
sphinx_mv
Дата: 24.01.2013 18:01:24
MaximFomenko
Добрый день.

Есть задача каждый день заново копировать таблицу без никаких изменений с одной базы на одном сервере в другую базу на другом сервере. Версии серверов одинаковые - MS SQL 2005.

...

Можно ли с MS SQL Server тоже выжать такое ускорение как-то?
У Вас сервера насколько далеко друг отдруга расположены? Какая связь между ними имеется?
Если сервера рядом или связаны достаточно широким (и надежным) каналом, не очень понимаю, зачем Вам копировать таблицы.
Настроить линк-сервер с одного на другой - и будет у Вас "мгновенный" обмен данными между серверами.
MaximFomenko
Дата: 24.01.2013 18:05:43
sphinx_mv
MaximFomenko
Добрый день.

Есть задача каждый день заново копировать таблицу без никаких изменений с одной базы на одном сервере в другую базу на другом сервере. Версии серверов одинаковые - MS SQL 2005.

...

Можно ли с MS SQL Server тоже выжать такое ускорение как-то?
У Вас сервера насколько далеко друг отдруга расположены? Какая связь между ними имеется?
Если сервера рядом или связаны достаточно широким (и надежным) каналом, не очень понимаю, зачем Вам копировать таблицы.
Настроить линк-сервер с одного на другой - и будет у Вас "мгновенный" обмен данными между серверами.

Долго объяснять все тонкости внутренней архитектуры компании. Остановимся просто на том, что данные нужно именно скопировать как на обязательном требовании.

Что в таком случае можно еще сделать для ускорения?
Гавриленко Сергей Алексеевич
Дата: 24.01.2013 18:12:20
MaximFomenko
sphinx_mv
пропущено...
У Вас сервера насколько далеко друг отдруга расположены? Какая связь между ними имеется?
Если сервера рядом или связаны достаточно широким (и надежным) каналом, не очень понимаю, зачем Вам копировать таблицы.
Настроить линк-сервер с одного на другой - и будет у Вас "мгновенный" обмен данными между серверами.

Долго объяснять все тонкости внутренней архитектуры компании. Остановимся просто на том, что данные нужно именно скопировать как на обязательном требовании.

Что в таком случае можно еще сделать для ускорения?
Заменить модем на широкополосный интернет.
komrad
Дата: 24.01.2013 18:14:52
MaximFomenko
Что в таком случае можно еще сделать для ускорения?


тынц
alexeyvg
Дата: 24.01.2013 20:59:08
MaximFomenko
Можно ли с MS SQL Server тоже выжать такое ускорение как-то?
Можно сделать SSIS пакетом, в том числе через файл (особенно если канал плохой, тогда можно передавать сжатый файл)
Критик
Дата: 24.01.2013 22:13:20
MaximFomenko
Есть задача каждый день заново копировать таблицу без никаких изменений с одной базы на одном сервере в другую базу на другом сервере. Версии серверов одинаковые - MS SQL 2005.

INSERT INTO [database1].[table1]
SELECT * FROM [database1].[table1]



это как? сервера же разные