justSMTH Asked:2025-02-03 21:46:33 +0000 UTC2025-02-03 21:46:33 +0000 UTC 2025-02-03 21:46:33 +0000 UTC 服务器是否应该一直连接到数据库还是仅在查询期间连接? 772 我正在制作一个没有框架的小服务。现在我正在设置数据库的工作。我不明白什么才是更正确的:服务器与数据库的持续连接还是连接、执行请求然后断开连接? 计划的负载并不大,因此无论哪种选择都不会有问题。但我希望把每件事都做好。 sql 2 个回答 Voted Best Answer Roman C 2025-02-03T22:49:58Z2025-02-03T22:49:58Z 对于小型项目不需要开启连接池。使用 DB 客户端创建连接就足够了。如果您的应用程序是多用户,那么您需要为每个用户打开一个单独的连接。如果您的应用程序是多线程的,并且每个线程使用数据库连接,那么您将需要为每个线程打开一个连接。每个连接在使用后必须关闭。 这将使事情变得更容易,特别是当您不使用框架时。也不需要维护与连接池的服务集成,并避免数据库出现问题。 S.H. 2025-02-03T22:17:56Z2025-02-03T22:17:56Z 我认为连接数据库应该留给数据库驱动程序。在某些情况下(例如,从 C# 访问 MSSQL 的 SqlClient 驱动程序),驱动程序本身会管理连接池。这意味着程序员不必“思考”是否每次都打开与数据库的连接,或者保留一个始终打开的连接的静态实例 - 差别非常小。 如果每次都连接到数据库,那么至少需要花费时间来建立加密通道(在我看来,现代世界中不再存在“非网络”数据库,因此我是用这些术语来推理的)。与简单地向已经打开的连接发送请求相比,这要花费相当长的时间。 如果没有代码示例并且不了解基础的含义,就很难给出更具体的建议......
对于小型项目不需要开启连接池。使用 DB 客户端创建连接就足够了。如果您的应用程序是多用户,那么您需要为每个用户打开一个单独的连接。如果您的应用程序是多线程的,并且每个线程使用数据库连接,那么您将需要为每个线程打开一个连接。每个连接在使用后必须关闭。
这将使事情变得更容易,特别是当您不使用框架时。也不需要维护与连接池的服务集成,并避免数据库出现问题。
我认为连接数据库应该留给数据库驱动程序。在某些情况下(例如,从 C# 访问 MSSQL 的 SqlClient 驱动程序),驱动程序本身会管理连接池。这意味着程序员不必“思考”是否每次都打开与数据库的连接,或者保留一个始终打开的连接的静态实例 - 差别非常小。
如果每次都连接到数据库,那么至少需要花费时间来建立加密通道(在我看来,现代世界中不再存在“非网络”数据库,因此我是用这些术语来推理的)。与简单地向已经打开的连接发送请求相比,这要花费相当长的时间。
如果没有代码示例并且不了解基础的含义,就很难给出更具体的建议......