zoukankan      html  css  js  c++  java
  • 公司内部培训SQL Server传统索引结构PPT分享

    公司内部培训SQL Server传统索引结构PPT分享


    B树索引的由来
    1970年,由波音公司的Rudolf.Bayer和Ed.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。
    B的含义尚无定论,一般认为是Boeing,Bayer,balanced

    下载地址

    http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E7%B4%A2%E5%BC%95%E7%BB%93%E6%9E%84.ppt

     

    SQL优化 讲课

    下载地址

    http://files.cnblogs.com/files/lyhabc/SQL%E4%BC%98%E5%8C%96%E8%AE%B2%E8%AF%BE.rar

    PPT有不对的地方,多多拍砖o(∩_∩)o 

    索引结构

    f

    f

    一页只能存储8060字节实际用户数据

    表只有一列,并且数据类型为int的话,可以存储2015个值

    f

    f

    f

    f

    f

    页拆分

    一个页装不下所有条目,页拆分过程:为索引分配两个额外的页
    现有的rootpage 下降成一个叶级页。SQL Server获取索引页一半数据,把这一半数据移动到一个新分配的页面。另一个新页则放在索引结构的顶部,成为新的rootpage,整个过程的最后一步是获取每个叶级页的第一个条目,并将那些条目写入新创建的rootpage中

    f

    rootpage的2015行对应于中间级页面的2015个页,每个中间级页面也有2015个条目,它们对应于叶级的2015个页,最后加一个用于触发新层级的数据行(2015 3次方+1)
    在成长到超过80亿多行后,才需要扫描三个索引页

    rootpage已经到了存储极限,他不能容纳2016个条目,因为那会使他超过最大允许的8060字节,因此,SQL Server会再次经历一次“页拆分”过程,以前的rootpage变成一个中间级页,同时创建一个新的中间级页。以前的rootpage分一半条目给新建的中间级页。同时,两个中间级页的第一个条目都写入新的rootpage

    所以SQL Server是B*树

    f

     

    f

    空间索引

     空间数据用一个二维坐标系统定义,索引用B树构建,而B树是一个线性结构

    f

    由于几何平面是无限的,所以不能为所有可能的二维空间都一定一个B树

    f

    交换分区的原理

    假设一个表只有一个字段int类型 4字节,那么

    一个页面实际数据8060字节除以4字节 得出一个页面可以存储2015行数据
    8060/4=2015

    扇出值就是2015
    一个父节点可以有2015个孩子


    二级
    2015*2015=4060225 行
    2016个页面


    三级
    2015*2015*2015=8181353375 行
    4060226个页面

    f

    SQL Server2008数据库技术内幕P165

    BOOT PAGE里面的dbi_firstSysIndexes项指向sys.sysallocunits数据字典表

    f

  • 相关阅读:
    phpdocumentor生成代码注释文档(linux)
    phpstorm扩展
    es教程
    康威定律
    k8s
    tidb调研
    netty 在线教程
    McQueenRPC源码阅读
    DIY一些基于netty的开源框架
    性能测试
  • 原文地址:https://www.cnblogs.com/lyhabc/p/4737882.html
Copyright © 2011-2022 走看看