SQL Server中的内存使用情况?

问题描述:

我一直在思考数据库设计最近,我有以下问题:SQL Server中的内存使用情况?

当一个类型,比如说一个varchar(最大值),被设定为列2GB的空间预留的每一个行插入的时间?

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

谢谢!

+0

将这些庞大的数据存储在数据库中确实是个坏主意。为此使用文件系统。 – Andrey 2011-05-03 21:58:06

+0

好吧,让我们说一个varchar(200)...问题不会改变。 – badpanda 2011-05-03 21:59:32

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

服务器 等于数据量在 列上分配现在

,如果定义类似char(200)的空间(注意缺乏变种在char的前面),那么是的,无论您在该字段中存储了多少数据(最多200个字符),都会分配200个字符。顺便说一下,char数据类型的maximum upper bound是8000。

当然不是:)

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

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

也许混合比混蛋更好? ;) – 2011-05-03 22:05:05

+2

说实话,我不喜欢'varchar(max)'。懒惰的数据库设计人员无法弄清楚他们需要多少存储空间。 – Aliostad 2011-05-03 22:08:52

+0

+1为混蛋,你得到我:D – 2011-05-03 22:10:08