我们能否使用单个数据库连接,在多个线程中同时执行多个数据库查询语句?

3
我希望能够使用单个数据库连接从多个线程中同时读取(或仅执行选择语句)MS SQL Server。是否可能从不同的线程同时执行所有这些选择语句?
我正在Linux环境下使用C++中的MS SQL Server。我需要分别为读取和写入创建数据库连接池。因此,我想知道是否有可能在线程之间共享同一连接仅用于读取。
所选语句可能返回多行(超过一个行或结果集)。这会有问题吗?
4个回答

4

是的,会有问题。一次只能执行一个命令。 但如果使用多个连接,连接池对于SQL服务器的工作非常好。


确实。随时创建新的连接都是可以的。让 .Net 为您管理可用的连接。连接池是一个很好的东西。 - user47589
我在Linux环境下使用C++连接MS SQL Server。我需要创建读写分离的数据库连接池。因此,我想知道是否有可能在线程之间共享同一个只读连接。 - Arul Kumar

4
不要在不同的线程中使用相同的连接。每个连接只能执行一个命令。为每个线程创建一个连接。我建议您制作一个辅助类,以使这个过程更加容易。

0

如果你担心SQL Server中的多进程问题,必须考虑两个选项。

  1. 并行设置
  2. AlwaysOn设置

第一个选项通过使用多个CPU逻辑核心执行单个查询来帮助你;而第二个选项在有并发连接时帮助你实现负载平衡。


0
我想在MS SQL Server中使用单个数据库连接从多个线程读取(或仅执行选择语句)。
你应该开始阅读文档,而不是有一些有趣的想法,因为你想要的并不重要。
是的,你可以这样做(MARS是主题-请查阅),但一个连接始终只能有一个事务上下文,所以将多个选择放在一个事务中是一个好方法(插入、几个更新等),但作为编程数据库连接的通用方法则不好。
遵循配方,意味着需要时打开连接,完成后关闭连接,并且不要害怕运行多个连接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接