数据库逻辑结构单元

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

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

  二、段,由区组成,好比数据段,索引段,和undo段;spa

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

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

 

一、表空间(tablespace)blog

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

  一、一个表空间能够有多数据文件,可是一个数据文件只能属于一个表空间;图片

  二、一个表空间就是一片磁盘区域,由一个或者多个磁盘文件组成,一个表空间能够容纳许多表、索引等。事务

 

二、段(segment)内存

  一个表就是一个段,段能够分红:数据段、索引段、回滚段

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

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

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

 

三、区(extent)

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

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

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

 

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

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

 

五、数据行的格式

行的几个关注要素:

  一、变长列字节列表

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

    2>按照列顺序逆序放置

  二、null列表

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

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

  三、行头标志

  四、列数据:实际咱们存放的数据

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

    对于未提交事务的删除,其余能够继续select,由于没有真正的删除,也就不用劳烦undo了。

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

    若是没有定义主键的话,每行还会增长个rowid列(6字节),做为隐藏主键;

 

6、行列接

  一、varchar能够很长,varchar(20):能够存放20个字符

    gbk:一个字符占2个字节,所以实际上占用40个字节

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

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

建议:

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

  二、不要出现一个表中存在多列、长列的状况,不然表的性能会很低下

相关文章
相关标签/搜索