2009-02-09 2 views
0

Я пытаюсь заполнить таблицу информацией пользователя в базе данных MS SQL с информацией из нескольких источников данных (например, LDAP и некоторых других баз данных MS SQL). Процесс должен выполняться как ежедневная запланированная задача, чтобы часто обновлять таблицу информации пользователя.Как я могу эффективно обновлять базу данных с помощью внешних источников данных?

Первоначальная попытка этого сценария запроса/обновления была написана в VBScript и будет запрашивать каждый источник данных, а затем обновлять таблицу пользовательских данных. К сожалению, это занимает очень много времени, чтобы запустить и обновить таблицу пользовательских данных.

Мне любопытно, если кто-нибудь написал что-либо подобное, и если вы порекомендовали или заметили улучшение производительности, написав скрипт на другом языке. Некоторые из них рекомендовали Perl из-за многопоточности, но если у кого-то есть другие предложения о способах улучшения процесса или других подходов, вы можете поделиться советами или уроками.

ответ

0

Я не могу рассказать вам, как решить вашу конкретную проблему, но всякий раз, когда вы сталкиваетесь с этой ситуацией, вы хотите узнать, почему это происходит медленно, прежде чем пытаться ее решить. Где замедляется? Некоторые основные вещи, чтобы рассмотреть и исследовать, включают:

  • получать данные
  • взаимодействует с сетью
  • запросов к базе данных
  • обновляя индексы в базе данных

Получить некоторое время и профилирование чтобы выяснить, где сосредоточить свои усилия.

0

Хммм. Похоже, вы могли cron сценарий, который использует утилиты dump из различных источников, а затем выводит вывод в хорошую форму для загрузки нагрузки для целевой базы данных. Скрипт может быть в bash или Perl, что угодно.

Редакция: Что касается производительности, я думаю, что первое, что вы хотите попробовать, это убедиться, что вы отключили какую-либо автообработку в начале процесса загрузки, а затем выпустите фиксацию после записи всех записей. Это может привести к большой разнице в производительности.

2

Рекомендуется использовать службы преобразования данных (DTS) или SSIS, поскольку стало известно о выполнении повторяющихся задач БД. Хотя это не решит вашу проблему, оно может дать некоторые указания на то, что происходит, поскольку вы можете регистрировать каждый этап процесса, переносить его в транзакции и т. Д. Он особенно хорошо подходит для массовой загрузки и обновлений, и он понимает VBScript из-за этого там не должно быть никаких проблем.

Помимо этого я должен согласиться с Брайаном, выяснить, что замедляет работу и исправить это, изменение языков вряд ли поможет исправить это самостоятельно, особенно если у вас есть основная проблема. В общем, мой опыт использования LDAP, который довольно мал, мог бы быть невероятно медленным объемом информации о пользователе.

0

AS MrTelly сказал, используйте SSIS или DTS. Затем планируйте запуск пакета. Простое преобразование в это само по себе поможет исправить вашу скорость, поскольку у них есть задачи, оптимизированные для массового вставки. Я бы никогда не делал этого на языке сценария, а в любом случае t-SQl. Вероятно, ваш скрипт работает по строкам, а не на наборах данных, но это всего лишь предположение.

Смежные вопросы