如果我将nvarchar(30)更改为nvarchar(256),何时分配磁盘空间?

时间:2013-11-13 08:17:31

标签: sql-server tsql storage

我们有一个包含数十万行的大表,比如20列。其中一列是nvarchar(30)类型。如果我将其更改为nvarchar(256),因为有些行需要在那里存储更多数据,但不是全部,那么:

  • 这会立即改变数据库的磁盘分配吗?
  • 是磁盘分配,取决于单元格中的值是否超过30?
  • 是单独分配的单元格,即一个超过30的简单行会影响其他行的磁盘分配大小吗?

我试图谷歌这个,但只找到nvarchar(n)nvarchar(MAX)的比较。请注意,就我所知,我的方案不包括行外存储。

1 个答案:

答案 0 :(得分:2)

这应该只是元数据更改 - 行只消耗实际需要的可变长度数据的存储空间。因此,nvarchar(256)列中没有行实际包含超过30个字符,这将占用与nvarchar(30)列完全相同的磁盘空间。