2013-10-23 85 views
0

我知道基本的SQL/RDBMS,而不是经验丰富的DBA知道的那种详细信息。如何获取SQL变量,列等消耗的内存?

我需要知道一个变量(如int,bigint,日期时间)消耗了多少内存。我还需要知道多少内存是由一个VARCHAR消耗(50)列在两种情况下 -

1] The Column is filled with strings of size 50 
2] Column has all Null 

这背后的目的是为了使对ETL /数据传输的估计。

我也想知道如何将SQL服务器结果存储到磁盘上的缓存中,然后通过块(由于内存相关问题执行此操作)从缓存中检索数据。但是,我会提出另一个问题。

+1

您是否检查数据类型的[technet](http://technet.microsoft.com/en-us/library/ms187752.aspx)文档? – AgentSQL

回答

2

除了documentation linked in the comment,请注意varchar存储取决于实际输入的数据。

http://technet.microsoft.com/en-us/library/ms176089(v=sql.100).aspx来自:

存储大小为输入+ 2个字节的数据的实际长度。

+0

如何将数据长度转换为字节?例如。如果我只有包含10位数字代码的varchar(50),那么一个这样的行消耗的内存是多少?一旦我明白了,我可以添加2Bytes并获得完整的内存。 – Steam

+1

如果你有一个包含'1234567890'值的varchar(50),那么我相信会消耗10 + 2 = 12个字节。如果它是一个字符(50),那么无论内容如何,​​它都会消耗50个字节。 –