技术分享 | MySQL TEXT 字段的限制

MySQL 表字段太多超长问题及解决方案 在 MySQL 中,表字段超长问题通常是由于字段数量过多或字段定义过长引起的。在设计数据库时,了解 MySQL 对于字段数量和行大小的限制是至关重要的。通过合理设计字段类型、拆分表结构、使用合适的数据存储方式,可以有效解决字段超长问题,确保数据库的性能和可维护性。最佳实践合理定义字段类型,避免使用过于冗长的字段定义。拆分过于复杂的表,减少单表的字段数量。使用JSON或XML字段存储动态数据。归档历史数据,减少主表的数据量。通过这些优化措施,可以避免表字段过长的问题,并提升数据库系统的整体性能。 阅读详情

作者:kay
擅长 Oracle、MySQL、PostgresSQL 等多种数据库领域
擅长 Oracle、MySQL 性能优化、数据库架构设计、数据库故障修复、数据迁移以及恢复
热衷于研究 MySQL 数据库内核源码、分享技术文章,并拥有 Oracle OCP 认证
就职于江苏国泰新点软件有限公司,DBA 技术团队成员

一、背景说明

项目中有一个数据交换的场景,由于使用了很多个 varchar(1000)、varchar(2000),导致在创建表的时候,MySQL 提示:

ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help.

该表有 242 个字段,都是 varchar 类型,只是长度上有所区别。

二、MySQL 的限制

说明:本文仅讨论 MySQL 中,单条记录最大长度的限制,其他的暂且搁置。

无论是 MySQL 还是 Oracle,或者是 SQL Server,其实都有这么两层存在,一个是 Server 层,另一个是 存储引擎层。

其实也很好理解,可以类比一下我们 Windows 操作系统,比如常说的把 D 盘格式化成 NTFS 或者 FAT32,这个 NTFS 或者 FAT32 就可以理解成数据库中的存储引擎。

那为什么以前在用 SQL Server 或者 Oracle 的时候几乎没什么接触存储引擎这个概念呢?因为这两家都是闭源数据库,底层怎么实现的你也不知道,装好了就用呗!但是 MySQL 不一样,开源的东西,人人都可以看源码。只要你实现了那些接口,你就可以接入到 MySQL 中,作为一个存储引擎供 MySQL 的 Server 层使用。

说完这个概念,下面我们再说一下这个最大长度的限制。

官方文档相关说明 - Limits on Table Column Count and Row Size
https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html)

2.1 MySQL Server 的长度限制

The internal representation of a MySQL table has a maximum row size limit of 65,535 bytes.

MySQL Server 层的限制比较宽,你的一条记录不要超过 65535 个字节即可。

有的人就问了,怎么可能啊?我明明可以往 MySQL 里面放好几百兆的附件啊,咳咳…这个后面会提到。

2.2 InnoDB 的长度限制

InnoDB 作为现在官方唯一还在继续开发和支持的存储引擎(下一个版本 MySQL 8.0 中就默认看不到原先的 MyISAM 了),其长度限制比较严格,其大致的算法如下

一条记录的长度,不能超过 innodb_page_size 大小的一半(实际上还要小一点,因为要扣除一些页中元数据信息)

即默认MySQL官方推荐的 16K 的页大小,单条记录的长度不能超过 8126Byte。

为什么会有这种限制呢,其实也很好理解,InnoDB 是 以B+树来组织数据 的,假设允许一行数据填满整个页,那么 InnoDB 中的数据结构将会从 B+树退化为单链表,所以 InnoDB 规定了一个页至少包含两行数据。

那这就好理解了,项目中给出的建表语句的字段中,有好几十个 varhcar(1000) 或者 varchar(2000),累加起来已经远远超过了 8126 的限制。

2.3 字段个数的限制

同样,除了长度,对每个表有多少个列的个数也是有限制的,这里简单说一下:

1.MySQL Server 层 规定一个表的字段个数最大为 4096;
2.InnoDB 层 规定一个表的字段个数最大为 1017;

[官方文档相关说明 - Limits on InnoDB Tables]
https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

至于为什么有这个限制,其实可以不用深究,因为是代码中写死的。

至于原因,个人猜测和 MySQL 的定位有关系,MySQL 一直定位于 OLTP 业务,OLTP 业务的特点就是短平快,字段数过多或者长度太长,都会影响 OLTP 业务的 TPS(所以那些拿 MySQL 存附件的同时,还在抱怨 MySQL 性能差的同学,是不是该反思一下了?)

三、TEXT 类型的字段

回到我们项目中的问题,既然那么多 varchar 超过了限制,那按照提示,我们直接把所有字段改成 TEXT 是不是就可以了呢?

我们做了测试,发现依然失败,提示和之前一样。

3.1 TEXT 字段介绍

官方文档说明 - innodb-row-format-dynamic
https://dev.mysql.com/doc/refman/5.7/en/innodb-row-format-dynamic.html

关于 TEXT 字段的存储的方式和很多因素有关,他除了和本身记录的格式(参数 INNODB_ROW_FORMART,当前默认格式为 DYNAMIC)有关系,同时和当前记录所在的页的存储长度也有关系,简单归纳一下:

1.在 COMPACT 格式下,TEXT 字段的前 768 个字节存储在当前记录中,超过的部分存储在溢出页(overflow page)中,同时当前页中增加一个 20 个字节的指针(即 SPACEID + PAGEID + OFFSET)和本地长度信息(2 个字节),共计 768 + 20 + 2 = 790 个字节存储在当前记录。
2. 在 DYNAMIC 格式下,一开始会尽可能的存储所有内容,当该记录所在的页快要被填满时,InnoDB 会选择该页中一个最长的字段(所以也有可能是 BLOB 之类的类型),将该字段的所有内容存储到溢出页(overflow page)中,同时在原记录中保留 20 个字节的指针`。
3. 当 TEXT 字段存储的内容不大于 40 个字节时,这 40 个字节都会存储在该记录中,此时该字段的长度为 40 + 1(本地长度信息)= 41 个字节。

这里提到一个溢出页的概念,其实就是 MySQL 中的一种数据存储机制,当一条记录中的内容,无法存储在单独的一个页内(比如存储一些大的附件),MySQL 会选择部分列的内容存储到其他数据页中,这种仅保存数据的页就叫溢出页(overflow page)。

3.2 计算 TEXT 字段的最大列数

有了上述概念,现在我们可以来算一下 TEXT 字段一共可以存储多少列(以目前默认的 DYNAMIC 格式,且 innodb_strict_mode=on 为例),假设可以存储 x 列

除了我们创建的字段,每个记录(ROW)中还存在元信息:
1.header 信息(5 个字节);
2.列是否为 null 的 bitmap 信息(ceil(x/8) 即向上取整)
3.系统字段:主键 ID(6 个字节)、事物 ID(6个字节)、回滚指针(7 个字节);

那么计算公式就是:

$5 + ceil(x/8) + 6 + 6 + 7 + x * 41 <= 8126,求 x 的解 $。

最终我们可以计算出符合该公式的 x 的解为 197。

那是不是就可以插入 197 个的 text 呢? 我们又做了一个测试,发现还是失败的(What’s The F**K?)。

最终通过源码我们找到了问题的答案(以当前最新的 5.7.20 为例):

/* Filename:./storage/innobase/dict/dict0dict.cc 第 2504 行 */
if (rec_max_size >= page_rec_max) {   /* 居然是 >= */
	ib::error_or_warn(strict)
		<< "Cannot add field " << field->name
		<< " in table " << table->name
		<< " because after adding it, the row size is "
		<< rec_max_size
		<< " which is greater than maximum allowed"
		" size (" << page_rec_max
		<< ") for a record on index leaf page.";

	return(TRUE);
}

通过代码我们可以发现,不能刚好等于最大值,所以在当前 MySQL 版本(5.7.x)中,极端情况下,可以存储 196 个 TEXT 字段。

同时我们也进行了测试,的确可以创建有且仅含有 196 个 TEXT 字段的表。

我们可以构造一下 create table 的测试语句,包含 196 个 TEXT 字段的 sql 文件 c_196.sql 和 197 个 TEXT 字段的 sql 文件 c_197.sql

create table c_196( f1 text,
f2 text,
f3 text,
......
f196 text
);
-- 197 个字段的的类似,多增加 f197 text 字段

mysql> source c_197.sql
ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

mysql> source c_196.sql
Query OK, 0 rows affected (0.01 sec)

mysql> select count(*) from information_schema.columns where table_name='c_196' and data_type='text';
+----------+
| count(*) |
+----------+
|      196 |  -- 共 196 个字段
+----------+
1 row in set (0.00 sec)

备注:能这样保存 196 个 TEXT 字段,并不代表我们推荐这样做,如果业务上达到了这种限制,建议业务上做一定的拆分。

3.3 关于 innodb_strict_mode

细心的同学可能会想,如果所有 TEXT 字段都是以溢出页(overflow page)的方式存储,本地记录都是以指针(20 个字节)进行存储,那不是可以存储更多的字段呢?

确实是的,但是 MySQL 现在开启了严格模式(innodb_strict_mode=on),由于 MySQL 层面无法保证所有数据都是存储在溢出页(业务才能决定),所以在严格模式下,宁愿牺牲字段个数的上限,也要确保所有的 insert 或者 update 能成功执行。

那我们关闭严格模式,看一下,究竟能存储多少个 TEXT 字段呢?继续套公式

$5 + ceil(x/8) + 6 + 6 + 7 + x * 20 <= 8126,求 x 的解 $。

最终我们可以计算出符合该公式的 x 的解为 402。但是事实真的如此么?

同样我们也可以构造一下 create table 的测试语句,包含 402 个 TEXT 字段的 sql 文件 c_402.sql

create table c_402( f1 text,
f2 text,
f3 text,
......
f402 text
);

mysql> source c_402.sql
Query OK, 0 rows affected, 1 warning (0.02 sec)  
-- 虽然成功了,但是有一个警告

mysql> show warnings\G
*************************** 1. row ***************************
  Level: Warning
   Code: 139
Message: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| c_402         |
+---------------+
1 row in set (0.00 sec)

mysql> select count(*) from information_schema.columns where table_name='c_402' and data_type='text';
+----------+
| count(*) |
+----------+
|      402 |
+----------+
1 row in set (0.00 sec)

看到上面的执行结果,虽然 create table 执行成功了,通过 show table 也的确看了 c_402 这个 table,但是出现了 warnings。

warnings 的内容我们应该很熟悉了,因为没有了严格模式的保护,mysql 允许你创建成功,但是给了一个 warning。

有兴趣的同学其实可以继续测试,其创建的 text 字段可以更多,可以达到 innodb 的最大限制 1017 个字段,如下所示:

mysql> source c_1017.sql
Query OK, 0 rows affected, 1 warning (0.04 sec) -- 一如既往的Warnings

mysql> select count(*) from information_schema.columns where table_name='c_1017' and data_type='text';
+----------+
| count(*) |
+----------+
|     1017 |
+----------+
1 row in set (0.00 sec)

mysql> source c_1018.sql
ERROR 1117 (HY000): Too many columns

但是这样做了以后,虽然建立了 1017 个 text 列,如果业务上进行 insert 或者 update 的时候,mysql 无法保证能执行。

所以项目上建议还是保持默认值,将 innodb_strict_mode 设置为 on(公司的 bin 包中已经默认开启)

四、总结

很多同学看到这里,可能会想,MySQL 弱暴啦,怎么这么多限制啊,你看 Oracle 多强啊…

其实,针对项目中这种超多字段,同时又只能用 MySQL 的场景下,我们可以使用 MySQL 5.7 中最新推出的 JSON 类型的字段,这样 N 多数据只算在一个 JSON 字段哦,同时还有丰富的 JSON 函数予以支持,业务上使用起来其实还是比较方便的(5.6 等版本可以存在 blob 中,只是需要业务自己做 json_encode/json_decode 等操作)。

这里更要强调的是,MySQL 作为一个绝大部分互联网公司都在广泛使用的 OLTP 型数据库(微信支付的交易库就运行在 MySQL 社区版之上),这些成功案例已经证明了 MySQL 是一个优秀的工业级数据库。

当然除了他自身在不断进步以外,同样需要我们从业务上进行良好的表结构设计,编写规范的 SQL 语句以及采用合适的集群的架构,才能发挥出 MySQL 自身的潜力,而不是一味的和 Oracle 进行对比,拿 Oracle 的优点和 MySQL 的缺点进行比较,这样无法做到客观和公正。

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置) 本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。 阅读详情

相关推荐

深入解析CRC16查表法:从原理到Modbus协议实践

本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。

weixin_29166013的博客 555

MySQL - text字段

如假设一个中文字符占两个字节,那TEXT类型可存65535/2=32767个中文字符,而varchar(100)可存储100个中文字符,实际占200个字节,但varchar(65535)并不能存储65535个中文字符,因为巳超出表达范围。2、varchar可变长度,可以设置最大长度,适合已知最大可用长度的情况下,用在长度可变的属性。varchar可变长度,可以设置最大长度,适合用在长度可变的属性。3、text不设置长度,当不知道属性的最大长度时,适合用text,能用varchar的地方不用text。

MinggeQingchun的博客 1万+

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 236

mysql中文本类型的长度限制_MySQL类型文本的最大长度

对于MySql 8.0版 .数字类型存储要求Data Type Storage RequiredTINYINT 1 byteSMALLINT 2 bytesMEDIUMINT 3 bytesINT, INTEGER 4 bytesBIGINT 8 bytesFLOAT(p) 4 bytes if 0 &lt...

weixin_30910893的博客 514

dolphinscheduler服务注册中心源码解析(一)服务注册与发现整体设计

下一篇文章我们开始讲解dolphinscheduler基于Zookeeper实现注册中心的源码解析。

最爱嫣夜来 375

基于YOLOv26的护栏损坏检测系统原理讲解

本文介绍了一种基于YOLOv26深度学习的护栏损坏检测系统。该系统通过车载摄像头或固定监控采集道路护栏图像,利用改进的YOLOv26算法实现高效准确的损坏检测。系统采用分层架构设计,包含数据采集、检测处理、分析评估和应用服务四个层次,能够自动识别变形、断裂、缺失等五种常见损坏类型,并评估损坏严重程度。相比传统人工检测方法,该系统大幅提高了检测效率和准确性,降低了人工成本和安全风险。关键技术包括多尺度特征融合、注意力机制和自适应非极大值抑制等创新设计,使系统在复杂道路环境下仍能保持稳定的检测性能。

一键难忘的博客 328

为什么MySQL不建议使用TEXT字段?

MySQL不建议过度使用TEXT字段,原因有性能问题、索引限制、碎片化与存储管理、应用场景的匹配性和设计考虑。在设计数据库时,应综合考虑系统可扩展性和灵活性,选择合适的字段类型和数据结构,以提高性能和数据一致性。

码农小郑有话说的博客 7286

3D高斯压缩黑科技开源!1GB场景压到42MB,Web3D迎来“WebP时刻”——SOG格式深度解析

Web3D迎来革命性突破!PlayCanvas开源全新3D高斯泼溅压缩格式SOG,将1GB场景压缩至仅42MB,体积缩小95%,加载速度提升10倍+。SOG通过将3D数据编码为WebP纹理+元数据,实现GPU零拷贝实时渲染,完美兼容WebGL/WebGPU。实测显示,4百万高斯点的场景在手机上1.5秒内完成加载,内存占用降低83%。这一技术突破为电商展示、虚拟旅游、工业设计等领域带来新机遇,开发者可通过开源工具链快速集成。SOG被誉为"3D界的WebP",有望成为下一代3D互联网的基础设

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 865

mysql的text字段长度_mysql的text字段长度?mysql数据库中text字段长度不够的问题

类型是可变长度的字符串,最多65535个字符;可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符).MySQL supports 4 TEXT field types (TINYTEXT, TEXT, MEDIUMTEXT and LONGTEXT) and this post looks at the maximum ...

weixin_42491621的博客 1134

北斗导航 | ChatGPT之RTK、RTD、ARAIM算法原理及程序代码(ChatGPT看你怎么回答,附部分代码)

ChatGPT之RTK、RTD、ARAIM算法原理及程序代码

尘世冰封的专栏 3678

二十一、CANdelaStudio深入-SPRMIB的配置

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的肯定响应抑制位配置,欢迎各位朋友订阅、评论,可以提出宝贵意见,以持续输出更好的作品,同时会根据评论、私信不定期更新文章内容,以及专栏目录。订阅该专栏的朋友可私信小编免费答疑解惑(^U^)ノ~YO CANdelaStudio-从入门到深入目录 文章目录CANdelaStu

诊断协议那些事儿's blog 1870

MySQL text字符超长

MySQL text字符超长

lifeohcaro的博客 1554

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

念兮为美 2279

技术分享 | MySQL 字段长度限制的计算方法

一、MySQL 限制回顾 之前在《MySQL Text 字段的限制》一文中讲过了关于 MySQL 在 Server 层和 InnoDB 层的限制,但是限制的算法没有详细展开,这里进行补充说明,先回顾一下 MySQL 的两个限制 1.MySQL Server 层 的限制为单条记录的大小不超过 65535 字节; 2.InnoDB 层 不能超过 innodb_page_size 大小的一半(实际上还要小一点,因为要扣除一些页中元数据信息), 以默认的 16K 设置为例,其限制为 8126。 ..

Data & Analysis 1774

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

datetime长度为0_技术分享 | MySQL 字段长度限制的计算方法

作者:kay擅长 Oracle、MySQL、PostgresSQL 等多种数据库领域;擅长 Oracle、MySQL 性能优化、数据库架构设计、数据库故障修复、数据迁移以及恢复;热衷于研究 MySQL 数据库内核源码、分享技术文章,并拥有 Oracle OCP 认证;就职于江苏国泰新点软件有限公司,DBA 技术团队成员。一、MySQL 限制回顾之前在《MySQL Text 字段的限制》一...

weixin_30767257的博客 2382

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【MySQL系列】MySQL中text,longtext,mediumtext区别

mysql 中 text,longtext,mediumtext 字段类型的意思, 以及区别 mysql 中 text,longtext,mediumtext 字段类型区别为:字节限制不同、I/O 不同、行迁移不同。 一、字节限制不同 1、text 字段类型:text 字段类型的字节限制为 65535 字节。 2、longtext 字段类型:longtext 字段类型的字节限制为 2147483647 字节。 3、mediumtext 字段类型:mediumtext 字段类型的字节限制为 16777215

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 10万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

char* 长度_技术分享 | MySQL 字段长度限制的计算方法

作者:kay擅长 Oracle、MySQL、PostgresSQL 等多种数据库领域;擅长 Oracle、MySQL 性能优化、数据库架构设计、数据库故障修复、数据迁移以及恢复;热衷于研究 MySQL 数据库内核源码、分享技术文章,并拥有 Oracle OCP 认证;就职于江苏国泰新点软件有限公司,DBA 技术团队成员。一、MySQL 限制回顾之前在《MySQL Text 字段的限制》一...

weixin_39662578的博客 709

MySQL中text,longtext,mediumtext区别

LONGTEXT: 4,294,967,295字符。MEDIUMTEXT: 16,777,215字符。longtext: 2147483647字节。mediumtext: 16777215字节。数据类型: 小文本用TINYTEXT。mediumtext: 介于两者之间。mediumtext: 介于两者之间。longtext: 易多余I/O。存储空间: LONGTEXT大。TEXT: 65,535字符。text: 65535字节。text: 不易多余I/O。longtext: 难迁移。

懂搬砖 2394

mysql 计算公式字段_技术分享 | MySQL 字段长度限制的计算方法

一、MySQL 限制回顾之前在《MySQL Text 字段的限制》一文中讲过了关于 MySQL 在 Server 层和 InnoDB 层的限制,但是限制的算法没有详细展开,这里进行补充说明,先回顾一下 MySQL 的两个限制:1.MySQL Server 层的限制为单条记录的大小不超过 65535 字节;2.InnoDB 层不能超过 innodb_page_size 大小的一半(实际上还要小一点,...

weixin_33065899的博客 757

猫头虎 分享:MySQL 中 TEXT 与 LONGTEXT 数据类型详解与使用场景分析

TEXT和LONGTEXT是MySQL中专门用来存储大文本的字段类型。虽然它们的用途很相似,但各自的存储容量却有很大的不同。TEXT:最大存储容量为65,535 字节(约 64 KB)。通常适合存储中等长度的文本内容。LONGTEXT:最大存储容量为4,294,967,295 字节(约 4 GB),可以存储超长文本,如完整的文章或书籍。NOTE: 尽管 `LONGTEXT` 可以存储非常大的文本,但如果不必要地选择它,可能会导致存储资源浪费。数据类型最大存储长度应用场景性能影响TEXT。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+

mysql的text字段长度 mysql数据库中text字段长度不够的问题

mysql的text字段长度 mysql数据库中text字段长度不够的问题

yrryyff的博客 5032

mysql text 超长异常_关于MySQL的text字段类型异常的解决方法

下面是一段我在保存text类型的数据到mysql时遇到的问题,记录在此,希望能为碰到此问题的同道中人节省时间:保存数据时先是报该异常:com.mysql.jdbc.PacketTooBigException: Packet forquery is too large网上搜索答案后,进行了如下修改:修改/etc/my.cnf文件中[mysqld]部分为max_allowed_packet = 64M...

weixin_40005330的博客 3370

Mysql中的 TEXT 和 BLOB 解析

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

无休居士的博客 1759

MySQL的text类型的最大长度

有个字段是text类型,竟然67kb的内容都保存不了,说是 Data too long  查看了一下,原来是这样的:  TINYTEXT 256 bytes   TEXT 65,535 bytes ~64kb MEDIUMTEXT  16,777,215 bytes ~16MB LONGTEXT 4,294,967,295 bytes ...

walle的博客 4万+

mysql长度不够_mysql的text字段长度 mysql数据库中text字段长度不够的问题

分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net类型是可变长度的字符串,最多65535个字符; 可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符). MySQL supports 4 TEXT field...

weixin_39760068的博客 389

技术分享 | MySQL 索引长度限制的案例

作者:刘晨 网名 bisal ,具有十年以上的应用运维工作经验,目前主要从事数据库应用研发能力提升方面的工作,Oracle ACE ,拥有 Oracle OCM & OCP 、EXIN DevOps Master 、SCJP 等国际认证,国内首批 Oracle YEP 成员,OCMU 成员,《DevOps 最佳实践》中文译者之一,优快云 & ITPub 专家博主,公众号"bisal的个人杂货铺",长期坚持分享技术文章,多次在线上和线下分享技术主题。 本文来源:原创投稿 *爱可生开源社区出.

ActionTech的博客 430
上一篇: 分布式 | DBLE Release Notes 详细解读 2.19.11.0
下一篇: 技术分享 | MySQL 字段长度限制的计算方法
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值