Эффективное использование транзакций SQL - PullRequest
2 голосов
/ 02 июля 2010

Моему приложению в настоящее время необходимо выгрузить большой объем данных на сервер базы данных (SQL Server) и локально в базу данных SQLite (локальный кэш).

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

Как правильно использовать транзакции с большим количеством строк для вставки в базу данных? Например, вы начинаете / делаете каждые 1000 строк?

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Нет, такого ограничения нет.Вопреки тому, что вы можете поверить, SQLite записывает ожидающие транзакции в файл базы данных, а не в ОЗУ.Таким образом, вы не должны сталкиваться с какими-либо ограничениями на объем данных, которые вы можете записать в рамках транзакции.

См. Документацию SQLite для получения этой информации: http://sqlite.org/docs.html

Перейдите по ссылке «Ограничения в SQLite»для ограничений реализации, подобных этим.

Перейдите по ссылке «Как SQLite реализует атомарный коммит», чтобы узнать, как работают транзакции

1 голос
/ 02 июля 2010

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

Лучшим вариантом будет BCP вставить их в цель, имея дело со многими строками или даже пакетом служб SSIS, чтобы сделать это.

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