gpt4 book ai didi

mysql - 处理 mysql 数据库连接

转载 作者:行者123 更新时间:2023-11-29 04:20:11 25 4
gpt4 key购买 nike

我正在开发一个高性能的实时应用程序,以 node.js 和 mysql 作为后端。

为了提高性能,我有一个单独的 node.js 进程更新底层 mysql bd。更新请求排队以保证顺序执行(必须)。

我正在考虑在此过程中保持永久打开的数据库连接,以免在每次请求时浪费时间打开它。

其他数据库请求(更新或读取)直接从网络服务器 node-js 实例提供,可能是并行的。这些数据库连接当然是在每个请求中创建/释放的。

您是否看到这种方法的一些缺点?

更新:

重要的附加信息。我之所以选择这个独立的流程解决方案,主要是因为以下原因......

每次更新前必须执行的逻辑相对复杂,取决于数据库中的数据结构。每次更新之前都需要几个额外的查询。这个独立进程在内存中具有完整的数据结构,可以非常快速地执行这些检查,并且无需数据库访问(性能提升)。

最佳答案

您的方法的另一个缺点。

MySQL 因根据超时关闭长时间打开的连接而臭名昭著。

Lost connection to MySQL server during query

@duffymo 是正确的:使用池中的短期连接比长期打开的连接更有可能持续工作数百小时。

node.js + mysql connection pooling

我就纳闷了:你说顺序执行是必须的。大型 DBMS(包括大型服务器上的 MySQL)非常擅长处理来自多个连接的并发查询而不会损坏数据。如果您能够准确地计算出关于更新顺序的强制性要求,您的系统可能会更加健壮。如果您可以在 SQL 本身或可能在某些事务中实现该排序,那么与您坚持只有一个进程执行更新相比,您将拥有一个更能抵抗故障的系统。像您提到的那样的单一用途进程在系统测试中不容易调试:它们因各种原因在数百小时后失败而臭名昭著。当它们在生产中出现故障时,每个人都争先恐后地修复它们,因此没有人有时间对其进行故障排除。

关于mysql - 处理 mysql 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26586479/

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