zoukankan      html  css  js  c++  java
  • 曲演杂坛--页拆分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版本中,当第一次页拆分后,还是无法插入新的数据行,那么会创建一个新页来存放该记录,以避免多次页拆分。(尚不知道按照什么算法进行第一次页拆分)

    --============================================

  • 相关阅读:
    杂记-2
    2019CSP-S游记
    csp2020
    特征根法小记
    csp模拟赛低级错误及反思
    备份
    黑科技——树剖两次dfs转一次dfs!
    输出天干地支
    蓝桥0531-输出Y
    蓝桥0615-判断四位数字前后两组是否相等
  • 原文地址:https://www.cnblogs.com/TeyGao/p/4074425.html
Copyright © 2011-2022 走看看