首页 > 代码库 > 曲演杂坛--页拆分2
曲演杂坛--页拆分2
在上次的曲演杂坛--页拆分中基于SQL SERVER 2008版本进行了测试,在SQL Server 2012和SQL Server 2014版本中,对页拆分进行了优化,避免了一次插入导致多次页拆分的情况。
让我们在SQL Server 2014版本中来测试下:
--=========================================--使用TestDB数据库来测试USE TestDBGODROP TABLE TB01GO--=======================================--创建测试表TB01CREATE 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 TWHERE T.RID<422AND 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版本中,当第一次页拆分后,还是无法插入新的数据行,那么会创建一个新页来存放该记录,以避免多次页拆分。(尚不知道按照什么算法进行第一次页拆分)
--============================================
曲演杂坛--页拆分2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。