Быстрее ли несколько параллельных запросов одного последовательного?
Есть ли в распараллеливании запросов рациональное зерно?
Есть, если треды не дерутся за одно и те же ресурсы. Например, ходят в физически разные кластеры БД.Получается, что один последовательный запрос, что несколько параллельных, имеют сопоставимую продолжительность.
Или вы неверно описали наблюдаемый результат или же параллельное выполнение медленнее в 2 раза и дальше ухудшается при конкурентной нагрузке.На каком-то этапе параллельные запросы также выстраиваются в очередь.
Запросто. Но на вашу наблюдаемую картину не похоже, у вас время выполнения работы выросло в несколько раз.
Значит процессы дрались за ресурсы и очень сильно мешали друг другу.Если в то же время подать аналогичные запросы с другого клиента, то время ожидания ещё больше растягивается.
Что подтверждает диагноз. Ресурсов для параллельного выполнения нет.
Поскольку вопрос затрагивает субд и вы не называете, что там происходит - самое очевидно - вы упёрлись в диски. Возможно даже в механические диски. Добавление новых io задач на диски ожидаемо и очень сильно замедляет весь остальной io.
В распараллеливании смысл, конечно, есть. Просто это должно делаться на всех уровнях. Апач не использовал уже несколько лет, поэтому тут ничего сказать не могу, но судя по описанным симптомам, затыком у тебя является БД.
Конкретно с firebird не работал, но наверняка её можно распараллелить через репликации.
Т.е. сейчас у тебя получается 3 php-скрипта делают запросы к бд. Бд обрабатывает запросы синхронно, поэтому никакого выйгрыша в скорости не получается. Можно либо в настройках бд поискать асинхронную обработку запросов, но врядли там такое есть, либо реплицировать бд по типу мастер-слейв и запрашивать с разных слев-серверов бд данные, тогда прирост в скорости будет.