所以现在我有一个线程来处理数据库的所有请求。假设我每秒有400个请求用于登录/注销/其他内容,每秒400个请求只与项目相关(移动,更新,删除等)。
显然,问题是如果我想从数据库加载一个项目,但数据库当前正在处理一个登录请求,那么这将是一个延迟。我希望它是即时的,这就是为什么我想创建另一个线程,专门处理项目请求,另一个线程来处理登录/注销等。
微软说:
1:在单个连接句柄上有多个语句句柄,每个语句句柄都有一个线程。
2:拥有多个连接句柄,每个连接句柄都有一个语句句柄和单个线程。
两种方法的区别是什么?我显然需要同时在两个线程中获取数据和插入/更新。
这2个线程与1个方法会加速吗?
两个线程在不同的SQL表中都是独占的(即项目的线程只使用ITEMS_TABLE,它永远不会使用LOGIN_TABLE,反之亦然)
目前我正在使用以下功能(C ++):
SQLSetEnvAttr with SQL_OV_ODBC3
SQLConnect
SQLAllocHandle
SQLBindParameter
SQLExecDirect
答案 0 :(得分:0)
回答你的问题:
Q1:两种方法的区别是什么?
<强>答案:强>
我会避免使用第一种方法(在多个线程之间共享连接句柄),因为它有几个限制。例如,假设您的一个线程想要打开或关闭AUTO-COMMIT。由于AUTOCOMMIT是一个连接属性(并且所有线程共享相同的连接句柄),因此更改此设置将影响所有其他线程。
Q2:这2个线程与1个方法会加速吗?
<强>答案:强>
不认为你会发现任何差异。
在两种情况下,在多个线程之间共享相同的Environment句柄应该没问题。