Я столкнулся с проблемой с моими MySQL-запросами и надеялся, что кто-то может помочь вам.Совет по ограничению соединения с MySQL
Я разрабатываю систему на основе PHP, которая объединяет довольно много данных на разных вкладках на одной странице (tab1 = профиль, tab2 = адрес, tab3 = платежи и т. Д.), И в результате одна страница может иметь до 34/40 MySQL запросов, вытягивающих из разных таблиц или с разными критериями.
Загрузка страницы стала очень медленной, и я спросил у своего веб-хостинга, знали ли они, что не так, и они сообщили, что это из-за медленных запросов MySQL (более 2 секунд). Они также сказали, что моему пользователю MySQL разрешено только 15 подключений за раз.
Если на моей странице 40 запросов и разрешено только 15 подключений, значит ли это, что они эффективно стоят в очереди и ждут завершения? Если это так, тогда я могу понять, почему страница загружается, но я не уверен в решении. Является ли 15 MySQL запросов много или это довольно жесткое ограничение моего хоста (HostMonster)?
Кроме того, если бы 15 пользователей обращались к системе в одно и то же время, разделили бы 15 соединений между каждым из них или это 15 соединений для каждого пользователя, зарегистрированного на сайте? Я предполагаю, что они означают пользователя базы данных, но все люди, которые обращаются к системе, будут использовать одного и того же пользователя базы данных, поэтому представляется невозможным создать систему, в которой несколько пользователей могут получить доступ к одному из них?
Все соединение вещь немного смутила меня.
Заранее благодарим за любую помощь!
Если страница PHP содержит 40 запросов, эти запросы будут выполняться серийно, т. Е. Следующий запрос будет выдаваться только тогда, когда предыдущий возвращается. 15 соединений означает, что 15 запросов страницы с запросами могут (теоретически) выполняться одновременно. Как только запрос страницы обрабатывается PHP, он освобождает свое соединение, поэтому он становится бесплатным для следующего запроса страницы. Я думаю, 15 соединений достаточно для небольшого веб-приложения для нескольких пользователей, но явно недостаточно для среднего и большого приложений с сотнями тысяч пользователей. – Marcellus
Посмотрите, можете ли вы выполнить оптимизацию запросов с помощью 'JOIN',' GROUP BY' и подвыборов. 40 запросов на страницу интенсивны. Кроме того, посмотрите на интеграцию memcached для наборов результатов, которые не всегда будут уникальными или могут быть доступны пользователям; он позволит вам разгрузить некоторые запросы к базе данных. – msanford