首页
学习
活动
专区
圈层
工具
发布

MySQL 如何存储长度很长的数据字段

最近,在工作中遇到了MySQL中如何存储长度较长的字段类型问题,于是花了一周多的时间抽空学习了一下,并且记录下来。...MySQL大致的逻辑存储结构在这篇文章中有介绍,做为基本概念:InnoDB 逻辑存储结构 注:文中所指的大数据指的是长度较长的数据字段,包括varchar/varbinay/text/blob。...(注意一点,虽然表示BLOB长度的是8字节,实际只有4个字节能使用,所有对于BLOB字段,存储数据的最大长度为4GB。) 验证下第一个外部存储页的头部信息: ?...将列放入外部存储页的标准 当一行中的数据不能在数据页中放下,需要申请外部存储页时,MySQL需要决定将哪一列的数据放到外部存储页,遵循的规则如下: 长度固定的字段不会被放到外部存储页(int、char(...N)等) 长度小于20字节的字段不会被放到外部存储页。

7.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL中需要注意的字段长度问题

    在MySQL的表结构设计中,突然想起来几个地方碰到的问题比较多,大体来说一个就是字符集,一个就是数据类型。 而字符集和数据类型结合起来,就有一个蛮有意思的细节,那就是行长度的问题。...比如我们创建一个表使用了varchar的类型,如果指定为gbk,表里含有一个字段,可以指定为32766字节,如果再长一些就不行了。...其中的计算方式就需要理解了,因为varhcar类型长度大于255,所以需要2个字节存储值的长度,而MySQL里面的页的单位是16k,使用了IOT的方式来存储。...它的长度就不一样了,对应是1字节,所以varchar(32767)是没有任何问题的,而最大长度就是65532了。...如果是gbk字符集,含有下面的几个字段,则memo字段的varchar类型最大长度是多少?

    3.2K60

    字段加密后长度变化

    加密算法有哪些 非对称加密算法:RSA,DSA/DSS 对称加密算法:AES,RC4,3DES HASH算法:MD5,SHA1,SHA256 数据加密的长度变化 加密流出 字符串转换成 bytes...-> padding -> base64 编码 将字符串转换成 byte 根据字符串所占长度不同,长度会扩充到不同倍数 ascii 码的字符,如数字字母等,每个字符只占一个字节,长度不扩充 正常情况下...,汉字等 unicode 编码,一个字符占 3 个字节,长度扩充3倍 如果是 mysql 中的 utf8mb4 编码,一个字符最大可以占用4个字节,长度扩充4倍 padding 将bytes 字符填充到...16的整数倍,长度最大增加16 加密 长度增加28(消息校验体16, 随机数12) base64 编码 长度填充到3整数倍, 之后4/3 大致上最大长度为 4/3* n *length + 64 Go

    3K10

    字节|字符、字段类型长度

    常用的字段数据类型: int:整型 double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99; char:固定长度字符串类型; char(10) 如果不足...时间类型,格式为:hh:mm:ss timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值 datetime:日期时间类型 yyyy-MM-dd hh:mm:ssmysql字段每个类型长度大小与建表的类型长度...pwd varchar(20) );括号里的数字叫数据的宽度,我们不能一概而论,因为不同的数据类型对宽度的处理也不一样:1、整数类型,这里显示的宽度和数据类型的取值范围是没有任何关系的,显示宽度只是指明Mysql...3、浮点和日期等数据类型对数据的宽度没有要求,一般也不设置,默认是0字符和字节: - 字符 :人们使用的记号,抽象意义上的一个符号。...中 varchar 字段长度,是按照字符的长度计算, 即,name 保存有 "我是谁" , 这是三个字符。

    3.1K60

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

    一、MySQL 限制回顾 之前在《MySQL Text 字段的限制》一文中讲过了关于 MySQL 在 Server 层和 InnoDB 层的限制,但是限制的算法没有详细展开,这里进行补充说明,先回顾一下...length / 8; default: return 0; } } 2.2 小结 根据上面计算方式的梳理,在 MySQL Server 层计算长度的公式,可以写成这样的伪代码: data_offset..., 这个是用户存储字段长度的变量 这个只是默认初始值,后面会根据长度进行溢出页的设置 */ field_max_size = dict_col_get_max_size...40 (溢出页指针的2倍),则这个字段在页内 只保留40个字节,且长度变量设置为1,即总共占用41个字节。...如果出现上述报错情况,大部分是因为 varchar 等设置过大,建议可以将一些字段逐步缩小,或者用 text 进行代替

    7.2K10

    一文搞懂MySQL表字段类型长度的含义

    不知道大家第一眼看标题的时候有没有理解,什么是“字段类型长度”,这里我来解释下,就比如我们在MySQL建表的时候,比如下面这个建表语句:CREATE TABLE `user` ( `id` int(10...,而每个类型+数字就是该字段的类型长度,比如int(10)就是该字段是int类型长度为10,这下大家应该能理解什么是MySQL表字段类型长度了吧(其实在后续的讲解中会发现这个并不是长度,而是宽度)那么重点问题来了...,每一种类型后面括号里的数字都有什么含义呢,下面我们来剖析下:首先MySQL表的字段都支持哪些类型?...一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存VARCHAR(N),如果N长度,如果N>=256则使用两个字节来存储长度...3 结论MySQL建表语法再次说明:create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], ......)

    3.2K11

    Mysql如何查字段的长度,Mysql中length()、char_length()的区别

    1、今天发生了一件有意思的事情,传输的数据大于标准定的字段长度了,我把字段长度调大了,把数据传输过来了。...答:剧透一下,其实使用char_length()查询出来的,就可以把这些删除掉,然后将调大的字段长度调小就行了。备注,我实际操作的字段都是中文字符哈,别再写教程写出血案了。 ?...2、先了解一下,Mysql中length()、char_length()的区别。 1)、length():mysql里面的length()函数是一个用来获取字符串长度的内置函数。   ...2)、char_length():在mysql内置函数里面查看字符串长度的还有一个函数是char_length()。   ...utf-8编码中判定某个字段为全英文,length(字段) = char_length(字段)即可。 ?

    7.2K10

    mysql如何设置update时间字段自动更新?

    在给网站做表设计的时候时间字段都是用的datetime类型,初始值都是设置的CURRENT_TIMESTAMP。...由于给文章表设计的有创建时间和更新时间两个字段,但是更新时间字段需要在更新文章后再次更新,当时由于不了解mysql还可以设置自动更新时间戳的功能,而是在更新文章的接口中手动更新时间字段,即以下这种方式:...update pages set update_date=now() 由于最近考虑给一些编辑功能增加更新时间字段,了解到Mysql 本身已经支持这个功能了,所以尝试采用新的方式来实现update_date...sql语句核心的语句为 ON UPDATE CURRENT_TIMESTAMP 所有可以将通过执行以下语句来实现时间字段自动更新功能: # 若该字段不存在 ALTER TABLE `dsiab_com`...ADD `update_date` DATETIME on update CURRENT_TIMESTAMP NOT NULL; # 若该字段已存在 ALTER TABLE `dsiab_com` CHANGE

    96910

    如何为MySQL中的JSON字段设置索引

    自此,它成了一种逃离严格列定义的方式,可以存储各种形状和大小的JSON文档,例如审计日志、配置信息、第三方数据包、用户自定义字段等。...jsonNOTNULL, `created_at`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) 在该表的properties字段中插入如下结构的...由于我们试图索引properties列中的request.email字段,生成列将使用JSON的解引用(Unquoting Extraction)运算符来提取该值。..." AS CHAR(255)))) USING BTREE; 此外还需要解决字符集不匹配的问题,需要显式设置排序规则为utf8mb4_bin: ALTER TABLE activity_log ADD...总结 尽管MySQL无法直接对JSON列建立索引,但通过生成列和函数索引的方式间接索引特定字段能够满足绝大多数场景。同时这种方式不仅适用于JSON,还适用于其它复杂或难以索引的模式。

    16010

    【CSS】设置 border 长度

    短横线 样式效果 思考过程 1.常规方案 看到这样的样式效果,大多数人首先想到的一定是 border-bottom 吧,但是真正写在 css 中,你会发现,效果是这样的 实现了,却又好像没实现,无法设置长度...,那么下面我们试着换一种思路去实现这个效果 2.优化方案 我们不要把这个短横线看做 border ,使用 伪元素 实现,可以随意更改大小、宽度、长度等,非常的方便 伪元素 用于设置元素指定部分的样式,...可用于设置元素的首字母、首行的样式,在元素的内容之前或之后插入内容等 selector::pseudo-element { property: value; } 代码实现 .box h1::after...{ /* 必须设置 content 属性才能生效 */ content: ''; /* border 宽度 */ width: 1000px; /* border 高度

    3.5K20

    MySQL|什么情况下拓展字段长度会锁表?

    作为产品DBA,经常被开发问,修改字段长度锁表吗?然后凭借"经验"给出回答:如果字段长度超过256个字符就会锁表。 现在看来回答错误 。...大于255个字节的长度则需要使用2个byte存储。 online ddl in-place 模式(不锁表)只支持字段的字节长度从0到255之间 或者256到更大值之间变化。...如果修改字段的长度,导致字段的字节长度无法使用 1 byte表示,得使用2个byte才能表示,比如从 240 修改为 256 ,如果在默认字符集为utf8mb4的情况下,varchar(60) 修改为...实践出真知 t1 表的字符集为utf8mb4,初始字段长度为20 ,80个字节,可以使用1byte表示。分别修改字符串长度为 60--->64--->128。...关于MySQL online ddl 奉献一份 收藏多年的流程图, 以xmind 文件方式分享到百度云盘上,方便给位查看,可以直接访问原文直达百度云盘。 ?

    5K21

    InnoDB(1)变长字段长度列表--mysql从入门到精通(六)

    上篇文章我们总结了mysql字符集: Mysql字符集总结(4)--mysql从入门到精通(五) 我们现在已经知道了,mysql客户端到服务器字符集是如何编码解码的,但表中数据到底存在哪里?...在compact中,吧所有变长字段真实数据字节长度都存在记录开头部分,从而形成变长字段长度列表,各变长字段的长度按逆袭存放,按逆袭存放,按逆袭存放。...所以这些数据存入变长字段长度列表为:010304 上诉情况都是因为存储的字段小,都是用一个字节,那么innoDB表如果存储两个字节呢?...另外需要注意的是,变长字段长度只存储非NULL的数据,若为null则不存储了,下篇文章介绍innoDB表的null值如何存储。...另外,不是所有数据都有变长字段长度部分的存储,比方说表里都没有变长字段长度部分,就不需要这个存储区间。

    2K20

    《MySQL核心知识》第5章:字段长度与类型宽度

    ❞ 今天是《MySQL核心知识》专栏的第5章,今天跟大家一起聊聊MySQL的字段长度与类型宽度。好了,开始今天的正题。...查看字段长度 CREATE TABLE tmp13(vb VARBINARY(10)); INSERT INTO tmp13 (vb) VALUES(12); SELECT LENGTH(vb) FROM...数据类型宽度 MYSQL中的整数型数据类型都可以指定显示宽度....例如,假设声明一个INT类型的字段 YEAR INT(4) ,该声明指明,在year字段中的数据一般只显示4位数字的宽度。 显示宽度和数据类型的取值范围是无关的。...例如,向year字段插入一个数值19999,当使用select查询的时候,MYSQL显示的将是完整带有5位数字的19999,而不是4位数字的值 如果不指定显示宽度,则MYSQL为每一种类型指定默认的宽度值

    2K30

    【CSS】CSS 背景设置 ③ ( 背景位置-长度值设置 | 背景位置-长度值方位值同时设置 )

    文章目录 一、背景位置-长度值设置 二、背景位置-长度值方位值同时设置 三、完整代码示例 一、背景位置-长度值设置 ---- 长度值设置 效果展示 : 设置背景位置为具体值 10px 50px : 粉色区域是盒子的区域...x 轴方向 50 像素 , y 轴方向没有设置 , 则在垂直方向上默认为居中 ; /* 设置背景位置 - x 轴方向 50 像素 , y 轴方向垂直居中 */ background-position:...50px; 二、背景位置-长度值方位值同时设置 ---- 长度值方位值同时设置 效果展示 : 设置背景位置为具体值 center 50px : 粉色区域是盒子的区域 , 图片背景位于盒子位置 x 轴方向...bottom;*/ /* 设置背景位置 - 水平居中 垂直居中 */ /*background-position: center center;*/ /* 设置背景位置 - 左下角...设置背景位置 - x 轴方向 50 像素 , y 轴方向 10 像素 */ /*background-position: 50px 10px;*/ /* 设置背景位置 - x 轴方向 50

    4.5K20
    领券