Связка вставок (транзакция) быстрее, чем каждая вставка в отдельности - PullRequest
0 голосов
/ 28 февраля 2010

Связка вставок (транзакция) выполняется быстрее, чем каждая вставка в отдельности, я так думаю, может, нет, подскажите, кто проверяет, есть ли разница, может быть, если в таблице много индексов.

Ответы [ 3 ]

1 голос
/ 28 февраля 2010

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

0 голосов
/ 19 января 2011

Если вы используете полнофункциональный механизм баз данных, такой как SQL Server, он будет обрабатывать транзакции для вас: незаметно. Но если вы хотите запускать свой код на чем-то вроде FireDB, SQLite или Hypersonic, то вам нужно будет применить подход, заключающийся в ручном развертывании транзакций в вашем приложении. Вы заметите разницу в основном во вставках и обновлениях.

0 голосов
/ 28 февраля 2010

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

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

...