加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server-2008 – 为什么表的数据空间占用原始数据大小的4倍?

发布时间:2020-12-31 08:43:35 所属栏目:编程 来源:网络整理
导读:我有一个包括490 M行和55 GB表空间的表,因此每行约莫167个字节.该表有三列:VARCHAR(100),DATETIME2(0)和SMALLINT. VARCHAR字段中文本的均匀长度约为21.5,因此原始数据应为每行约32个字节:对付VARCHAR为22 2,对付DATETIME2为6,对付16位整数为2. 请留意,上面

我有一个包括490 M行和55 GB表空间的表,因此每行约莫167个字节.该表有三列:VARCHAR(100),DATETIME2(0)和SMALLINT. VARCHAR字段中文本的均匀长度约为21.5,因此原始数据应为每行约32个字节:对付VARCHAR为22 2,对付DATETIME2为6,对付16位整数为2.

请留意,上面的空格只是数据,而不是索引.我正在行使Properties |下陈诉的值存储|一样平常|数据空间.

虽然必需有一些开销,但每行135个字节好像许多,出格是对付大型表.为什么会这样?尚有其他人看过相同的乘数吗?哪些身分会影响所需的特殊空间量?

为了较量,我实行建设一个包括两个INT字段和1M行的表.所需的数据空间为16.4 MB:每行17个字节,而原始数据为8个字节.另一个带有INT和VARCHAR(100)的测试表添补了与真实表沟通的文本,每行行使39个字节(44 K行),我但愿28加一点.

因此出产表有更多的开销.这是由于它更大吗?我但愿索引巨细大抵为N * log(N),但我不大白为什么现实数据所需的空间长短线性的.

提前感激任何指针!

编辑:

列出的全部字段都不是NULL.真实表在VARCHAR字段和DATETIME2字段上按次序具有聚簇PK.对付这两个测试,第一个INT是(聚积的)PK.

假如重要:该表是ping功效的记录.字段是URL,ping日期/时刻和耽误(以毫秒为单元).数据会不绝附加,而且永久不会更新,但会按期删除数据,以便将每个URL的每小时数目镌汰到几个记录.

编辑:

一个很是风趣的谜底here表白,对付具有大量阅读和写作的索引,重建也许没有益处.在我的环境下,耗损的空间是一个题目,但假如写入机能更重要,那么行使败坏的索引也许会更好.

办理要领

在对原始题目的评述中举办接头之后,在这种环境下看来,丢失的空间是由聚集密钥的选择引起的,这导致了大量的碎片化.

在这些环境下,始终值得通过sys.dm_db_index_physical_stats搜查碎片状态.

编辑:在评述中更新

均匀页面密度(在重建聚积索引之前)为24%,这与原始题目完全相符.页面只有1/4满,因此总巨细是原始数据巨细的4倍.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读