网站建设资讯

NEWS

网站建设资讯

MySQL的物理存储结构和session生命周期-创新互联

  1.  MySQL的物理存储结构

    专注于为中小企业提供网站建设、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业垣曲免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

     (1).数据的组织形式--索引

     (2).数据的row存储

compact

变长字段的存储:

可变长度列在评估字段大小时还要考虑存储列实际长度的字节数。例如,VARCHAR(255)CHARACTER SET UTF8列需要额外的两个字节来存储值长度信息,所以该列需要多达767个字节存储,其实大可以存储65533字节,剩余两个字节存储长度信息。

行溢出的处理:

数据表Row_format是Compact, innodb默认的approach存储格式会把每个blob字段的前864个字节存储在page里,所以blob超过一定数量的话,单行大小就会超过8k ,所以就报错了。通过对比业务写成功和失败的SQL也应征了这个推论,那么现在要怎么解决这个问题?

  • 业务拆分表,大字段进行分表存储
  • 通过解决Row_format的存储方式解决问题

    由于业务单表的存储条数并不大,而且业务逻辑不适合拆分,所以我们要在Row_format上来解决这个问题。

如果blob列值长度 <= 768 bytes,不会发生行溢出(page overflow),内容都在数据页(B-tree Node);如果列值长度 > 768字节,那么前768字节依然在数据页,而剩余的则放在溢出页(off-page)

MySQL的物理存储结构和session生命周期

所以,此种格式的唯一值索引长度不能超过767


Barracuda

Barracuda文件格式下拥有两种新的行记录格式Compressed和Dynamic两种,新的两种格式对于存放BLOB的数据采用了完全的行溢出的方式,在数据页中只存放20个字节的指针,实际的数据都存放在BLOB Page中。Compressed行记录格式的另一个功能就是存储在其中的数据会以zlib的算法进行压缩。

dynamic行格式,列存储是否放到off-page页,主要取决于行大小,它会把行中最长的那一列放到off-page,直到数据页能存放下两行。TEXT/BLOB列 <=40 bytes 时总是存放于数据页。可以避免compact那样把太多的大列值放到 B-tree Node,因为dynamic格式认为,只要大列值有部分数据放在off-page,那把整个值放入都放入off-page更有效。

MySQL的物理存储结构和session生命周期

变长列

在InnoDB中,变长列( variable-length column )可能是以下几种情况

  1. 长度不固定 的数据类型,例如 VARCHAR VARBINARY BLOB TEXT
  2. 对于 长度固定 的数据类型,如 CHAR ,如果 实际存储 占用的空间 大于768Byte ,InnoDB会将其视为变长列
  3. 变长编码 下的 CHAR


NULL值标识位

指示了该行数据列中是否有NULL值,这个字段的长度和表的列数有关,每一列对应一个bit位

     2. session的执行过程

     


本文名称:MySQL的物理存储结构和session生命周期-创新互联
转载来于:http://cdweb.net/article/shhsg.html