Я узнал о подготовленных заявлениях при создании Java-приложения с поддержкой JDBC, и мое приложение использует уровень пула соединений, который гарантирует, что подготовленные операторы кэшируются на стороне сервера, и это дает преимущество в производительности.Готовые заявления кэшируются на стороне сервера на нескольких загрузках страниц с помощью PHP?
Однако, с PHP все, что я прочитал, говорит, что они кэшируются только на время загрузки страницы. Обычно я не повторяю один и тот же запрос много раз, но запускаю несколько разных запросов при заданной загрузке страницы, но повторяю их при загрузке нескольких страниц.
Как мои PHP-процессы являются постоянными (т. Е. Они будут обслуживать сотни страниц за свою жизнь, а не только одну, используя PHP-FPM), мне было интересно, будут ли они повторно использовать подключения к базам данных, а не порождать и убивать их для каждого удара.
- Будет ли использование PHP-FPM с mysqli или PDO поддерживать соединения дольше, чем загрузка одной страницы?
- Если это не так, могу ли я это сделать?
- Если это так, или я делаю # 2, будет ли продолжаться кеширование подготовленных операторов дольше, чем загрузка одной страницы?
Edit:
Просто чтобы прояснить, я не говорю о кэше запросов, который еще зверь полностью или кэширование вывода запросов. Я хочу кэшировать скомпилированный подготовленный оператор и его план выполнения на стороне сервера.
Если бы я использовал postgresql, готовил бы оператор, который уже был подготовлен, автоматически доступ к ранее подготовленному заявлению или мне нужно было бы сделать магию, чтобы определить, было ли уже подготовлено утверждение? Я бы хотел отказаться от MySQL для этого. – ZoFreX
Идентификатор утверждения, который вы передаете pq_prepare(), должен быть уникальным для каждого отдельного соединения. То есть если второй (или N-й) экземпляр скрипта пытается подготовить оператор снова с тем же именем, произойдет конкретная ошибка. Ваш скрипт может обработать этот код ошибки и предположить, что (правый) оператор уже подготовлен и готов к использованию. Это все еще немного накладные расходы, и вы, возможно, захотите сравнить чистый эффект, который вы можете ожидать, прежде чем вкладывать слишком много средств. – VolkerK