Eva*_*n M 8 t-sql sql-server stored-procedures tempdb
我们正在尝试优化一些T-SQL存储过程以减少tempdb争用,但我无法弄清楚SQL服务器如何存储非表变量:
Mic*_*son 11
tempdb的容量规划文章回答了您的问题:
大对象数据类型是varchar(max),nvarchar(max),varbinary(max)text,ntext,image和xml.这些类型的大小最多可达2 GB,可用作存储过程,用户定义函数,批处理或查询中的变量或参数.如果值很小,则定义为LOB数据类型的参数和变量将使用主存储器作为存储.但是,大值存储在tempdb中.当LOB变量和参数存储在tempdb中时,它们将被视为内部对象.您可以查询sys.dm_db_session_space_usage动态管理视图,以报告为给定会话分配给内部对象的页面.
这篇文章完全值得一读,因为它还涵盖了tempdb的许多其他用途.
编辑:如果您好奇特定会话使用的tempdb中有多少内存,您可以运行以下查询:
select *
from sys.dm_db_session_space_usage
where session_id = @@SPID
Run Code Online (Sandbox Code Playgroud)
使用它,看起来我的VARCHAR(MAX)
变量不是存储在tempdb中,直到它达到大约1000 KB的大小...但我确定根据服务器可用的内存而有所不同.
归档时间: |
|
查看次数: |
1575 次 |
最近记录: |