Сколько параллельных запросов может обработать база данных до того, как они начнут накапливаться в очереди, если на сервере поступает 10 запросов, каждый из которых выполняет 10 параллельных операций в БД одновременно?
Максимальное количество одновременных запросов, которые может обрабатывать база данных, определяется ее мощностью, скоростью процессора, объемом доступной оперативной памяти и другими аппаратными и программными характеристиками. Если на сервере поступает 10 запросов, каждый из которых выполняет 10 параллельных операций в базе данных одновременно, то общее количество параллельных операций будет равно 10 (количество запросов) * 10 (параллельных операций в каждом запросе) = 100. Таким образом, база данных должна быть способна обрабатывать хотя бы 100 параллельных операций одновременно без начала накапливания запросов в очереди. Если база данных не может обработать все 100 операций одновременно, запросы будут начинаться накапливаться в очереди, что может привести к задержкам в обработке.
это в общем случае определяется параметромmax_connections
.
в случае, если количество подключений к серверу достигло данного максимума, то в новых подключениях будет отказано, пока не освободится одно из занятых подключений.
если подключение установлено, то по нему может быть передан на выполнение запрос. он начнёт выполняться и, в зависимости от настроек таймаутов, от того, какие блокировки и на какие объекты имеются в СУБД и какой уровень изоляции используется, запрос либо выполнится; либо выполнится частично и встанет в ожидание освобождения какой-то из блокировок, и после освобождения продолжит выполняться; либо подождёт освобождения блокировки и прервётся по таймауту (результат такого частичного выполнения откатится); либо выполнится частично и прервётся по нарушению сериализации (результат такого частичного выполнения откатится).
вроде ничего не забыл.