2014-03-03 3 views
0

Каждые 5 секунд я хочу вставить около 10 тыс. Строк в таблицу. Таблица ненормализована и не имеет первичных ключей или каких-либо индексов. Я заметил, что производительность вставки очень медленная - 10 тыс. Строк за 20 секунд, что для меня неприемлемо.SQL-вставка очень медленная

В моем понимании индексирование может улучшить только результаты поиска, но не вставить. Это правда? Есть ли у вас предложения по улучшению производительности?

+0

10k строк? Waaaat – HexCoder

+0

содержит ли в таблице любые ограничения внешнего ключа? – dav1dsm1th

+0

Также, чтобы проверить, есть ли какие-либо триггеры вставки? –

ответ

1

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

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

Если вы выполняете вставки последовательно, вы можете захотеть вместо этого выполнить bulk insert operation, которые будут иметь лучшие характеристики производительности.

И, наконец, некоторая пища для размышлений, если вы делаете 10K вставок каждые 5 секунд, вы можете захотеть рассмотреть базу данных NoSQL для массового хранения, поскольку они имеют лучшие характеристики производительности для этого типа приложений, где у вас есть большие и частые записи.

1

Кроме того, что предлагает Miky, вы также можете улучшить производительность, оптимизируя структуру вашего db, например, уменьшая длину полей varchar, используя перечисления вместо текстов и так далее. Это также связано с ссылочной целостностью, и в первую очередь, я думаю, вы должны нормализовать базу данных в любом случае. Затем вы можете продолжить оптимизацию запросов.

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