【问题标题】:Single vs multiple database connection performance in a single workflow单个工作流中的单个与多个数据库连接性能
【发布时间】:2018-10-23 02:18:10
【问题描述】:

需要对此有所了解的软件架构。以下哪项在资源(cpu、内存、数据库)方面效率更高?

  1. 在一个流中有一个数据库连接? (只有在所有事情都完成后才关闭连接,包括业务逻辑)

  2. 在一个流中有多个数据库连接? (查询执行后立即打开然后关闭数据库连接)

根据业务逻辑,这是从查询返回的数据根据​​业务规则进行清理或操作的地方。

这里附上视觉表示的图表。

更新:

编程语言:PHP(Laravel for web app,Lumen for API)

数据库:MySQL

主机:AWS

【问题讨论】:

  • 它在什么上运行?什么语言?还是这纯粹是理论上的?前任。在 PHP 中,我会打开一次,关闭一次。但这意味着在脚本完成之前建立连接。在 Java 中,WebSphere 将通过连接池来处理这个问题。在更理论的层面上,如果您的处理(业务逻辑)不是太长,您的数据库应该能够保持该连接打开以完成流程。但是高负载可能会堵塞您的数据库。你看?有很多潜在的问题取决于你的风格和数据库容量。
  • Nic3500,更新了我的帖子并添加了使用的编程语言。它将使用 PHP(用于 Web 应用程序的 Laravel,用于 API 的 Lumen),而要使用的数据库是 MySQL。全部都在 AWS 中
  • 在这种情况下,我会保持连接并在最后关闭它。当然,除非您的处理时间很长(超过几秒钟)。

标签: performance database-design architecture database-connection software-design


【解决方案1】:

在运行时和数据库之间打开新连接需要操作系统创建新套接字(如果运行时和数据库在同一系统上,则此套接字可能是 linux 套接字,否则此套接字是 tcp/udp 套接字) 这个套接字创建本身就有开销。 所以我不建议在每次使用数据库后打开和关闭连接。 但是你想要这样做有特定的条件。 例如,您的数据库的并发连接数量有限,并且您有数千个长时间运行的进程使用此连接,也许在这种情况下您可以使用第二种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2012-02-21
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多