3

有没有办法找出我的数据库中的一行占用了多少空间(在磁盘上)?

我很想在 SQL Server CE 上看到它,但是 SQL Server 2008 无法正常工作(我在两者中都存储了大约相同的数据)。

我问的原因是我的 SQL Server CE db 中有一个 Image 列(它是 SQL 2008 db 中的一个 varbinary[max]),我现在需要知道我可以存储的许多行,然后才能最大限度地使用我的内存设备。

4

3 回答 3

1

对于每行,varbinary(max) 列本身可能包含多达 2GB 的数据。对于基于现有数据的估计使用,也许您可​​以使用 DATALENGTH 函数进行一些分析,以计算出典型图像占用的空间,并从那里推断。

于 2010-04-20T16:14:07.007 回答
1

也许不是你想要的 100%,但如果你想知道图像需要多大的尺寸就行

SELECT [RaportID]
                      ,DATALENGTH([RaportPlik]) AS 'FileSize'
                      ,[RaportOpis]
                      ,[RaportDataOd]
                      ,[RaportDataDo]
FROM [Database]

您需要自己进行的任何其他额外计数(如预测等)。

于 2010-04-20T16:17:26.957 回答
0

您只能做出粗略的猜测——“在我用尽设备上的内存之前我可以存储多少行”这个问题没有确切的答案,因为你没有独占使用你的设备——其他程序也占用资源,并且您只能知道当前有多少可用存储空间,而不是未来某个时间可用的存储空间。此外,您的图像可能会被压缩,因此会占用可变数量的 RAM。

出于猜测的目的,图像的大小是行大小的一个很好的近似值;行结构的开销可以忽略不计。

于 2010-04-20T16:09:42.610 回答