Постоянное соединение в MySQL и memcache?

Хочу попробовать использовать persistent connection в MySQL и memcache на своем сайте, но перед этим для верности хочу задать пару вопросов, ответа на которые не нашел в документации (хотя может быть, плохо искал):

1. Вызовы mysql_pconnect/memcache_pconnect открывают новые соединения каждый раз или используют незакрытые старые? Будет ли одно и тоже соединение использоваться параллельно при исполнении двух скриптов или оно может использоваться одновременно только одним скриптом, а для второго открывается новое соединение?

2. Получается ли за счет этого реальный прирост скорости приложения?

3. Какие у этого метода плюсы и минусы?
  • Вопрос задан
  • 5801 просмотр
Решения вопроса 1
maxout
@maxout
1. используют старые
2. да, прирост есть. ровно на то количество времени, которое тратится на mysql_connnect + mysql_select_db + «set names» (или что вы там ещё решите выполнять после каждого соединения)
3. плюс один — скорость.
минусы:
1. нет возможности принудительно закрыть соединение.
2. за счёт сохранения ненужных в данный момент соединений отжирается память mysql-сервера.
3. по звершении работы скрипта не снимается LOCK с таблиц и не уничтожаются TEMPORARY таблицы.
4. нужно отдельно следить за mysql server has gone away =)
5. апачевский mod_php криво работает с pconnect'ами. ну, то есть, само по себе это работает так как и должно, и с точки зрения апача не криво. просто ломается сама логика pconnect'ов: на новый запрос спавнится новый воркер, который о персистентном соединении соседа не знает, и открывает новое, слегка усиливая масштабы проблемы из пункта два.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы