сколько строк может быть выполнено за один раз, если не выбрано время - PullRequest
1 голос
/ 14 января 2011

я работаю на сервере sql 2005 У меня почти 350 000 сценариев вставки. В сценарии вставки 10 вставляемых столбцов.

Итак, сколько строк я должен выбрать для выполнения одним щелчком мыши. «Выполнить» нажмите ..

Скажите, пожалуйста, среднее число в зависимости от средней конфигурации системы.

Win XP Cor 2 Duo 3,66 Гб оперативной памяти

Ответы [ 3 ]

2 голосов
/ 14 января 2011

Хорошо, давайте разберемся здесь с некоторыми вещами:

Win XP Cor 2 Duo 3,66 Гбайт оперативной памяти

Не средний, но устаревший.Сверху он полностью пропустил самый важный нубмер для БД, который представляет собой скорость / количество дисков.

я работаю на сервере sql 2005 У меня почти 350 000 сценариев вставки ..

Я серьезно сомневаюсь, что вы написали 350.000 СЦЕНАРИЙ.Это будет 350.000 файлов, которые содержат команды вставки.Это много файлов.

Скрипт вставки содержит 10 столбцов для вставки.

Я заказываю пиццу.Сколько топлива требуется моей машине на км?Такое же отношение.10 столбцов - это хорошо, но вы не говорите, сколько команд вставки содержат ваши сценарии.

Итак, в конце единственная ЧУВСТВИТЕЛЬНАЯ интерпретация состоит в том, что вы должны вставить 350.000 строк и попытаться сделать это из программы (т.е.нет сценариев для начала), но это абсолютно НЕ то, что вы говорите.

Итак, сколько строк я должен выбрать для выполнения одним щелчком мыши

Сколько пицц я должен заказать с одним телефоном?Щелчок здесь не имеет значения.Он также не становится быстрее, когда вы используете программу командной строки для выполнения isnerts.

Вопрос в том, как получить вставки в db быстрее всего.

  • Для обычногоSQL:

    • Пакетные вставки.Как 50 или 100 в одном операторе (да, вы можете записать более одной вставки в одну команду).
    • Передать их с асинхронным чередованием, подготавливая следующий оператор, пока выполняется предыдущий.
    • Thisочень гибок, так как yuo может делать реальные sql и т. д.
  • для реальных массовых вставок:

    • Забудьте идею написания вставных состояний.Подготовьте данные должным образом в соответствии со структурой таблицы, используйте SqlBulkCopy для массовой вставки их.
    • Менее гибкий - но НАМНОГО быстрее.

Более поздний подход на моемМАЛЫЙ (!) Компьютер базы данных будет обрабатывать это примерно за 3-5 секунд, когда поля будут маленькими (вы знаете, что это поле объемом 2 ГБ двоичных данных).Я обрабатываю около 80 000 строк в секунду без особой оптимизации, но у меня есть небольшие и немного меньше поля.Это 4 процессорных ядра (нерелевантные, они никогда не загружаются), 8 ГБ ОЗУ (ОЧЕНЬ мало для сервера базы данных, неуместно и в этом контексте) и 6 влоципторов для данных в Raid 10 (опять же, небольшая конфигурация длябаза данных, но очень актуальная).Я получаю пиковую вставку в диапазоне 150 Мбит / с здесь, в мониторе активности.Здесь я проведу большую оптимизацию, так как я в настоящее время открываю / закрываю соединение с БД через каждые 20 000 элементов ... плохое пакетирование.

Но, похоже, у вас вообще нет системы баз данных, простобаза данных, установленная на рабочей станции нижнего уровня, это означает, что ваш ввод-вывод будет ОЧЕНЬ медленным по сравнению с серверами баз данных, а скорость вставки / скорость обновления ограничена вводом-выводомНастольные диски не работают, и у вас есть данные и журналы на тех же дисках.

Но ... в конце вы действительно ничего не говорите нам о своей проблеме.

И ...Тайм-аут МОЖЕТ быть установлен программно на объекте соединения.

1 голос
/ 14 января 2011

Общее правило не должно превышать 0,1 секунды на операцию пользовательского интерфейса для превосходной производительности. Вам нужно будет проверить, чтобы узнать, что это такое.

1 голос
/ 14 января 2011

Я уверен, что время ожидания может быть установлено пользователем, выбрав Свойства сервера -> Соединения -> Тайм-аут удаленного запроса. Если вы установите это значение достаточно высоким (или равным 0, что должно означать, что оно никогда не истекает), вы можете запустить столько скриптов, сколько захотите.

Очевидно, что это нормально, если база данных еще не запущена, а вам просто нужно заполнить ее. Если данные поступают с другого сервера MS SQL, вы можете просто выполнить полное резервное копирование и восстановление - это будет и проще, и быстрее.

Это может помочь.

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