Low*_*n M 5 sql-server disk-space sql-server-2012 blob unicode
我在 SQL Server 2012 Enterprise Edition 中有一个表,其中包含约 100GB 的数据。这些数据的大部分归因于NVARCHAR(MAX)
平均长度为 4500 个字符的单个列。它存储由不需要 Unicode 字符的应用程序压缩的数据。
由于NVARCHAR
每个字符占用两个字节并VARCHAR
占用一个字节,我推测我可以通过切换表来减少一些存储空间。但是,一旦我将列更改为VARCHAR(MAX)
,表格就会膨胀到 155GB。
我知道 SQL 可能会使用Unicode 压缩,但文档指出这不适用于NVARCHAR(MAX)
它,因此它不可能被使用。
那么为什么我的桌子变大了这么多?
桌子:
CREATE TABLE [dbo].[Table](
[RecordLocator] [char](6) NOT NULL,
[CreateDate] [date] NOT NULL,
[SystemId] [varchar](40) NOT NULL,
[EventXML] [nvarchar](max) NULL, --Not XML, compressed XML as characters
[UpdateUTCTimeStamp] [datetime2](7) NOT NULL,
[DeleteDate] [date] NULL,
CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED
(
[RecordLocator] ASC,
[CreateDate] ASC,
[SystemId] ASC,
[DeleteDate] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
补充说明:
哦,我确实运行了sp_spaceused
,但未能添加输出:
name rows reserved data index_size unused
Table 11407899 160531008 KB 159465328 KB 525200 KB 540480 KB
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
2108 次 |
最近记录: |