zoukankan      html  css  js  c++  java
  • 数据库逻辑结构单元

    0:数据库逻辑结构包括表空间,段,区,数据块

      1、数据库在逻辑上是由多个表间组成的,表空间中存储的对象是段;

      2、段,由区组成,比如数据段,索引段,和undo段;

      3、区,是磁盘分配的最小单位,是物理上连续的块,一个extent的大小是1M,由64个页组成;

      4、块(页),在MySQL中块就是页,是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位,一个page的大小是16K(默认,一般也不会更改),innodb_page_size,其值应设置为操作系统块大小的整数倍。

     

    1、表空间(tablespace)

      表空间是数据库最大的逻辑结构,一个数据库在逻辑上由多个表空间组成,一个表空间只隶属于一个数据库。

      1、一个表空间可以有多数据文件,但是一个数据文件只能属于一个表空间;

      2、一个表空间就是一片磁盘区域,由一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引等。

     

    2、段(segment)

      一个表就是一个段,段可以分成:数据段、索引段、回滚段

      1、数据段用来存储用户的数据,每个表都有一个对应的回滚段,其名称和数据表的名字相同;

      2、索引段用来存储系统、用户的索引信息;

      3、回滚段用来存储用户数据修改前的值,回退段与事务是一对多的关系,一个事务只能使用一个回退段,而一个回退段可存放一个或多个事务的回退数据。

     

    3、区(extent)

      区是磁盘空间分配的最小单位;

      1、磁盘按区划分,每次至少分配一个区;

      2、区存储于段中,它由连续的数据块组成。

     

    4、块(data block)、页(page)

      数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O 的最小单位。

     

    5、数据行的格式

    行的几个关注要素:

      1、变长列字节列表

        1>记录了各个变长列的长度情况,方便找到变长边界;

        2>按照列顺序逆序放置

      2、null列表

        1>记录null的列的标志信息,因为null的列在行记录里不记录列值,方便找的时候知道哪列是空的

        2>空列不占空间,可变长+null位,定位后面的列数据

      3、行头标志

      4、列数据:实际我们存放的数据

      5、删除标记(deleted_flag):删除时对该行进行标记“deleted”,待purge

        对于未提交事务的删除,其他可以继续select,因为没有真正的删除,也就不用劳烦undo了。

      6、xid(6字节)、rollpointer(7字节)

        如果没有定义主键的话,每行还会增加个rowid列(6字节),作为隐藏主键;

     

    6、行列接

      1、varchar可以很长,varchar(20):可以存放20个字符

        gbk:一个字符占2个字节,因此实际上占用40个字节

        utf8:一个字符大约占3个字节,因此实际上占用60个字节

      2、blob列,主要用来存放图片、文件

    建议:

      1、对于大列,单独独立出去,采用垂直拆分表的方式来实现

      2、不要出现一个表中存在多列、长列的情况,否则表的性能会很低下

  • 相关阅读:
    thinkPHP入门之二
    thinkPHP入门
    斐波那契数列,冒泡排序,选择排序,数组去重
    jquery-懒加载插件
    本地存储之cookie
    javascript的快速排序法
    [luogu2165 AHOI2009] 飞行棋 (枚举)
    [luogu2576 SCOI2010] 幸运数字 (容斥原理)
    [luogu2587 ZJOI2008] 泡泡堂 (贪心)
    [luogu2602 ZJOI2010] 数字计数 (数位dp)
  • 原文地址:https://www.cnblogs.com/geaozhang/p/8610978.html
Copyright © 2011-2022 走看看