Вставка в одну и ту же таблицу БД из двух разных программ одновременно - PullRequest
0 голосов
/ 23 сентября 2018

Каковы последствия вставки новых строк (без обновления существующих) в одну и ту же таблицу (SQL Server) из двух разных программ?

У меня есть служба Windows, которая выполняет много операций вставки в БД(1 вставка в секунду, иногда быстрее).Я хочу сделать этот сервис масштабируемым (я хочу запускать один и тот же сервис на многих компьютерах).Боюсь, что это может вызвать проблемы во время этих вставок.

Если это проблема, то как ее решить?(Я не спрашиваю о «лучшем» способе, так что это не самоуверенный вопрос).

Моя первая идея - создать новый сервис - «сервис доступа к данным» с очередью.Это будет единственный сервис, который общается с базой данных.Другие сервисы будут подключаться к этому сервису, когда захотят что-то вставить.Я не уверен, что это перебор.Есть ли способ лучше?Или, может быть, у меня нет проблемы вообще, и она обрабатывается SQL Server (что было бы идеально)?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

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

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

Здесь еще несколько советов и дополнительных приемов, но это может быть ошеломляющим.

0 голосов
/ 23 сентября 2018

SQL-сервер был разработан для одновременного использования.Таким образом, нет, вставка из разных программ не является проблемой.

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

Количество транзакций в секунду (TPS) сильно зависит от используемого оборудования, схемы БД, конфигурации сервера и т. Д. Поэтому я не могу дать вам точное число по этому поводу,но вы можете ожидать, что он будет обрабатывать несколько сотен или даже тысяч TPS.

...