首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用内存优化更快的SQL临时表和表变量

使用内存优化更快的SQL临时表和表变量
EN

Stack Overflow用户
提问于 2018-06-14 04:39:10
回答 1查看 635关注 0票数 1

这个微软医生中的场景C描述了如何用内存优化表替换连接范围内的临时表。该方案使用筛选器安全策略,该策略调用一个函数来确定@@spid是否与内存优化表中的SpidFilter列匹配。

这是否适用于.NET连接池?我希望@@spid会返回一个连接被一次又一次重复使用时的相同编号。.NET通过调用sp_reset_connection清除会话作用域的临时表,但这不会清除内存优化表,也不会更改@@spid。也许可以添加sys.dm_exec_ session_id以使其在连接池环境中工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 18:44:02

在Microsoft的帮助下,我能够获得有关ASP.NET连接池的必要细节,以解决这一问题。确实,ASP.NET线程将共享相同的SPID,但永远不会同时共享。只有在连接不再被前一个线程使用之后,线程才会被分配连接。连接池并不会减少所需连接的数量,它只会减少需要打开和关闭连接的次数。

这是关于连接池的很好的文档,尽管它没有区分这一点。https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling

请注意,场景C有特别的注意事项:“将代码中的CREATE #tempSessionC语句替换为dbo.soSessionC中的DELETE,以确保会话不会暴露于使用相同session_id插入的前一个会话插入的表内容”- in。

因为一次只使用一个线程,这就足够了。如果表在使用后也未被删除,它将继续消耗内存(在Azure中尤为珍贵),直到另一个线程碰巧使用同一个SPID的连接为止。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50849713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档