数据库逻辑结构单元

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、不要出现一个表中存在多列、长列的情况,否则表的性能会很低下

posted @ 2018-03-20 17:47  GeaoZhang  阅读(4160)  评论(2编辑  收藏  举报