首页 / 知识
关于pdo:持久性数据库连接-是还是不是?
2023-04-14 14:24:00

Persistent DB Connections - Yea or Nay?我正在使用PHP的PDO层在项目中进行数据访问,并且我一直在阅读它,并发现它对持久性数据库连接具有良好的先天支持。 我想知道何时/是否应该使用它们。 我会在拥有大量CRUD的应用程序中看到性能优势吗? 是否有需要考虑的缺点,也许与安全有关? 如果对您来说很重要,我正在使用MySQL5.x。 您可以将其用作粗略的"规则集": 是的,如果存在以下情况,请使用持久连接:
不,如果出现以下情况,请不要使用持久连接:
使用持久连接的速度相当快,尤其是在通过网络访问数据库时。如果数据库在同一台计算机上运行,??并没有太大的区别,但是它仍然要快一些。但是-顾名思义-连接是持久的,即即使不使用它也保持打开状态。 问题在于,在"默认配置"中,MySQL仅允许1000个并行的"开放通道"。之后,将拒绝新的连接(您可以调整此设置)。因此,如果您有20个Web服务器,每个服务器上有100个客户端,并且每个服务器每小时只有一次页面访问,那么简单的数学就会告诉您,您将需要2000个并行连接到数据库。那行不通。 Ergo:仅将其用于具有大量请求的应用程序。 简而言之,根据我的经验,应该尽可能避免持久连接。 请注意,对于使用mysql_pconnect创建的连接,mysql_close是空操作(no-op)。这意味着客户端无法随意关闭持久连接。当持续时间超过wait_timeout的连接上未发生任何活动时,该连接将被mysqldb服务器关闭。如果wait_timeout是一个很大的值(例如30分钟),则mysql数据库服务器可以轻松达到max_connections限制。在这种情况下,mysql db将不接受任何将来的连接请求。这是您的传呼机开始发出哔哔声的时候。 为了避免达到max_connections限制,使用持久连接需要仔细平衡以下变量... 因此,请在充分考虑后使用持久连接。您可能不想邀请复杂的运行时问题来获得持久连接带来的小收益。 创建与数据库的连接是一项相当昂贵的操作。持久连接是一个好主意。在ASP.Net和Java世界中,我们有"连接池",这几乎是同一件事,也是一个好主意。 IMO,这个问题的真正答案是最适合您的应用程序。我建议您使用持久连接和非持久连接对应用程序进行基准测试。 玛吉·尼尔森(Maggie Nelson)在8月发布了有关此内容的客观报道,罗伯特·斯沃索特(Robert Swarthout)随行写了一些硬数字。两者都是不错的读物。 通常,您有时需要使用非持久连接,并且将单个模式应用于数据库连接设计是很好的(只要在上下文中使用持久连接的可能性很小)。 我将要问同样的问题,而不是再问同样的问题,我只会添加一些我发现的信息。
还值得注意的是,较新的mysqli扩展甚至不包括使用持久数据库连接的选项。 我目前仍在使用永久连接,但计划在不久的将来切换为非永久连接。 在我的愚见: 当使用PHP进行Web开发时,您的大多数连接将在页面执行的整个过程中"保持有效"。持久连接将花费大量的开销,因为您必须将其放入会话或类似的东西。 在页面执行结束时终止的单个非持久连接在99%的时间内正常工作。 另外1%的时间,您可能不应该在应用程序中使用PHP,并且没有完美的解决方案。 |
最新内容
相关内容
linux发现新网卡命令?
linux发现新网卡命令?,系统,信息,网络,电脑,工具,服务,状态,命令,网卡,名称,在linux下如何通过命令查网卡配置1、linux查看系统网卡信息的命令linux命令创建项目组?
linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文件夹,linux命令中用root用户新建一个user1用户,新建一个group1的组linux命令发现不了?
linux命令发现不了?,软件,系统,发行,工具,名称,不了,命令,地方,代理,信息,linux命令中的makewhatis命令,使用的时候提示未发现命令,怎搞好?_百复制项目的linux命令?
复制项目的linux命令?,系统,项目,文件,命令,目录,源文件,语法,选项,目标,功能,在Linux操作系统中复制文件或目录时使用的命令是()。1、在Linuxlinux命令项目部署?
linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎么把php部署到apache服务器上linux?1、在linux部署php项目的方法:linux部署项目的命令?
linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,Linux部署springBoot项目并且查看控制台日志指定路径:如下: /data/wlinux项目常用命令?
linux项目常用命令?,工作,地址,系统,信息,管理,项目,命令,目录,标准,网络,linux常用的20个命令系统管理相关命令:df、top、free、quota、at、lplinux项目更新命令?
linux项目更新命令?,系统,信息,网络,地址,网站,通信,管理,时间,项目,命令,linux必学的60条命令是什么?压缩和解压缩:tar:打包或解包文件。gzip:压启动项目命令linux?
启动项目命令linux?,工作,经理,产品,技术,地址,数字,系统,项目,命令,信息,怎么在linux启动的时候执行一个命令?1、在启动时执行 Linux 脚本 有linux编译项目的命令?
linux编译项目的命令?,系统,工作,地址,软件,工具,信息,代码,项目,命令,环境,linux能否用命令行编译keil1、.编译软件用sdcc 2.sdcc不支持keil51c项目linux常用命令?
项目linux常用命令?,工作,地址,系统,管理,设备,信息,项目,命令,目录,标准,linux常用命令有哪些linux常用命令如下:查看内核版本:uname-a。控制台linux上部署项目命令?
linux上部署项目命令?,项目,软件,服务,工具,环境,代理,地址,代码,首页,做好,linux上利用pm2和nginx部署项目(3)linux上锁 flock (4) kill -- -$pgi