标签: accelerated-database-recovery

更新 Azure SQL Server 中的行导致意外的页面拆分

我在使用 Azure SQL Server PAAS 的实时环境中遇到了很多我不理解的页面拆分。正在发生的更新不应增加行的大小,因此永远不会导致页面拆分。此外,该行为仅发生在 Azure 中,不会发生在本地 SQL 实例上。

我使用的是使用 eDTU 定价和标准层 (200 eDTU) 的 Azure 弹性池。

我创建了以下示例来演示:

create table dbo.TestSplit
(
    TestSplitId int not null identity,
    MyInt int not null,
    
    constraint PK_C_dbo_TestSplit_TestSplitId primary key clustered (TestSplitId)
);
Run Code Online (Sandbox Code Playgroud)

插入 100,000 行且 MyInt = 5:

insert into dbo.TestSplit
(MyInt)
select top(100000) 5
from sys.columns AS a 
cross join sys.columns AS b 
cross join sys.columns AS c
Run Code Online (Sandbox Code Playgroud)

运行以下 SQL 显示已创建 384 个页面,并且有 2 个碎片。

select
    ix.name as index_name,
    st.index_type_desc,
    st.fragment_count,
    st.page_count …
Run Code Online (Sandbox Code Playgroud)

azure-sql-database page-splits accelerated-database-recovery

7
推荐指数
1
解决办法
245
查看次数