如果mssql服务器上的数据页中有可用空间,会发生什么



假设我们有一个数据库,其中有一个带列的表。此列存储1000字节的字符数据。按照惯例,我们知道每个数据页存储8KB的数据,这些数据分为3部分(头、数据和偏移量(。同时,我想存储10条记录。让我们计算一下。

首先8 KB=8*1014字节=8192字节

则页首部分得到96 bytes,并且每条记录将1000 bytes数据存储在数据部分中,将2 bytes存储在偏移部分中。如果我们计算

96字节+10*(1000+2(字节=10116字节

但是每个页面只能存储8192 bytes。在这种情况下,我们需要2 pages

第一页只能存储分配给8000 bytes8 records

如果我们计算第一页数据,我们可以看到8112 bytes (96 bytes + 8 * (1000 bytes + 2 bytes) = 8112 bytes)

很明显,我们可以看到,在第一页中,我们有80 bytes (8192 bytes - 8112 bytes = 80 bytes)的自由空间。

现在!我的问题是80字节是什么?此可用空间保持为可用空间,否则SQL Server将在之后使用它。

谢谢!

我的问题是80字节是多少。此可用空间将保留为可用空间,否则sql server将在之后使用它。

在某种操作导致它被回收或使用之前,它将在数据页中保留为空白。

一个例子是,如果该数据页中的一个现有行增长大于1000字节,比如1080字节。它将使用数据页中剩余的80字节可用空间来适应行的增长。

相关内容

最新更新