美文网首页
数据库存储结构

数据库存储结构

作者: 江君l | 来源:发表于2018-08-05 16:46 被阅读0次

    当我们的数据库的数据达到一定量级(百万,千万)的时候,一般会首先考虑对数据库进行性能调优,那我们拿到一个数据应该如何对其进行优化呢?
    是分表、分库、怎么分,用什么策略吗?分表分库又能提高多大的性能呢?

    要回答上面的问题,首先我们得解决一个问题:数据库的物理存储结构

    我们平常在设计数据库的时候,一般只需要建库、建表、数据的增删改查等等这些,其实这个是数据库的逻辑结构
    而要对数据库优化必须了解它的物理结构,因为所有的数据操作都是针对物理结构的。

    数据文件

    数据库文件是指数据库中用来存放数据库和数控对象的文件,一个数据库可以有一个或多个数据库文件,一个数据库文件只能属于一个数据库
    当多个数据库文件时,有一个文件被定为主数据文件,用来存储数据库的启动信息和部分或全部数据,数据文件则划分为不同的区域
    是sql server存储数据的基本单位。

    1-1

    2014版中,页的大小是8kb,每个页可分为页头、数据行和行偏移矩阵。
    页头 存储有关页的系统信息,所属文件号,页面编号等
    数据行 就是存数据的了,一个所有列都是固定长度的表,在每个页上存储的行数总是相同的
    行偏移矩阵 是2字节组成的块,每个2字节表示相应的数据行开始的偏移。每条记录对应一个2字节项。
    8个连续的页组成的数据结构称为 盘区,2014版中有两种类型的盘区,如图所示:

    1-2

    统一区:由单个对象(表,或索引等)所有,区中的8页只能由所属对象使用
    混合区:最多有8个对象共享,每个页可以由不同对象所有

    数据行的结构
    先是所有的固定长度的列,然后是所有变长列,对于每一个定长或变长数据,都是按照建表是的列顺序来存储的

    1-3

    定长记录的存储


    1-

    变长记录的存储


    1-5

    注意,数据行存储在页中,但数据页只能包含除text、ntext和image数据外的数据,这些数据存储在单独的页中
    数据行不能跨页存储,而每页最大时8kb,所以每行数据最大时8kb

    日志文件:

    sqlserver的日志文件是由一系列的日志记录组成,而不是页。日志文件记录了存储数据库的更新情况等事务日志信息,用户对数据库进行的插入、删除、更新等操作都会记录在日志文件中。
    当数据库损坏时,可以根据日志文件分析出错的原因,或者数据丢失时,还可以使用事务日志恢复数据库。每个数据库至少拥有一个日志文件。

    总结:把数据库比作一个书架,每本书就相当于一个盘区,书中的页就是数据库的数据页,也有页码页面注释这些信息,每行字就是数据行。一个表的数据可能会占用几页,甚至几本书
    欸,会不会数据库的作者就是参考书架的这种思想来设计的!


    Positive people are lucky people, they can see the roses while others see only the thorns

    相关文章

      网友评论

          本文标题:数据库存储结构

          本文链接:https://www.haomeiwen.com/subject/vzcbvftx.html