gpt4 book ai didi

database - 整个应用程序只有一个数据库连接?

转载 作者:行者123 更新时间:2023-12-03 09:23:17 25 4
gpt4 key购买 nike

使用解释语言(如 PHP)编程并使用数据库(如 MySQL)的 Web 应用程序将实例化数据库对象并在每次处理请求时建立新连接。

使用编译二进制文件(如 Go)的语言编程的 Web 应用程序通常会建立一个数据库连接,该连接将在整个过程中运行,并将在该应用程序将处理的所有 HTTP 请求中使用。

如果这是事实,那么可以安全地假设从性能角度来看,编译的程序将始终是最佳选择吗?

最佳答案

If that's a fact,

事实并非如此。

is it safe to assume that performance wise, the compiled program will be always the best choice?

不,这并不是一种语言是否编译的真正特征,而是与您使用或自己创建的数据库 API 相关,而与语言无关。

单一应用程序广泛连接

使用单个数据库连接的应用程序将无法利用数据库服务器上可用的并行性,并且对应用程序和数据库服务器之间的网络延迟很敏感,因为所有请求都通过同一连接进行序列化。这种方法的天真使用也会在启动时设置数据库连接,并且如果该连接中断则必须重新启动。

每个 HTTP 请求的连接

另一方面,为每个 http 请求设置 1 个连接可能效率很低,因为与数据库的初始握手需要时间,并且数据库可能会因过多的并行连接而不堪重负。

连接池

您通常想要的是 connection pool它维护最多可用于分发给任何线程的最大连接数,并在线程使用完连接后重新使用。 database/sql Go 中的包会执行此类连接池,假设驱动程序正确实现了它,其他数据库 API 可能不会 - 并且您始终可以自己实现连接池。 PHP 有different variants连接池的概念,有时称为“持久连接”(尽管考虑到 PHP 使用的进程模型,您自己实现这样的连接池会很困难)

关于database - 整个应用程序只有一个数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com