Сколько вызовов хранимой процедуры можно выполнить за секунду?
Immaterial. Ваша СУБД не «теряет» транзакции из-за перегруженности.
В чем может быть причина отказа от стольких звонков?
Какие у вас есть доказательства того, что даже один звонок сбрасывается? Вы не упомянули ни одного.
Что я могу сделать, чтобы убедиться, что все вызовы вставляются в таблицу?
Ищите места, где ваша транзакция не совершается.
Поможет ли это использовать обычные вызовы, а не вызовы хранимых процедур?
Нет, наоборот. Хранимые процедуры более эффективны и предоставляют вам функции безопасности, которые иначе недоступны.
Полагаю, вы не обновляете свои обновления. Либо вам не удается каждый раз вызывать commit , либо вы не замечаете ошибку, которая препятствует применению обновления.
Первое, что я проверю, это свойство соединения, которое определяет, является ли COMMIT явным или неявным. Если для соединения , а не требуется явная фиксация из приложения, то каждый INSERT фиксируется атомарно. Это похоже на то, что вы хотели бы для таблицы журнала.
Что вы можете сделать, это создать «таблицу журнала регистрации» и вставлять в нее каждый раз, когда вы вызываете хранимую процедуру, и снова каждый раз, когда она завершается, со временем и состоянием. Убедитесь, что обновления таблицы журнала не являются частью какой-либо более крупной транзакции, которая может быть откатана. Проверьте это, проверив @@trancount
. Верните ошибку, если она больше 1, и убедитесь, что вы правильно записываете ошибки. Если вы включите ключевую информацию в свою таблицу журналов, вы можете сравнить ее с основной таблицей, чтобы узнать, кому чего не хватает. Могу поспорить, это покажет улики.
В вашем приложении вы можете аналогичным образом записывать в файл журнала каждый раз, когда обновляете сервер, каждый раз, когда он отвечает, а также записывать время и состояние. Если этот журнал не согласуется с вашей таблицей журналов, вы знаете, что вам есть что посмотреть.
Вы правы в одном: если обновления поступают по сети, есть вероятность, что соединение обрывается. Если он будет удален до фиксации, это объяснит потерянные обновления, потому что вставка откатывается.