本机环境:Apache+PHP+MySQL

先了解一下背景知识,Apache采用父进程调度多个子进程模式处理请求, 每当客户端向父进程提出请求时,该请求会被传递给还没有被其它的客户端请求占用的子进程。相同的客户端第二次向服务端提出请求时,它将有可能被一个不同的子进程来处理。

在使用了MySQL持久连接后,子进程会持有一个数据库持久连接,持久连接在脚本运行结束后不会关闭,可以通过mysqladmin -uroot -ppass processlist命令查看.如果在查询时Apache分配了持有这个持久连接的子进程来处理请求,则不需要重新建立新连接,否则新的子进程重新建立持久连接来处理数据库查询.

下面说说持久连接适用和不适用情况

1.适用

如果Web Server需要查询的db只有一个,并且并发量很大,那么可以使用持久连接,这样可以减少关闭和建立连接的次数,提高效率

2.不适用

如果Web Server需要查询的db有两个,假设有db1和db2,db1查询量小,db2查询量大,使用持久连接,最大连接数为10.

此时用户先查询了db1,并且在Web Server的9个子进程都与db1建立了持久连接,那么此时只剩下1个可用连接,此时用户又去查询db2,因为db2的查询量大,却只能使用一个连接,这时效率就会低了

posted on 2012-05-10 01:52  ZimZz  阅读(844)  评论(0编辑  收藏  举报