曲演杂坛--页拆分2
在上次的曲演杂坛--页拆分中基于SQL SERVER 2008版本进行了测试,在SQL Server 2012和SQL Server 2014版本中,对页拆分进行了优化,避免了一次插入导致多次页拆分的情况。
让我们在SQL Server 2014版本中来测试下:
--========================================= --使用TestDB数据库来测试 USE TestDB GO DROP TABLE TB01 GO --======================================= --创建测试表TB01 CREATE TABLE TB01 ( ID INT PRIMARY KEY, C1 NVARCHAR(MAX) ) GO --======================================= --插入420条数据,所有数据存放在一个8KB的数据页中 INSERT INTO TB01(ID,C1) SELECT T.RID,N'C' FROM ( SELECT ROW_NUMBER()OVER(ORDER BY object_id) AS RID FROM sys.all_columns ) AS T WHERE T.RID<422 AND T.RID<>418 --==================================== --==================================== --插入一行数据 INSERT INTO TB01(ID,C1) SELECT 418,REPLICATE(N'1',4000) --==================================== --查看数据页 DBCC IND('TestDB','TB01',1)
--=================================== --查看非叶子节点来查看数据和页的对应情况 DBCC PAGE('TestDB',1,8104,3)
可以发现,本次也拆分只创建了两个新页面,在ID=418的记录插入时,发现页8012上无法存放新记录,便对页8012进行拆分,将数据418之前的数据留在页8012上,把418之后的数据放到新的页面8105上,然后另外申请一个页面存放要插入的ID=418记录。
在SQL Server 2012和SQL Server 2014版本中,当第一次页拆分后,还是无法插入新的数据行,那么会创建一个新页来存放该记录,以避免多次页拆分。(尚不知道按照什么算法进行第一次页拆分)
--============================================
分类:
SQL Server--曲演杂坛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现