本机环境: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的查询量大,却只能使用一个连接,这时效率就会低了