Как долго готовятся запросы на сервере? - PullRequest
1 голос
/ 17 июля 2009

Мне было просто интересно, как работают подготовленные запросы.Я использую PHP и MySQL.

Я знаю, что подготовленные запросы компилируют запрос, а затем повторное использование требует только изменения параметров, что экономит время.Но как долго действует этот скомпилированный запрос?В какой момент он должен быть переоценен?Это так же долго, как работает скрипт PHP?Или это пока соединение с базой данных присутствует?В таком случае, будет ли постоянное соединение иметь какое-либо влияние на это?

Ответы [ 3 ]

4 голосов
/ 21 июля 2009

рёгуй, они длятся на всю длину соединения. Согласно инструкции MySQL:

Подготовленное заявление относится к сеансу, в котором оно было создано. Если вы прервете сеанс, не освободив предварительно подготовленный оператор, сервер автоматически освободит его.

Если вы не используете постоянные соединения, то это будет освобождено, когда ваш скрипт завершит выполнение (или вы явно освободите его, или закроете соединение). При использовании постоянных подключений оно будет сохраняться в течение нескольких сеансов PHP с использованием одного и того же постоянного подключения.

0 голосов
/ 23 июля 2009

hobodave прав, они просто длятся столько времени, сколько они создали в сеансе.

Есть еще одна вещь, которую следует учитывать:

7.5.5. MySQL Query Cache

Примечание

Кеш запросов не используется для готовые заявления. Если вы используете подготовленные заявления, считают, что эти заявления не будут удовлетворены по кешу запросов.

0 голосов
/ 17 июля 2009

Насколько я знаю, подготовленный запрос будет "длиться" только до тех пор, пока переменная, в которой он хранится, находится в области видимости. Я предполагаю, что могут быть некоторые способы кэширования подготовленных запросов для последующего использования, но я не знаю, делает ли это MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...