假设我们有一个数据库,其中有一个带列的表。此列存储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 bytes
的8 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字节可用空间来适应行的增长。