找出一行在数据库中占用了多少存储空间
Posted
技术标签:
【中文标题】找出一行在数据库中占用了多少存储空间【英文标题】:Find out how much storage a row is taking up in the database 【发布时间】:2010-04-20 15:58:44 【问题描述】:有没有办法找出我的数据库中的一行占用了多少空间(在磁盘上)?
我希望看到它用于 SQL Server CE,但 SQL Server 2008 无法正常工作(我在两者中存储的数据大致相同)。
我问的原因是我的 SQL Server CE db 中有一个 Image 列(它是 SQL 2008 db 中的一个 varbinary[max]),我现在需要知道我可以存储的行数,然后才能最大化我设备上的内存。
【问题讨论】:
【参考方案1】:也许不是你想要的 100%,但如果你想知道一张图片需要多大的尺寸就行了
SELECT [RaportID]
,DATALENGTH([RaportPlik]) AS 'FileSize'
,[RaportOpis]
,[RaportDataOd]
,[RaportDataDo]
FROM [Database]
您需要自己进行的任何其他额外计数(如预测等)。
【讨论】:
正是我想要的。感谢您的示例【参考方案2】:varbinary(max) 列本身可能包含多达 2GB 的每行数据。对于基于现有数据的估计使用量,也许您可以使用 DATALENGTH 函数进行一些分析,以计算出一张典型图像占用的空间,并据此推断。
【讨论】:
【参考方案3】:您只能做出粗略的猜测 - “我可以存储多少行才能使设备上的内存达到极限”这个问题没有确切的答案,因为您没有独占使用您的设备 - 其他程序也占用资源,您只能知道目前有多少可用存储空间,而不是将来的某个时间。此外,您的图像可能会被压缩,因此会占用不同数量的 RAM。
出于猜测目的,您的图像大小可以很好地近似于行大小;行结构的开销可以忽略不计。
【讨论】:
该设备归我公司所有,专用于我的应用程序使用。 @Vaccano,您的图片大小是否完全相同? 不,但我采用了 DATALENGTH 方法并取了一个平均值。 (它们几乎相同。)以上是关于找出一行在数据库中占用了多少存储空间的主要内容,如果未能解决你的问题,请参考以下文章