У нас есть файлы размером несколько ГБ, которые приходят каждый день для загрузки в экземпляр SQL Server 2005 через пакеты служб SSIS. Чтобы асинхронно загружать эти большие файлы данных в SQL Server, мы создали многопоточное приложение .NET. Это приложение использует исполняемый файл командной строки DTSExec для вызова пакетов служб SSIS. Он также создает 5 очередей и 5 потоков для каждой очереди. Таким образом, всего 25 файлов могут быть загружены одновременно.
Это приложение, скажем «AsyncLoader», находится на том же компьютере, что и экземпляр SQL Server 2005 и экземпляр SSIS. Серверная машина огромна. 32 ЦП, 128 ГБ памяти, SAN и т. Д. Мы выделили 5% памяти для ОС, а остальная часть памяти зарезервирована для экземпляра SQL Server 2005. Вот мои варианты;
1) Переместите экземпляр SSIS и AsyncLoader на свой компьютер, чтобы у DTSExec было собственное большое пространство памяти для работы. Исключите циклы ЦП служб SSIS с компьютера с SQL Server.
2) Держите все проигрыватели (SQL Server, SSIS, AsyncLoader) на одном компьютере и сократите общий объем выделенной памяти на SQL Server до 75%, чтобы у DTSExec было больше памяти для работы.
В настоящее время у нас не так много времени для проверки концепции или сравнительного анализа для каждого решения. Я просто хотел, чтобы вы, ребята, поняли, есть ли у кого-то еще такая установка и каковы будут лучшие практики. Кроме того, перемещение пакетов с одной машины на другую является огромным бременем, поэтому, хотя вариант 1 кажется столь очевидным, нам нужны веские факты, чтобы понять, приносит ли он значительный прирост производительности.