Добрый день.
Есть WEB сервер, модуль которого подключается к базе и вносит изменения в таблицу-счётчик. На сколько я понимаю в один момент времени на web сервер может придти "куча" запросов, и в один миг идут множество запросов в базу.
существует хранимая процедура, например скрипт самый простой:
К примеру [Inc_Fild] = 100, в один момент времени пришло 100 запросов на web сервер, модуль которого которого стал вызывать хранимку в ста разных потоках. Если не делать BEGIN TRANSACTION, при завершении выполнения 100 запросов [Inc_Fild] будет равен "0", или же нет? Я к чему, может ли быть ситуация когда, первый поток вызова процедуры вносит изменения в БД а второй читает как бы "грязные" данные, изменения которых ещё не произошли? Или же MSSQL не позволит этого сделать, и выполнения множества потоков встанет в очередь и будет выполнение одно за другим?
Есть WEB сервер, модуль которого подключается к базе и вносит изменения в таблицу-счётчик. На сколько я понимаю в один момент времени на web сервер может придти "куча" запросов, и в один миг идут множество запросов в базу.
существует хранимая процедура, например скрипт самый простой:
CREATE PROCEDURE [Test] AS UPDATE [Test_Table] SET [Inc_Fild] = [Inc_Fild] - 1 GO
К примеру [Inc_Fild] = 100, в один момент времени пришло 100 запросов на web сервер, модуль которого которого стал вызывать хранимку в ста разных потоках. Если не делать BEGIN TRANSACTION, при завершении выполнения 100 запросов [Inc_Fild] будет равен "0", или же нет? Я к чему, может ли быть ситуация когда, первый поток вызова процедуры вносит изменения в БД а второй читает как бы "грязные" данные, изменения которых ещё не произошли? Или же MSSQL не позволит этого сделать, и выполнения множества потоков встанет в очередь и будет выполнение одно за другим?