返回顶部
首页 > 资讯 > 数据库 >【MYSQL】InnoDB行溢出数据说明
  • 528
分享到

【MYSQL】InnoDB行溢出数据说明

2024-04-02 19:04:59 528人浏览 独家记忆
摘要

    首先说下Mysql数据库的varchar字段,真的很实用,它可以存放65536字节的数据,比oracle和sqlserver大多了,但是在使用varchar时也有几点要注意;

    首先说下Mysql数据库的varchar字段,真的很实用,它可以存放65536字节的数据,比oraclesqlserver大多了,但是在使用varchar时也有几点要注意;

    1、65536只是这么说,要建表的时候指定一个字段65536仍然会报错,因为字段本身还有其他开销,实际只能存放65532字节。
    2、65532字节并不是每个varchar字段都可以设置的,他是一个总和,也就是说如果有2个varchar字段的表,那么每个varchar字段只能设置65532/2的值。
    3、建表时要注意编码格式哦,varchar(65532)代表的是字节数,如果使用GBK或者UTF-8那就无法建立成功了,因为GBK一个字符占用2字节,UTF-8一个字符占用3字节
    以上概念比较简单,大家建个表试验一下就好,这里不再做实验;大家知道,页(PAGE)是innoDB存储引擎的最小存储单位,默认大小为16KB,及16384字节,行数据存储在页中;那么一行数据如果超过了一个页能够存储的大小怎么办?比如上面说的varchar(65532),65532字节该如何存储?这个时候就会发生行溢出。

行溢出
    InnoDB存储引擎可以将一条记录中的某些数据存储在真正的数据页面之外,一般为BLOB\LOB这类的大对象列类型。但是也不是绝对,BLOB可以不将数据放在溢出页面,而且即便是VARCHAR列数据类型,依然有可能被存放为行溢出数据,比如上例

    我们执行:insert into 表名 select repeat('a',65532),就将一行65532字节的数据插入到表中了,实际上在底层,真正的数据页只存储了一小部分数据,之后是偏移量,指向行溢出数据,这时会产生N个未压缩的二进制大对象页 Uncompressed BLOB Page,这些大对象页中才是完整存放了65532字节的数据。

    那么,一行数据为多大时,会发生行溢出呢?我们知道InnoDB存储引擎表是索引组织的,即B+树结构,这样一个页中至少要保证有2条数据,否则就变成链表了,如果只能存放一条数据,那么InnoDB存储引擎会自动将它存放在溢出页中。如果可以在一个页中至少放入两行数据,那么就不会发生行溢出
    
    其实对于BLOB类型的数据,跟varchar也是一个道理,要看实际的大小,当然,用户既然使用了blob列类型,一般不可能存放长度过小的数据,因此在大多数情况下BLOB的行数据还是会发生行溢出,实际数据保存在BLOB页中,数据页只保存数据的前768字节。


您可能感兴趣的文档:

--结束END--

本文标题: 【MYSQL】InnoDB行溢出数据说明

本文链接: https://lsjlt.com/news/48916.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【MYSQL】InnoDB行溢出数据说明
        首先说下MySQL数据库的varchar字段,真的很实用,它可以存放65536字节的数据,比oracle和sqlserver大多了,但是在使用varchar时也有几点要注意; ...
    99+
    2024-04-02
  • JVM的内存溢出异常说明
    本篇内容介绍了“JVM的内存溢出异常说明”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!举例说明含义:-Xss128k每个线程的java栈大小...
    99+
    2023-06-17
  • 详解MySQL的数据行和行溢出机制
    一、行 有哪些格式? 你可以像下面这样看一下你的MySQL行格式设置。 其实MySQL的数据行有两种格式,一种就是图中的 Compact格式,还有一种是Redundant格式。 Compact是一种紧凑的行格式,设...
    99+
    2022-05-10
    MySQL 数据行 MySQL 行溢出
  • Mysql中MyISAM和InnoDB的区别及说明
    目录MyISAM和InnoDB的区别1. 定义2. 区别3. 使用MyISAM和InnoDB索引结构分析存储引擎作用于什么对象MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的MyISAM主键索引与辅助索引...
    99+
    2022-12-26
    Mysql中MyISAM Mysql中InnoDB MyISAM和InnoDB的区别
  • 迪B课堂 | 深入浅出解读MySQL数据行溢出
    【迪B课堂】为腾讯云数据库高级产品经理迪B哥开设的面向数据库开发者、数据库运维人员、云端运维人员的系列培训课程,旨在帮助大家从入门到精通学习和使用数据库。 本期为迪B课堂特刊【MySQL经典案例解析系列】...
    99+
    2024-04-02
  • MySQL的数据行和行溢出机制是什么意思
    这篇文章给大家分享的是有关MySQL的数据行和行溢出机制是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一、行 有哪些格式?你可以像下面这样看一下你的MySQL行格式设置...
    99+
    2024-04-02
  • 从一条数据说起——InnoDB行存储数据结构
    本篇博客参考掘金小册——MySQL 是怎样运行的:从根儿上理解 MySQL 先给大家讲一个故事,我刚参加工作,在一个小作坊里面当【码畜】(尽管现在也是),有一天老板从我背后走过,说了一句举世震惊的话:我看你们的数据库和excel一...
    99+
    2019-02-19
    从一条数据说起——InnoDB行存储数据结构
  • MySQL中InnoDB row_id边界溢出验证的示例分析
    小编给大家分享一下MySQL中InnoDB row_id边界溢出验证的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景...
    99+
    2024-04-02
  • 【MYSQL】误删数据恢复流程说明
    误删数据恢复流程说明 项目场景:使用navicat时,不小心误删除几条数据,需要对数据进行恢复 解决方案: 第一步:保证mysql已经开启binlog,查看命令: 如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚...
    99+
    2023-08-17
    mysql 数据库
  • 怎样进行Visual Studio数据介绍说明
    怎样进行Visual Studio数据介绍说明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。因此,我们需要添加一个Visual Studio数据来比较我们的期望值和返回值。...
    99+
    2023-06-17
  • MySQL中json_extract函数说明
    1. json_extract 使用场景说明 在日常业务开发中通常mysql数据库中某个字段会需要存储json格式字符串,查询的时候有时json数据较大,每次全部取出再去解析查询效率较低,也较麻烦. 好在Mysql5.7及之后的版本里...
    99+
    2023-08-19
    json
  • Mysql配置my.cnf 参数说明
     ...
    99+
    2016-11-27
    Mysql配置my.cnf 参数说明
  • mysql数据库my.ini配置文件中文说明
    这篇文章主要介绍“mysql数据库my.ini配置文件中文说明”,在日常操作中,相信很多人在mysql数据库my.ini配置文件中文说明问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • canal使用说明:MySQL、Redis实时数据同步
    1. canal简介 canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 ...
    99+
    2023-09-08
    mysql redis 数据库
  • MySQL 数值类型溢出处理
    推荐阅读:吊打面试官!MySQL灵魂100问,你能答出多少?来,考考大家一个问题,在 MySQL 中当某一列设置为 int(0) 时会发生什么 ?为了演示这个问题,我们先要创建一个表 DROP TABLE IF EXISTS `na...
    99+
    2023-06-02
  • mysql连接数溢出怎么办
    解决 mysql 连接数溢出:增加 max_connections 参数值;优化连接池以减少连接创建和销毁;清理空闲连接释放资源;优化查询负载降低连接占用;分片数据库分散连接;使用连接限...
    99+
    2024-05-22
    mysql mongodb mysql连接
  • python数据溢出如何解决
    Python中数据溢出通常是由于数值太大而无法表示所导致的。为了解决这个问题,可以考虑以下几种方法: 使用Python的高精度计...
    99+
    2023-10-20
    python
  • Java数据溢出代码详解
    java是一门相对安全的语言,那么数据溢出时它是如何处理的呢? 看一段代码,public class Overflow { public static void main(String[] args) { int ...
    99+
    2023-05-31
    java 数据 溢出
  • mysql 的indexof函数用法说明
    如下所示: LOCATE(substr,str) 返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0. mysql> select LOCATE('bar'...
    99+
    2022-05-24
    mysql indexof函数
  • python mysql中in参数化说明
    第一种:拼接字符串,可以解决问题,但是为了避免sql注入,不建议这样写 还是看看第二种:使用.format()函数,很多时候我都是使用这个函数来对sql参数化的 举个例子: select * from X...
    99+
    2022-05-26
    python mysql in参数化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作