ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

PHP. Эффективность и отладка. Часть Четырнадцатая.


19-07-2015

28.16. Механизм создания устойчивых соединений с базами данных
Устойчивые соединения с базами данных являются одними из самых труднообъяснимых возможностей PHP. Многие разработчики просто не понимают смысла устойчивых соединений, неправильно настраивают их, постоянно испытывают затруднения при решении проблем с устойчивыми соединениями и, как следствие, игнорируют этот тип соединений как таковой. Но вследствие того, что в большинстве ситуаций использование устойчивых соединений дает существенный выигрыш в производительности, очень важно понимать, каким образом их можно правильно установить.
Что в первую очередь необходимо знать об устойчивых соединениях, так это то, чем они не являются. Устойчивые соединения совсем не то, что возможность организации связного пула, которая имеется в драйверах ODBC, JDBC и драйверах определенных баз данных. Организация связного пула или процесс передачи пула соединений потокам серверов не совсем подходит для PHP, так как типичная среда PHP не является многопотоковой. В Web-сервере Apache 1.x (а также в версии 2.0, когда используется предварительное MPM-ветвление) параллельность достигается при наличии нескольких процессов. Поскольку подключения к базам данных нельзя разделить между различными процессами, не представляется никакой возможности для использования связных пулов, т.е. соединение, открытое одним процессом, нельзя использовать другим процессом.
В противовес соединениям, осуществляемым с помощью связного пула, устойчивые соединения не закрываются после завершения обработки запросов, как это имеет место с обычными соединениями. Будущие запросы, которые обрабатываются аналогичным процессом, могут впоследствии использовать открытое соединение, что позволяет избежать накладных расходов, связанных с установкой соединения при обработке каждого запроса в отдельности. Фундаментальное различие между соединениями с помощью пула и устойчивыми соединениями можно объяснить следующим образом: устойчивые соединения держат одно открытое соединение для каждого экземпляра Web-сервера, в то время как при соединениях, осуществляемых с помощью пула, относительно небольшое количество открытых соединений разделяется между всеми экземплярами сервера. 
Теперь, вооружившись этими знаниями, вы сможете принимать более взвешенные решения о целесообразности использования устойчивых соединений, а если такое решение уже принято, то вы знаете, каким образом их устанавливать. По этому вопросу существует несколько решений.
При использовании устойчивых соединений на протяжении достаточно длительного времени каждый работающий процесс Web-сервера Apache должен иметь одно открытое соединение. Это значит, что сервер вашей базы данных должен иметь возможность обра­батывать по меньшей мере столько же активных соединений, сколько задано директивой MaxClients сервера Apache. А еще лучше иметь на несколько дополнительных свободных соединений больше, чем установлено в MaxClients, что оставит возможность подключаться к серверу базы данных для решения административных задач.
Использование устойчивых соединений имеет смысл только тогда, когда сервер базы данных эффективно обрабатывает большое количество открытых соединений. Определенные серверы баз данных существенно снижают свои характеристики при работе с большим количеством открытых соединений, даже если они в большинстве своем находятся в режиме ожидания. Другие серверы могут иметь лицензионные ограничения на число одновременных соединений, которые можно сделать к ним в определенный момент времени. Для таких серверов устойчивые соединения не рекомендуются. Примером такого сервера, который достаточно эффективно обрабатывает большое количество одновременных соединений, является сервер СУБД MySQL, поэтому при работе с этой СУБД можно смело рекомендовать использование устойчивых соединений.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Эффективность и отладка. Часть Триннадцатая. PHP. Эффективность и отладка. Часть Пятнадцатая.