如何估计 SQL 服务器 table 中插入的单行的理论大小

How to estimate theoretical size of a single row inserted in the SQL Server table

我正在找出估计 table 大小的最佳方法,为此,我经历了太多,无法确定理论上的 space 用于单个以字节为单位的行,因为数据跨页保存,每页至少 8KB,我们插入的 ROW 跨页存储。

帮我计算下table

所用的理论space
+-------------+--------------------+------+-----+---------+
| Field       | Type               | Null | Key | Default | 
+-------------+--------------------+------+-----+---------+
| Id          | int                | NO   | PRI |         |
| Idx         | [datetimeoffset](7)| NO   | PRI |         |
| Val1        | float              | YES  |     |         |
| Val2        | float              | YES  |     |         |
+-------------+--------------------+------+-----+---------+

你可以使用存储过程sp_estimate_data_compression_savings 这是一种偏离其使用方式的方式,但也许是获得磁盘上对象大小时结果的最简单方式

use TEST

EXEC sp_estimate_data_compression_savings 'dbo','client',NULL,NULL,'row'

结果 -->

object_name schema_name index_id    partition_number    size_with_current_compression_setting(KB)
client          dbo        0            1                             16 <-- Size of your table   

如你所问'calculate the theoretical space being used for below table' 就是这个