28.16. Механизм создания устойчивых соединений с базами данных
Устойчивые соединения с базами данных являются одними из самых труднообъяснимых возможностей PHP. Многие разработчики просто не понимают смысла устойчивых соединений, неправильно настраивают их, постоянно испытывают затруднения при решении проблем с устойчивыми соединениями и, как следствие, игнорируют этот тип соединений как таковой. Но вследствие того, что в большинстве ситуаций использование устойчивых соединений дает существенный выигрыш в производительности, очень важно понимать, каким образом их можно правильно установить.
Что в первую очередь необходимо знать об устойчивых соединениях, так это то, чем они не являются. Устойчивые соединения совсем не то, что возможность организации связного пула, которая имеется в драйверах ODBC, JDBC и драйверах определенных баз данных. Организация связного пула или процесс передачи пула соединений потокам серверов не совсем подходит для PHP, так как типичная среда PHP не является многопотоковой. В Web-сервере Apache 1.x (а также в версии 2.0, когда используется предварительное MPM-ветвление) параллельность достигается при наличии нескольких процессов. Поскольку подключения к базам данных нельзя разделить между различными процессами, не представляется никакой возможности для использования связных пулов, т.е. соединение, открытое одним процессом, нельзя использовать другим процессом.
В противовес соединениям, осуществляемым с помощью связного пула, устойчивые соединения не закрываются после завершения обработки запросов, как это имеет место с обычными соединениями. Будущие запросы, которые обрабатываются аналогичным процессом, могут впоследствии использовать открытое соединение, что позволяет избежать накладных расходов, связанных с установкой соединения при обработке каждого запроса в отдельности. Фундаментальное различие между соединениями с помощью пула и устойчивыми соединениями можно объяснить следующим образом: устойчивые соединения держат одно открытое соединение для каждого экземпляра Web-сервера, в то время как при соединениях, осуществляемых с помощью пула, относительно небольшое количество открытых соединений разделяется между всеми экземплярами сервера.
Теперь, вооружившись этими знаниями, вы сможете принимать более взвешенные решения о целесообразности использования устойчивых соединений, а если такое решение уже принято, то вы знаете, каким образом их устанавливать. По этому вопросу существует несколько решений.
При использовании устойчивых соединений на протяжении достаточно длительного времени каждый работающий процесс Web-сервера Apache должен иметь одно открытое соединение. Это значит, что сервер вашей базы данных должен иметь возможность обрабатывать по меньшей мере столько же активных соединений, сколько задано директивой MaxClients сервера Apache. А еще лучше иметь на несколько дополнительных свободных соединений больше, чем установлено в MaxClients, что оставит возможность подключаться к серверу базы данных для решения административных задач.
Использование устойчивых соединений имеет смысл только тогда, когда сервер базы данных эффективно обрабатывает большое количество открытых соединений. Определенные серверы баз данных существенно снижают свои характеристики при работе с большим количеством открытых соединений, даже если они в большинстве своем находятся в режиме ожидания. Другие серверы могут иметь лицензионные ограничения на число одновременных соединений, которые можно сделать к ним в определенный момент времени. Для таких серверов устойчивые соединения не рекомендуются. Примером такого сервера, который достаточно эффективно обрабатывает большое количество одновременных соединений, является сервер СУБД MySQL, поэтому при работе с этой СУБД можно смело рекомендовать использование устойчивых соединений.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Эффективность и отладка. Часть Четырнадцатая.
19-07-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Эффективность и отладка. Часть Триннадцатая. | PHP. Эффективность и отладка. Часть Пятнадцатая. |