Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server DB';是长寿命连接还是按需连接?_Sql Server_Asp.net Mvc_Database - Fatal编程技术网

Sql server DB';是长寿命连接还是按需连接?

Sql server DB';是长寿命连接还是按需连接?,sql-server,asp.net-mvc,database,Sql Server,Asp.net Mvc,Database,我被指派实现一个应用程序(用C++语言)来评估未决提交(提交是针对给定问题的编程算法)。网站(在ASP.NET MVC中)发布问题并允许用户提交答案,然后在数据库(SQL Server 2008R2)上将提交的内容标记为“待评估”,这就是我的工作开始的时间: 我的应用程序将有3个(或更多)实例作为服务运行。 每个实例必须每隔2秒检查数据库中是否存在任何未决提交。 如果它存在,我检索并编译它,在成功编译之后我执行它,最后在执行之后检查答案的正确性。然后我更新提交设置结果,并将其从挂起表中删除。 我

我被指派实现一个应用程序(用C++语言)来评估未决提交(提交是针对给定问题的编程算法)。网站(在ASP.NET MVC中)发布问题并允许用户提交答案,然后在数据库(SQL Server 2008R2)上将提交的内容标记为“待评估”,这就是我的工作开始的时间:

我的应用程序将有3个(或更多)实例作为服务运行。 每个实例必须每隔2秒检查数据库中是否存在任何未决提交。 如果它存在,我检索并编译它,在成功编译之后我执行它,最后在执行之后检查答案的正确性。然后我更新提交设置结果,并将其从挂起表中删除。 我需要在DB中指定未决提交的当前状态(编译、运行、判断)

评估提交的时间为1-3秒,同一实例不会同时评估多个提交

我的问题是:如何连接到DB服务器? 我有3种可能的解决方案,我需要知道什么应该更好(以提高效率)以及为什么: 1-在实例化应用程序后建立到DB的连接,并且永远不要关闭它(当我删除实例或关闭服务器时关闭它,理论上永远不会发生这种情况。) 2-每2秒打开一个连接,以获取挂起的提交(如果存在),等待整个评估过程结束,设置评估结果,然后关闭连接。
3-与2相同,但在检索提交时关闭连接,当编译完成时,再次打开连接并更新挂起提交的状态,关闭连接,当执行完成时,再次打开连接并更新挂起提交的状态,关闭连接,最后,当评判结束时,打开它并设置评估结果。

您没有说明正在使用哪个数据库访问库(ODBC、ado.net、其他?)。打开和关闭数据库连接是一项相对昂贵的操作。您应该在db访问框架中使用某种连接池方案。连接池将打开一段时间,当应用程序打开连接时,它将从连接池中获得一个已打开的连接。这将使它更有效率。去读
对于SQL Server

您没有说明您使用的是什么数据库访问库(ODBC、ado.net、其他?)。打开和关闭数据库连接是一项相对昂贵的操作。您应该在db访问框架中使用某种连接池方案。连接池将打开一段时间,当应用程序打开连接时,它将从连接池中获得一个已打开的连接。这将使它更有效率。去读
对于SQL Server

,如果您可以从池中按需执行。使您的代码更加干净从技术上讲,出于性能原因,您的连接应该是长期存在的。也就是说,这是基础架构层的问题,应该通过连接池来处理。(如果我没有看错文档,ODBC似乎有一个内置的:)您的应用程序代码本身应该只在完成事务所需的时间内保持连接。(在您的情况下,提交的单状态转换。)根据池中的请求,如果您可以这样做的话。使您的代码更加干净从技术上讲,出于性能原因,您的连接应该是长期存在的。也就是说,这是基础架构层的问题,应该通过连接池来处理。(如果我没有看错文档,ODBC似乎有一个内置的:)您的应用程序代码本身应该只在完成事务所需的时间内保持连接。(在您的案例中,是提交的单状态转换。)