找出一行在数据库中占用了多少存储空间

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 方法并取了一个平均值。 (它们几乎相同。)

以上是关于找出一行在数据库中占用了多少存储空间的主要内容,如果未能解决你的问题,请参考以下文章

redis存储session需要多少空间

mysql占用多大的存储空间?

PHP数组到底占用多少内存空间

基础算法(javascipt)总结

找出每个字段在 Google Big Query 中占用的空间量

如何释放手机内存 清理释放安卓手机内存空间方法