Вставьте данные в SQL-сервер с лучшей производительностью - PullRequest
3 голосов
/ 10 мая 2010

У меня есть приложение, которое интенсивно использует БД (SQL Server).

Поскольку он должен иметь высокую производительность, я хотел бы знать самый быстрый способ вставить запись в DB.Fastest с точки зрения времени выполнения.

Что мне использовать?

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

Ответы [ 4 ]

3 голосов
/ 10 мая 2010

массовая вставка будет самой быстрой, поскольку она минимально регистрируется, возможно, вы можете использовать класс SqlBulkCopy

2 голосов
/ 10 мая 2010

«Это зависит».

  • Сколько строк вы говорите о вставке?
  • Как часто они будут вставлены?
  • Какие другие операции с базами данных будут выполняться одновременно?
  • Будут ли вставлены строки из-за действий пользователя (нажатия кнопки) или из-за какого-то внешнего раздражителя?

Основываясь на вашем обновлении, я думаю, вам следует рассмотреть механизмы, отличные от простого кода. Посмотрите на SQL Server Integration Services, которые оптимизированы для массовых операций с базами данных. Возможно, что вам нужно простое задание служб SSIS, которое периодически запускается для массовой вставки всех «новых» данных, соответствующих определенным критериям. Со временем это позволит модификациям использовать такие вещи, как промежуточные таблицы или промежуточные серверы, если это окажется необходимым.

1 голос
/ 10 мая 2010

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

  • Не открывать одно соединение на запись. Узнайте, как пул соединений обычно не позволяет случайно открыть одно соединение для каждой записи.
  • Если возможно, не открывайте одну транзакцию для каждой записи. Также не оставляйте транзакцию открытой на неоправданные промежутки времени.
  • Рассмотрим дизайн таблицы: узкие таблицы с несколькими индексами / ограничениями и без триггеров.
  • Если вам нужна быстрая вставка, потому что вы веб-приложение и хотите вернуть страницу пользователю СЕЙЧАС, или вы являетесь приложением winform и блокируете поток UI, рассмотрите возможность выполнения асинхронной вставки или другого потока .
  • Если вам нужна быстрая вставка для импорта файла в миллион строк, рассмотрите возможность массовой вставки.
  • Если все, что вам нужно, это сохранить данные, а не запрашивать их ... рассмотрите возможность использования решения на основе файлов.
0 голосов
/ 11 мая 2010

Вы сделали математику? 2M / день = 83k / час = 1388 / мин = 23 / секунду.

При скорости 23 вставки в секунду SQL Server не потеет.

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