关于“持久的数据库连接”

转载 2004年08月23日 11:38:00
   image010.gif

  关于数据库连接的分配,多进程模型(如Apache)还存在一个问题。这个问题与我以前讲过的PHP脚本的不持久特性是相伴相生的。请先看看下图。

  你所见的这幅图从一个由数据库驱动的动态web应用的角度说明了Apache/PHP解决方案是怎样工作并处理访问请求的。你可能注意到了,正如上文提到的一样,每一个Apache子进程一次处理一个单独的客户端连接。由于PHP脚本是单独由处理访问PHP生成文档的请求的每一个子进程来解释的,每一个进程均必须建立其独立的查询数据库的连接。

  由于PHP脚本没有持久性,数据库连接在每次脚本运行时都必须打开和关闭。尤其对于那些被频繁访问的站点来说,在连接上浪费的时间可能会导致巨大的性能损失

  为了避免这种情况,PHP开发商也许会采用持久的数据库连接方式,使访问请求处理完毕和PHP脚本执行结束之后仍保持打开状态。

  但是,在PHP环境中采用持久的连接方式和传统意义上的连接方式并不相同。在PHP环境中,当一个持久的连接被子进程打开后,不需要再耗费额外的连接时间,就能够重用该连接。但是要指出的是,只有通过同一个子进程才能重用它。由于该连接是由特定的进程打开的,因此,即使打开它的子进程处于空闲状态,不用处理任何的请求,此连接也保持着对其的附着状态。事实上,即便是该子进程又继续处理另一个非PHP请求,该数据库连接也不会关闭。

  在持久的数据库连接的情况下,我们观察到的实际上还是与前面所讲相同的子进程与HTTP keepalive 请求的11映射比率。但是,在当前情况下,数据库连接将会一直维持打开状态,并贯穿在打开它的子进程的整个生命期中。

  这种情形会导致打开的数据库连接过剩,从而使得占用的内存空间大小超过实际负载的需要。在某些环境里,这种数据库连接过剩在高负载情况下会使数据库达到连接数量的极限。这时,服务器将不再对更多的请求作出响应。用户可以把这种情况看作是应用服务器或HTTP服务器对数据库执行了一次拒绝服务攻击,从而使自己当机。

C# 连接Mysq数据库及持久化方法操作

网上C#连接Mysql的例子很多,上传就是方便以后自己用。 1.数据库连接 // 数据库连接 protected MySqlConnection conn() ...
  • gaoleijie
  • gaoleijie
  • 2013年11月27日 16:06
  • 945

数据持久层DAO的建立和使用,实现数据库的连接

//DAO接口 package ex3; import java.sql.Connection; public interface DAO { public Connection getConnec...
  • sanganqi_wusuierzi
  • sanganqi_wusuierzi
  • 2017年02月03日 22:59
  • 1266

Python SqlAlchemy数据库持久化使用方法

SqlAlchemy版本:1.1.11 操作系统:Windows Python:3.5数据持久化是常用的开发技术。具体有点请参考百度百科:请点击Python的数据库ORM框架是数据持久层框架。这...
  • HuangZhang_123
  • HuangZhang_123
  • 2017年06月29日 17:31
  • 627

【Java.Web】Session —— Session的持久化(容器实现此功能)

Session的持久化
  • robinjwong
  • robinjwong
  • 2014年10月07日 04:17
  • 3276

http的持久连接和非持久连接区别

HTTP 协议概要 非持久连接 “非持久连接”的概念 某网页由最基本的 HTML 和10个JPEG 图像构成,10个JPEG 图像文件存放在同一台服务器中。设这个网页的URL为www.s...
  • u011446963
  • u011446963
  • 2015年06月06日 20:30
  • 3108

ActiveMQ的消息持久化到Mysql数据库

1、将连接Mysql数据库的jar文件,放到ActiveMQ的lib目录下        2、修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式        2.1...
  • zbw18297786698
  • zbw18297786698
  • 2016年11月01日 20:50
  • 1878

PDO数据连接持久化性能测试

PDO数据连接持久化可以有效地提升连接数据库的效率。前面文章中做过测试,连接1000次数据库需要使用100秒,一次连接需要0.1秒。如果在项目中,凡是需要连接数据库的地方都需要创建一次连接无疑会对系统...
  • wongcony
  • wongcony
  • 2017年04月22日 23:37
  • 502

数据持久化,好高端~哎,数据库啊!!

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件...
  • X_codeWKH
  • X_codeWKH
  • 2016年04月06日 20:20
  • 1839

HTTP非持久连接和持久连接

HTTP非持久连接和持久连接 HTTP既可以使用非持久连接(nonpersistent connection),也可以使用持久连接(persistent connection)。HTTP/1.0...
  • liqing19850102
  • liqing19850102
  • 2013年09月26日 10:49
  • 3593

HTTP协议:pipeline、持久连接、非持久连接

一、HTTP持久连接、非持久连接 1.1 定义       非持久连接:每个连接处理一个请求-响应事务。       持久连接:每个连接可以处理多个请求-响应事务。             持久连接...
  • kanguolaikanguolaik
  • kanguolaikanguolaik
  • 2013年09月05日 10:40
  • 3092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于“持久的数据库连接”
举报原因:
原因补充:

(最多只允许输入30个字)