В последнее время я создаю API REST как часть назначения, где я предполагаю увеличить счетчик в таблице базы данных, предполагая, что таблица имеет только один столбец, и я предполагаю, что к этому API REST будет выполняться 1000 запросов в секунду. чтобы увеличить счетчик, и в конце данные должны быть согласованы, т. е. если изначально значение счетчика в БД равно 0, то после успешного выполнения 1000 запросов одновременно оно должно быть 1000.
Пока не беспокойтесь, я достиг этого с помощью блокировки на уровне строки базы данных, другим способом могло бы стать использование транзакции (с максимальной изоляцией) вокруг кода, который увеличивает счетчик, но я заметил, что его можно поддерживать согласованность, но это достигается ценой высокой задержки, например, я запускаю тест Jmeter с 1000 req / sec в течение 5 секунд, и все запросы полностью выполняются примерно за 26 секунд, что действительно огромная задержка.
Это вызвало у меня много вопросов -
Там должны быть некоторые сценарии или приложения в реальном времени, где этот уровень
высокий параллелизм обрабатывается с низкой задержкой, не так ли?
Всегда ли это ограничение в реляционной базе данных и может быть
каким-то образом решил нереляционную базу данных nosql?
- Я думал, что стоит ставить в очередь такие параллельные запросы с каким-то сообщением
очереди, но опять же, это будет поведение не в реальном времени, если пользователь
в ожидании ответа
Заранее спасибо,
любая помощь приветствуется.