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


MySQL的物理存储结构

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

(2).数据的row存储

变长字段的存储:


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

行溢出的处理:

数据表Row_format是Compact,

innodb默认的approach存储格式会把每个blob字段的前864个字节存储在page里,所以blob超过一定数量的话,单行大小就会超过8k

,所以就报错了。通过对比业务写成功和失败的SQL也应征了这个推论,那么现在要怎么解决这个问题?

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

如果blob列值长度 768字节,那么前768字节依然在数据页,而剩余的则放在溢出页(off-page)

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



Barracuda


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



dynamic行格式,列存储是否放到off-page页,主要取决于行大小,它会把行中最长的那一列放到off-page,直到数据页能存放下两行。TEXT/BLOB列


开发云主机域名

在InnoDB中,变长列(

variable-length column

)可能是以下几种情况






NULL值标识位


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

2. session的执行过程

相关推荐: Mysql通信协议

当连接mysql时,使用-h227.0.0.1时,linux与unix下的连接协议为socket协议,windows下为memory协议。 如: [root@mysql ~]# mysql -uandy -pandy -h227.0.0.1 当连接mysql时…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/05 09:45
下一篇 06/05 09:45

相关推荐