SQL Server:大于它的页数

时间:2015-08-04 18:30:15

标签: sql sql-server sql-server-2012-express

我在SQL Server 2012 Express中有一个数据库,有一个特定的表我很难理解。

所述表具有CI和以下属性:

CREATE TABLE [dbo].[Hourly_Flows]
(
    [S_ID] [smallint] NOT NULL,
    [FromID] [tinyint] NOT NULL,
    [ToID] [tinyint] NOT NULL,
    [Hour8760] [smallint] NOT NULL,
    [FromTo] [smallint] NULL,
    [ToFrom] [smallint] NULL,

    CONSTRAINT [PK__oHF_Hour__60BEC9D565570293] 
       PRIMARY KEY CLUSTERED ([S_ID] ASC, [FromID] ASC, [ToID] ASC, [Hour8760] ASC)
       WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
             IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
             ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

我创建了一个新的空DB,使用完全相同的表并将所有记录插入其中,新旧表的大小如下:

+--------------+--------------+--------------+
|    Table     |     Old      |     New      |
+--------------+--------------+--------------+
| RowCounts    | 109,911,720  | 109,911,720  |
| TotalPages   | 436,323      | 259,137      |
| UsedPages    | 436,270      | 259,098      |
| DataPages    | 434,434      | 258,009      |
| TotalSpaceMB | 3,408        | 2,024        |
| UsedSpaceMB  | 3,408        | 2,024        |
| DataSpaceMB  | 3,394        | 2,015        |
+--------------+--------------+--------------+

正如您所看到的,新表格中的页面和大小要小得多。在将数据插入原始表之前,我尝试截断表,删除并重新创建,清除并始终获得相同的结果。

不确定我在这里缺少什么,如果我将数据重新插入原始表中,我会得到相同的结果。唯一的另一个问题可能是数据库的增长超过了SQL Server Express数据库的10GB大小限制,但不确定为什么这会产生影响。

该表曾经有更多列被删除(因此我们将其截断),我们经常这样做,但这是第一次不减小它的大小。

1 个答案:

答案 0 :(得分:0)

页数和数据量取决于许多变量:

1-插入,更新和删除计数:导致某些页面变为空位置。

2- own database fill factor:此参数表示页面可以填充多少。 (对于将来使用的页面中的保留位置)

3-数据库整理:在某些整理中,相同的数据使用更多或更少的空间。

在Marc结束时,新数据库意味着干净的表面以干净的方式写入数据。