У меня есть приложение, которое живет в многопользовательской среде.
У меня проблема, когда два или более людей вызывают хранимые в SQL процессы одновременно (SELECT
а также INSERT
).
Память на сервере исчерпана, и возвращается ошибка взаимоблокировки:
'(0=> 4000 1=>1205 2=> Transaction was deadlocked on lock resources with another
process and has been chosen as the deadlock victim)
Я уверен, что это связано с тем, что память не очищается после каждой транзакции.
Мой код выглядит так:
BEGIN TRANSACTION
UPDATE table ...
SELECT column FROM table_2 ...
EXEC dbo.stored_proc
COMMIT
Сами хранимые процедуры не имеют COMMIT
,
Я читал о mssql_free_statement()
но мне нужна альтернатива SQL или PHP PDO.
Кроме того, мой диагноз правильный или могло быть что-то еще, вызывающее тупик?
Задача ещё не решена.
Других решений пока нет …