SQL Server中的内存使用情况?

时间:2011-05-03 21:56:22

标签: sql-server row

我最近一直在考虑数据库设计,我有以下问题:

如果为列设置了类型,例如varchar(max),则每次插入行时都会留出2GB的空间?

或者服务器上分配的空间是否等于列中的数据量?

谢谢!

2 个答案:

答案 0 :(得分:4)

SQL Server和其他地方的varchar数据类型意味着大致可变长度的字符数据。 max或任何其他常量值表示其上限而不是其绝对大小。所以你的后一种观察是正确的:

  

服务器上分配的空间   等于数据量   柱

现在,如果你定义类似char(200)的东西(注意那里char前面缺少var)那么是的,无论你在那个字段中存储多少数据(最多200个字符),都会分配200个字符。顺便说一下,char数据类型的maximum upper bound是8000。

答案 1 :(得分:2)

当然不是:)

Varchar(max) bastardised 混合数据类型(如果你不介意我有点坦率)

  • 如果总行长度不超过 8KB限制,它将与行中的其余列一起存储
  • 否则存储为blob。 blob(TEXT,IMAGE)的长度与其长度相同。