Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Asp.net SQL Azure 180并发连接_Asp.net_Database Connection_Azure Sql Database_Sql Azure Federations - Fatal编程技术网

Asp.net SQL Azure 180并发连接

Asp.net SQL Azure 180并发连接,asp.net,database-connection,azure-sql-database,sql-azure-federations,Asp.net,Database Connection,Azure Sql Database,Sql Azure Federations,SQL Azure(Web和业务)最多允许180个并发连接,如下所示: 我试图理解并发连接的含义 假设有一个aspx page Test.aspx,它使用SqlConnection对象从TestTable中选择Top 1*。SqlReader返回后,连接关闭。(我相信ASP.NET仍将使用连接池)。假设此页面同时被500个用户访问 这是指500个并发连接还是1个连接,因为我将使用池连接 另外,我也在研究SQL联合来扩展数据库层,但是如果每个数据库最多允许180个并发连接,并且我在应用层上为每个

SQL Azure(Web和业务)最多允许180个并发连接,如下所示:

我试图理解并发连接的含义

假设有一个aspx page Test.aspx,它使用SqlConnection对象从TestTable
中选择Top 1*。SqlReader返回后,连接关闭。(我相信ASP.NET仍将使用连接池)。假设此页面同时被500个用户访问

这是指500个并发连接还是1个连接,因为我将使用池连接


另外,我也在研究SQL联合来扩展数据库层,但是如果每个数据库最多允许180个并发连接,并且我在应用层上为每个并发用户查询每个数据库和扇出结果,那么我看不出我是如何扩展的。

并发连接是从数据库服务器的角度来看的。在.NET中,当返回数据表时,连接在逻辑上关闭,这意味着该连接在连接池中标记为可用,但实际的数据库连接未关闭;它保持开放一段时间。从池中重用连接时,.NET会向可用连接发出sp_reset_connetion命令,以便可以重用该连接


当池中没有足够的可用连接来满足需求时,将创建到数据库的新连接。因此,要达到180个并发连接,您需要同时向数据库发出180个请求,因为池需要创建那么多连接。

关于您的联合体注意事项,现在不推荐使用它。你需要使用新的弹性缩放工具来创建碎片,有很多关于它的帖子

假设此页面同时被500个用户访问。 这是指500个并发连接还是1个连接,因为我将使用池连接

这取决于你的页面在做什么。假设第一个请求命中页面,页面正在执行一个长时间运行的查询(假设为20秒),在这个20秒中,如果另外100个请求命中,而这100个请求中的每一个都在执行长时间运行的查询,那么您确实使用了101(包括第一个)与数据库的实际连接,并且不重新使用连接池中的任何内容


实际上,一个网页不太可能像上面那样做

另一件需要考虑的事情是,一个被500次并发点击的页面实际上对应的实际并发用户要多出很多倍。用户没有连续地访问服务器,大部分时间他们什么也没做。一个连接可以同时为多个人服务,还是每个请求数据库资源的并发用户都可以转换为一个连接?嘿,马克,你有这个问题的答案吗