首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

最近,在工作中遇到了MySQL中如何存储长度较长字段类型问题,于是花了一周多时间抽空学习了一下,并且记录下来。...MySQL大致逻辑存储结构在这篇文章中有介绍,做为基本概念:InnoDB 逻辑存储结构 注:文中所指数据指的是长度较长数据字段,包括varchar/varbinay/text/blob。...此处值为64764,加上前缀768正好是65532。(注意一点,虽然表示BLOB长度是8字节,实际只有4个字节能使用,所有对于BLOB字段,存储数据最大长度为4GB。)...将列放入外部存储页标准 当一行中数据不能在数据页中放下,需要申请外部存储页时,MySQL需要决定将哪一列数据放到外部存储页,遵循规则如下: 长度固定字段不会被放到外部存储页(int、char(...当有多个大数据字段满足上面条件,需要被放到外部存储页时,MySQL会优先选择大字段放到外部存储页,因为这样可以最大限度省下数据空间,使得更多字段能够被放到数据页。

5.6K20

MySQL修改字段类型、字段名字、字段长度字段小数点长度

文章目录 1:修改类型 2:修改长度 3: 同时修改列名和列数据类型 4:修改字段类型text(类型) ~>mediumtext(类型) 5:修改字段长度字段小数点长度 6: 修改字段列名和字段类型...7:指定字段之后新增字段 8:更新表content_text字段类型 9:修改字段类型,修改长度和小数点位数 1:修改类型 mysql> alter table 表名 modify column 字段名...mysql 修改字段类型:alter table news modify column title text;我发现使用这句sql也可以直接修改字段原本类型!...city char(30);修改长度可以用(修改长度,要保证不短与已有数据,以保证原有数据不出错)mysql> alter table address modify column city varchar...3: 同时修改列名和列数据类型 同时修改列名和列数据类型方法:通常可以写成 alter table 表名 change column 旧列名 新列名 新列类型student表中列sname类型是

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

    MySQL online DDL 更改Varchar字段长度

    mysql 在DDL 权威指南 5.6 官方文档 :verision :https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-operations.html...在5.6 里面执行DDL 根本没有单独操作Varchar这个字段类型。...对于VARCHAR大小为0到255个字节列,需要一个长度字节来编码该值。对于VARCHAR 大小为256字节或更大列,需要两个长度字节。...注意 一个字节长度VARCHAR列是依赖于字符集字节长度 。 减少VARCHAR使用就地尺寸ALTER TABLE不被支持。减小VARCHAR 大小需要表副本(ALGORITHM=COPY)。...总结 在数据量很大时候,varchar通过Online DDL做到快速进行更改字段长度。但是前提条件就是不会进行锁表和copy数据过程。 这个前提条件就是数据支持5.7及5.7以上。

    6.3K20

    MySql数据库大表添加字段方法

    第一 基础方法 增加字段基本方法,该方法适合十几万数据量,可以直接进行加字段操作。...,重命名新表名字为旧表名字 不过这里需要注意,执行第三步时候,可能这个过程也需要时间,这个时候有新数据进来,所以原来表如果有字段记录了数据写入时间就最好了,可以找到执行这一步操作之后数据,...不过还是会可能损失极少量数据。 所以,如果表数据特别大,同时又要保证数据完整,最好停机操作。...地址 P=3306 连接mysql端口号 D= 连接mysql库名 t= 连接mysql表名 –alter 修改表结构语句...chmod +x pt.sh 3.添加字段添加字段SQL语句为: ALTER TABLE `tb_test` ADD COLUMN `column1`tinyint(4) DEFAULT NULL

    25.4K45

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

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

    2.2K60

    如何为MySQL主键添加字段

    如何为MySQL主键添加字段? 今天有个同事问了个不常见问题,就是修改主键字段,给既定主键添加一个字段应该用什么操作。...说实话,这类操作,一般是不会发生在线上,因为线上主键,通常情况下,会建议业务用自增id值,因为自增id值既满足了主键唯一性,又可以防止过多数据页分裂操作,而且它范围比较广,占用字节数量也比较少...但实际情况是,业务使用业务字段做主键,而且要给这个主键加个字段,好在这张表数据量不多,这里我做了一个模拟 23:12:51> create table test( -> task_id int...这里我们主键是task_id字段,现在我们需求是将主键修改成task_id和aaa组合字段。...上面这个SQL,因为要重新组织主键,所以它代价比较高,在数据量小表里面可以执行,如果你表已经有好几百万行数据,为避免对表正常访问产生影响,请使用pt-osc或者ght-ost工具来完成这个操作。

    6.8K20

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

    作者:kay 擅长 Oracle、MySQL、PostgresSQL 等多种数据库领域; 擅长 Oracle、MySQL 性能优化、数据库架构设计、数据库故障修复、数据迁移以及恢复; 热衷于研究 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个字节。

    5.8K10

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

    不知道大家第一眼看标题时候有没有理解,什么是“字段类型长度”,这里我来解释下,就比如我们在MySQL建表时候,比如下面这个建表语句:CREATE TABLE `user` ( `id` int(10...,而每个类型+数字就是该字段类型长度,比如int(10)就是该字段是int类型长度为10,这下大家应该能理解什么是MySQL字段类型长度了吧(其实在后续讲解中会发现这个并不是长度,而是宽度)那么重点问题来了...,每一种类型后面括号里数字都有什么含义呢,下面我们来剖析下:首先MySQL字段都支持哪些类型?...(3)提供了相关操作JSON类型数据函数1.3 数据类型说明MySQL数据类型长度是固定,而不是由建表时指定,unsigned表示无符号类型CREATE TABLE `table01` ( `...N长度申请内存VARCHAR(N),如果N=256则使用两个字节来存储长度3 结论MySQL建表语法再次说明:create table 表名( 字段

    1.3K11

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

    1、今天发生了一件有意思事情,传输数据大于标准定字段长度了,我把字段长度调大了,把数据传输过来了。...谁知道,人家数据不符合标准,要删除了重新搞,那么你如何将超长数据删除呢,或者将超长数据查询出来。   ...答:剧透一下,其实使用char_length()查询出来,就可以把这些删除掉,然后将调大字段长度调小就行了。备注,我实际操作字段都是中文字符哈,别再写教程写出血案了。 ?...2、先了解一下,Mysql中length()、char_length()区别。 1)、length():mysql里面的length()函数是一个用来获取字符串长度内置函数。   ...2)、char_length():在mysql内置函数里面查看字符串长度还有一个函数是char_length()。

    4.3K10

    MySQL字段类型_mysql数据字段类型

    大家好,又见面了,我是你们朋友全栈君。 前言: 要了解一个数据库,我们必须了解其支持数据类型。MySQL 支持大量字段类型,其中常用也有很多。...2.字符串类型 字符串类型也经常用到,常用几个类型如下表: 其中 char 和 varchar 是最常用到。char 类型是定长MySQL 总是根据定义字符串长度分配足够空间。...我们在定义字段最大长度时应该按需分配,提前做好预估,能使用 varchar 类型就尽量不使用 text 类型。除非有存储长文本数据需求时,再考虑使用 text 类型。...不过值得注意是,TIMESTAMP 字段数据会随着系统时区而改变但 DATETIME 字段数据不会。总体来说 DATETIME 使用范围更广。...总结: 本篇文章主要介绍了 MySQL 中常用字段类型,平时用到字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    19.5K10

    常用数据字段类型及大小比较_sql字段长度

    Oracle/MSSQL/Mysql 常用数据字段类型及大小 ORACLE数据类型 常用数据字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串...BLOB 二进制数据 最大长度4G CLOB 字符数据 最大长度4G NCLOB 根据字符集而定字符数据 最大长度4G BFILE 存放在数据库外二进制数据 最大长度4G ROWID...SQL SERVER字段类型说明   以下为SQL SERVER7.0以上版本字段类型说明。SQL SERVER6.5字段类型说明请参考SQL SERVER提供说明。...字段类型描述 bit 0或1整型数字 int 从-2^31(-2,147,483,648)到2^31(2,147,483,647)整型数字 smallint 从-2^15(-32,768...SYBASE字段类型如下: 字段类型描述字段长度及其缺省值 Char(Size) 用于保存定长(Size)字节字符串数据

    3.7K10

    【问答】MySQL如何给字段添加注释

    下面的命令行或则图形界面均在软件Navicat中运行 MySQL 测试版本: 5.5.39 问:MySQL如何给字段添加注释?...答:给MySQL字段添加注释有两种方式 ① 创建表时候添加 create table student( s_no int not null comment '学号', s_name varchar...(100) comment '姓名' ) comment = '学生' 如上面的创建表语句,字段 s_no 和 s_name 后面通过关键字 comment 来给对应字段添加注释。...comment 关键字后面用单引号括起来就是你需要给这个字段添加注释。...② 当你已经创建好表了,但是发现忘记注释或者注释内容需要改变时候,你可以通过以下命令去更改 student 表 s_name 字段注释 alter table student modify

    7.9K10

    Mysql千万级大表添加字段锁表?

    MySQL 大表数据添加字段 有时候我们在测试环境给一个表添加字段,但是在线上环境添加一个字段,却极其慢。...原因是线上数据库一般会存有大量数据(百万级,千万级),基本添加字段方式在线上数据库已经不太合适了。...,导致新表数据流失不完整 总结 生产环境MySQL添加或修改字段主要通过如下四种方式进行,实际使用中还有很多注意事项 直接添加 如果该表读写不频繁,数据量较小(通常1G以内或百万以内),直接添加即可(可以了解一下...,复制历史数据期间数据也会同步至新表,最后删除原表,将新表重命名为原表表名,实现字段添加 先在从库添加 再进行主从切换 如果一张表数据量大且是热表(读写特别频繁),则可以考虑先在从库添加,再进行主从切换...,切换后再将其他几个节点上添加字段 将现有MySQL版本5.7升级到8.0.12之后版本 相关文章 Mysql事务 Mysql索引 Mysql通过binlog恢复数据

    10.5K30
    领券