Запросы, которые выполняются за 50-600 миллисекунд, довольно длинные.Время, затрачиваемое на создание или уничтожение потока, намного меньше этого, поэтому не стоит учитывать этот фактор в своем решении.Я бы выбрал тот, который проще всего поддерживать и который менее подвержен ошибкам.Вы хотите минимизировать вероятность незначительных ошибок параллелизма.
Вот почему часто проще написать однопоточный код обработки транзакций, который блокирует, где это необходимо, и многие из которых работают параллельно, чемиметь более сложную неблокирующую модель.Заблокированный поток может замедлить отдельную транзакцию, но это не мешает серверу выполнять другую работу, пока он ожидает.
Если нагрузка вашей транзакции увеличивается (т. Е. Больше клиентских транзакций) или запросы становятся быстрее обрабатыватьсяприближается к 1 миллисекунде на транзакцию), тогда издержки транзакции становятся более важным фактором.Метрика, на которую следует обратить внимание, - это пропускная способность: сколько транзакций выполняется за единицу времени.Абсолютная продолжительность одной транзакции менее важна, чем скорость, с которой они завершаются, по крайней мере, если она остается значительно ниже одной секунды.