InnoDB行格式对text/blob大变长字段的影响

MySQL的InnoDB的行格式:Compact、Dynamic与Compressed的差异及LOB数据的存储方式 InnoDB 存储引擎以页为单位存储数据,默认页大小为 16KB。每一页包含多个行,而行格式决定了行数据在页内的物理存储方式。不同的行格式在存储效率、性能和对 LOB 数据的处理上有显著差异。选择合适的行格式是数据库设计的重要环节。Redundant: MySQL 5.0 之前的默认行格式,效率较低,很少使用。Compact: MySQL 5.0 及之后的默认行格式,空间利用率较高。Dynamic。 阅读详情

1. InnoDB的Antelop与Barracuda文件格式

Innodb存储引擎保存记录,是以行的形式存放的(与之对应的是像Google BigTable这种列数据库)。在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了 Compact 和 Redundant 两种格式来存放行记录数据,这也是目前使用最多的一种格式。Redundant 格式是为兼容之前版本而保留的。

MySQL 5.1 中的 innodb_plugin 引入了新的文件格式:Barracuda(将以前的行格式 compact 和 redundant 合称为Antelope),该文件格式拥有新的两种行格式:compressed和dynamic。

在 MySQL 5.6 版本中,默认还是 Compact 行格式,也是目前使用最多的一种 ROW FORMAT。用户可以通过命令 SHOW TABLE STATUS LIKE'table_name' 来查看当前表使用的行格式,其中 row_format 列表示当前所使用的行记录结构类型。

 

2. 对TEXT/BLOB这类大字段类型的影响

2.1 compact

在 Antelope 两种行格式下,如果blob列值长度 <= 768 bytes,就不会发生行溢出(page overflow),内容都在数据页(B-tree Node);如果列值长度 > 768字节,那么前768字节依然在数据页,而剩余的则放在溢出页(off-page),上面所讲的讲的blob或变长大字段类型包括blob,text,varchar,其中varchar列值长度大于某数N时也会存溢出页。innodb的块大小默认为16kb,由于innodb存储引擎表为索引组织表,树底层的叶子节点为一双向链表,因此每个页中至少应该有两行记录,这就决定了innodb在存储一行数据的时候不能够超过8k。

2.2 compressed或dynamic

Barracuda 的两种行格式对blob采用完全行溢出,即聚集索引记录(数据页)只保留20字节的指针,指向真实存放它的溢出段地址:

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

compressed 物理结构上与dynamic类似,但是对表的数据行使用zlib算法进行了压缩存储。在long blob列类型比较多的情况下用,可以降低off-page的使用,减少存储空间(一般40%左右),但要求更高的CPU,buffer pool里面可能会同时存储数据的压缩版和非压缩版,所以也多占用部分内存。

大文本(Blob)对象处理 pb学习--大文本(Blob)对象处理 Blob类型的数据用来保存象大文本和图象之类的数据,这种数据长度很大、几乎没有限制。而在PB中,没有长度限制的对象仅此一种类型,所以它有特殊的处理方法。 Blob类型的数据没有边界限制,可以保存一些普通类型的字段不能保存的信息。 立即下载

相关推荐

提高MySQL中InnoDB表BLOB列的存储效率的教程

主要介绍了提高MySQL中InnoDB表BLOB列的存储效率的教程,InnoDB的优化在MySQL的优化研究中也是一个非常热门的课题,需要的朋友可以参考下

mysql blob text 性能_Innodb 关于blob、text字段的存储以及性能

对于innodb存储大的blob字段,将会对索引、查询性能造成极大的影响(从mysql5.1版本有所改进),以下为关于此的相关原因分析与总结:I’m running in this misconception second time in a week or so, so it is time to blog about it.How blobs are stored in Innodb ? Th...

weixin_42377538的博客 590

微信小程序转化数据API自归因实战:PHP实现与2025升级要点解析

本文详细解析了2025年微信小程序转化数据API自归因的升级要点与PHP实战实现。核心变化包括接口地址更新、固定access_token的获取方式,以及新增timestamp与nonce等安全参数。文章提供了完整的PHP代码示例,帮助开发者高效完成数据上报,优化腾讯广告投放效果。

git9versioner的博客 989

MySQL数据库字段超长问题

在向MySQL数据库表中插入或更新记录时,有时会出现字段超长的问题,包括但不限于以下场景处理上游系统发送的交易信息,将多个字段拼成一个JSON或其他格式的字符串;在增加字段,或数据较长时,写入或更新数据库时可能超长;调用下游系统的服务,返回的部分字段(如错误信息等)较长时,导致更新数据库记录失败。...

adrninistrat0r的博客 1万+

jetson agx orin开箱及接口介绍

jetson agx orin开箱及接口介绍

qq_58728069的博客 1万+

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 556

Blob数据长度太长,SQL执行失败ORA-01704

【代码】Blob数据长度太长,SQL执行失败ORA-01704。

qq_41070102的博客 2198

从零构建DDS信号发生器:STM32 DAC与DMA的完美交响

本文详细介绍了如何利用STM32的DAC模块和DMA控制器从零构建高性能DDS信号发生器。通过深入解析DDS技术原理、STM32 DAC特性及DMA高效数据传输,提供了完整的波形生成算法、硬件电路设计和软件实现方案,帮助开发者掌握数字信号合成的核心技术。

tree8的博客 705

innodb使用大字段text,blob的一些优化建议

最近看到一些老应用,在表结构的设计上使用了text或者blob的字段;其中一个应用,对blob字段的依赖非常的严重,查询和更新的频率也是非常的高,单表的存储空间已经达到了近100G,这个时候,应用其实已经被数据库绑死了,任何应用或者查询逻辑的变更几乎成为不可能; 为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎在底层对行的处理方式: 知识点一:在5.1中,innodb存储

liaoyuanzi的专栏 1434

ABA分析方法 — 软硬件开发必备的一种分析问题绝佳套路

可能你从很多地方听过这个名词,无论是在软件开发还是硬件领域(比较典型的领域:汽车、消费电子、医疗等行业),ABA验证都是一种快速分析故障的一个方法,第一次听到这个词,当时是不是一脸懵逼,本文就深度带你了解下ABA的分析方法。简要概述就是:怀疑A模块导致系统故障,将B模块替换A模块,故障消失,再将A模块替换回来,故障复现,则说明A模块是导致系统故障的原因其实,ABA分析问题,可能很多人在工作中都或多或少用过这个方法,只是没有这个概念,说明白了就是控制变量和对比验证,没什么高大上的东西。

Eureka1024的博客 7328

配电网故障重构/孤岛划分/故障恢复

程序主要复现《基于GA_BFGS算法的配电网故障恢复性重构研究_郑海广》,采用matlab编程软件实现,依据网络结构和DG供电方式对配电网进行孤岛划分,将含有 DG 的配电网拓扑结构看成一个树,搭建成连通图模型,使得将孤岛的划分变成了求取最小生成树,以网损和开关开断次数作为目标,采用 IEEE33 节点配电网为算例,通过遗传算法寻优计算,从而得到最佳的重构方案。

zhangxd212489的博客 2500

探究InnoDB Compact行格式背后

本次我们聚焦 InnoDB 行格式,理解它们是如何在幕后悄悄发挥作用的。行格式的设计反映了数据库设计者在权衡性能、存储和兼容性时的决策。到现在为止一共设计了4种不同类型的行格式 ,分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行格式,随着时间的推移,他们可能会设计出更多的行格式,但是不管怎么变,在原理上大体都是相同的。 我们本次主要针对Compact InnoDB 行格式进行分析理解。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 8万+

超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!

你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!

网络技术联盟站 1109

mysql 大字段 blob_MySQL字段类型TEXT和BLOB的应用

CompactCompac行格式如果blob列值长度 <= 768 bytes,就不会发生行溢出(page overflow),内容都在数据页(B-tree Node);如果列值长度 > 768字节,那么前768字节依然在数据页,而剩余的则放在溢出页(off-page),如下图:上面所讲的讲的blob或变长大字段类型包括blob,text,varchar,其中varchar列值长度大于...

weixin_42563415的博客 1500

IMEI引起的无法驻网问题

问题不复杂,场景很简单,如上图,UE在进行LTE attach过程时,在送完NAS security mode complete后,就立刻收到了网络attach reject 带cause 6 Illegal ME,根据协议描述这个cause 代表ME不被网络可接受,例如ME在禁止名单或者黑名单中就会有这种cause。然而前方在报这个问题的时候,也是知道SIM卡和手机IMEI在运营商那边没能成功绑定,然后才报的问题,要查看手机是不是有问题...... 告诉前方原因后,还认为是手机问题,告知要继续查。

asd199086的博客 1426

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

InnoDB行格式 innodb_file_format 介绍

InnoDB行格式 innodb_file_format 对TEXT/BLOB的影响:摘录自:http://seanlook.com/2016/05/18/mysql-blob-row_format/http://hidba.org/?p=551https://www.percona.com/blog/2008/01/1...

weixin_33743880的博客 3852

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mysql中的 TEXT 和 BLOB 解析

InnoDB 表是行格式存储的,这适用于包括TEXT和BLOB类型在内的所有数据列。TEXT和BLOB列的数据存储方式与普通数据列不同——它们可能会存储在数据页内(如果数据较小),或者会被分配到**溢出页**中(如果数据较大)。行格式存储并不会影响TEXT和BLOB的使用,它们依然是作为 InnoDB 行的一部分进行管理,只是它们的存储位置可能会有所不同。因此,虽然你可以在 InnoDB 表中使用TEXT和BLOB数据类型,但这并不改变表使用行格式存储的方式。前缀索引:对于TEXT和BLOB。

无休居士的博客 1757

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MySQL表字段数量限制以及行大小限制

mysql表字段限制和row size limits

weixin_41866717的博客 9731

在innodb中的blob字段怎样存储?

Blob Storage in Innodb http://www.mysqlperformanceblog.com/2010/02/09/blob-storage-in-innodb/innodb行格式介绍 http://www.innodb.com/doc/innodb_plugin-1.0/innodb-row-format.html一、innodb行格式 (1)REDUNDANT和

星星的技术专栏 1540

【mysql】关于InnoDB存储引擎 text blob 大字段的存储和优化

最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了 一、简介 为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎的处理方式: 1、一些知识点 1.1 在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了Compact和Redundant(Redundant 格式是为兼容之前版本而保留的)两种格式来存放行记录数据,compact 和 redundant 合称为Antelope...

微信公众号:一颗向上的草莓 654

mysql text blob 性能比较_Innodb 关于blob、text字段的存储以及性能

对于innodb存储大的blob字段,将会对索引、查询性能造成极大的影响(从mysql5.1版本有所改进),以下为关于此的相关原因分析与总结:I’m running in this misconception second time in a week or so, so it is time to blog about it.How blobs are stored in Innodb ? Th...

weixin_35993844的博客 669

从一条记录说起:InnoDB 行记录长什么样?以及为什么会有 COMPACT / DYNAMIC 两种行格式

本文深入解析了InnoDB的行记录存储结构,重点对比了COMPACT和DYNAMIC两种行格式。主要内容包括:1)InnoDB数据存储的基本架构,记录以B+Tree组织在16KB页中;2)COMPACT行格式的四段结构:变长字段长度列表、NULL位图、记录头和真实数据;3)大字段处理机制,当列值过长时会使用溢出页存储,行内保留768B前缀(COMPACT)或仅保留引用(DYNAMIC);4)两种行格式的历史演进,DYNAMIC通过减少行内存储提高页密度。文章还提供了查看和修改行格式的SQL操作指南,帮助开发

Askillerguy的博客 843

mysql 大字段_【mysql】关于InnoDB存储引擎 text blob 大字段的存储和优化

最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了一、简介为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎的处理方式:1、一些知识点1.1 在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了Compact和Redundant(Redundant 格式是为兼容之前版本而保留...

weixin_30470929的博客 542

mysql学习-Innodb行格式compact行记录解析

一、Innodb四种行格式 COMPACT 紧凑型行格式 REDUNDANT 字段长度偏移类型 DYNAMIC 动态行格式 COMPRESSED 压缩行格式 二、COMPACT行格式示意图 三、变长字段长度列表 1.目的 针对于变长字段列入VARCHAR,VARBINARY,TEXT,BLOB等变长字段类型,由于存储的字段长度不固定,如果不记录该字段的真实长度,那么就无法计算出这一行的准确长度,那么就无法进行行与行的切分。 所以变长字段会占用两部分空间,第一部分是数据的长度,另一部分是该数据所占用的字

欢谷悠扬 2579
上一篇: 腾讯后台知识体系
下一篇: 机器学习三要素:模型、策略与算法
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值