关于 MySQL 5.7 升级 8.0 时 INT 显示问题分析

本案例中的客户是从 MySQL 5.7.36 升级到 MySQL 8.0.35,升级完成后业务反馈表结构有变化,升级前某个表的字段数据类型为 INT(10),升级后变成了 INT,客户咨询有什么影响没有?

作者:张昊,DBA,主要负责 MySQL 故障处理、DMP 产品支持,擅长 MySQL,喜欢打球唱歌

爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文约 1200 字,预计阅读需要 3 分钟。

背景

MySQL 5.7 已经停止更新了,最新的版本是 5.7.44。很多客户为了安全或者新特性的需求要对存量的 MySQL 5.7 进行大版本升级。

本案例中的客户是从 MySQL 5.7.36 升级到 MySQL 8.0.35,升级完成后业务反馈表结构有变化,升级前某个表的字段数据类型为 INT(10),升级后变成了 INT,客户咨询有什么影响没有?

故事开始前,先问个小问题,MySQL 中 INT(num) 的作用是什么?能够限制插入的数据范围吗?如何正确的使用呢?

阅读之前大家先把答案默念一遍,然后根据下面的测试结果对比一下,是不是我们想的那样?

本地复现

升级前的表结构和数据

mysql> show create table t2\G
*************************** 1. row ***************************
       Table: t2
Create Table: CREATE TABLE `t2` (
  `id1` int(4) unsigned DEFAULT NULL,
  `id2` int(10) unsigned DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

mysql> insert into t2 values(1,1),(10,10),(100,100),(1000,1000),(12345,12345);
Query OK, 5 rows affected (0.01 sec)
Rec
### MySQL 5.78.0 版本差异 #### 数据字典架构变更 MySQL 8引入了一个全新的数据字典架构,该架构用于更高效地管理数据库的元数据信息。这种变化不仅提升了查询效率,还增强了系统的稳定性和可维护性[^3]。 #### 性能改进 相较于MySQL 5.7,在多个方面实现了显著的性能增强: - **查询执行速度加快**:通过优化内部算法以及减少不必要的锁争用,使得复杂SQL语句能够更快完成处理。 - **索引操作加速**:新增加的功能允许创建不可见索引(invisible indexes),这有助于测试不同索引配置而不必频繁修改表结构;同支持降序索引(descending index),提高了某些特定场景下的检索效能。 - **JSON字段的支持加强**:对JSON类型的存储和访问进行了多项改善,包括但不限于路径表达式的解析、虚拟列自动生成等功能,极大地方便了开发者利用此特性构建应用逻辑。 ```sql CREATE TABLE test ( id INT NOT NULL, data JSON, INDEX idx_data ((CAST(data->>'$.name' AS CHAR(10)))) ); ``` #### 安全机制强化 为了应对日益严峻的信息安全挑战,新版中加入了更多保护措施来保障用户的数据隐私与系统安全性: - 默认启用强密码策略; - 支持多因素认证协议; - 加密传输通道选项更加灵活多样。 --- ### 升级注意事项 当计划从MySQL 5.7迁移到8.0需要注意以下几个要点: - **兼容性验证** 需要仔细检查现有应用程序代码是否依赖于已被废弃或行为有所改变的功能点,并提前做好相应的调整工作。 - **备份恢复方案制定** 在正式实施迁移之前务必进行全面完整的数据库备份,以便出现问题可以迅速回滚至原始状态。 - **学习新特性的最佳实践** 掌握诸如窗口函数(window functions)、公共表表达式(common table expressions, CTEs)等高级语法的应用技巧,从而充分发挥出MySQL 8的优势所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值