千家信息网

mysql5.7 InnoDB存储引擎方面的提升有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关 mysql5.7 InnoDB存储引擎方面的提升有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。版本: mysql5
千家信息网最后更新 2026年10月31日mysql5.7 InnoDB存储引擎方面的提升有哪些

这篇文章将为大家详细讲解有关 mysql5.7 InnoDB存储引擎方面的提升有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

版本: mysql5.7.16

一 : 安全性
① 初始化数据库方式的变化
老版本: mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/opt/mysql
mysql5.7 : mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/opt/mysql (会生成一个临时密码,若不想要密码则用参数 --initialize-insecure)
② 可以通过 mysql_ssl_ras_setup 来开启 ssl
③ sql_mode 由mysql5.6的默认空 变为默认 STRICT_TRANS_TABLES

二 : InnoDB存储引擎方面的提升
1. 更改索引名不锁表,直接更改
alter table xxx rename index ix_a to ix_b
2. Online DDL 对 字段属性为 varchar 更改的改进
1> varchar(20) --> varchar(40) 不锁表直接更改
2> 40 --> 20 copy方法锁表
3> 256是个临界值,这里指字节 , 不能跨越 如 varchar(30) --> varchar(320),则以copy的方式ddl,锁表
4> 对于char 和 int来说还是老方法,即 copy 的算法进行ddl,锁表
另 : 5.1和5.5 对于index的增删用 algorithm = inplace方法 不锁表;5.6支持对于 字段的增删使用inplace方法。对于主键的更改仍然使用copy算法来实现。
3. 全文索引对中文的支持
1> mysql5.6 开始针对于innodb才有全文索引,但是不支持 中文,日文,韩文等。
2> select * from xxx where match(content) against('+horand -生日快乐' in boolean mode ); 表示查找有'horand' 没有 '生日快乐'的文档。
3> 新增参数 ngram_token_size 用于检索中文单词的个数。与5.6设置单词长度的几个参数互斥
4. BP 预热的改进
1> mysql5.6 由 i_b_p_dump_at_shutdown=1 和 i_b_p_load_at_startup=1 来实现相关预热功能(mysql得正常关闭)
2> mysql5.7 添加参数 i_b_p_dump_pct=xx 来控制 dump所有热数据的百分比(从头到尾),默认25,可以在1~100之间。mysql5.6是全部。
适当降低该值 可以 减少关闭和启动mysql的时间
5. 在线调整 BP
1> 会阻塞用户请求,建议在业务低峰期进行
6. 回收undo log 空间
1> mysql5.6 开始可以指定 undo log的文件目录(innodb_undo_direcrory),个数(innodb_undo_tablespace)以及大小(innodb_undo_logs=128 回滚段数量)
2> mysql5.7 添加两个参数控制undo log 的回收 ,innodb_undo_log_truncate=1(开启回收机制),innodb_max_undo_log_size=1G(文件大小超过1G触发回收机制)
7. 通用表空间(开启 innodb_file_per_table=1)
1> create tablespace ts_name
2> create table xxx(id int )engine=innodb TABLESPACE ts_name
3> 多个表公用一个ibd文件 和 ibdata1在一个目录下
8. 独立表空间指定存放路径
1> 5.6和5.7 create table t2(id int ) DATA DIRECTORY='/tmp' 对应的表数据文件idb生成一个软连接 连接到/tmp目录下
9. 迁移 某个innodb表(开启innodb_file_per_table=1,mysql5.6 5.7)
1> FLUSH TABLES xxx for EXPORT
2> xxx.frm xxx.idb xxx.cfg(存储了数据字典信息,经测试不要也可) 将三个文件copy到新数据库下
3> 更改三个文件的属主为 mysql:mysql
4> alter table xxx discart tablespace
5> alter table xxx import tablespace
6> check table xxx;
10. 直接修改redo log的大小
mysql5.5(ib_logfile0 size 最大支持4G)以及之前
1> set global innodb_fast_shutdown=0
2> mysqladmin shutdown
3> 修改 innodb_log_file_size 的大小
4> 移除老的 ib_logfile0 ib_logfile1
5> mysqld_safe & 启动mysql
mysql5.6 && mysql5.7(ib_logfile size 最大提升到几十个GB)
1> shutdown
2> 修改配置文件innodb_log_file_size
3> mysqld_safe & 启动
11. 死锁打印到错误日志
1> mysql5.5以及之前版本
show engine innodb status\G
2> mysql5.6 && mysql5.7
设置参数 innodb_print_all_deadlocks=1 将死锁信息打印到err日志
12. 只读事务(5.6 5.7)
start transaction read only;
三 : SERVER 层提升
1. Json 字段类型的支持
2. 支持虚拟列(函数索引)
1> create table xxx(id int , mod_id int GENERATED Alaways as (( id % 10 )) virtual ,key 'vir_col_inx' (mod_id) )engine=innodb;
2> select * from xxx where mod_id=3; 则可以使用索引 vir_col_inx
3> 插入只能使用default方式( insert into xxx values(13,default); )
3. explain 支持 update/delete/insert
4. 记录到系统日志
server启动时 : --syslog
client 连接时: --syslog

关于 mysql5.7 InnoDB存储引擎方面的提升有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 支持 参数 数据 索引 存储 大小 方法 引擎 方面 字段 方式 日志 版本 目录 空间 中文 最大 快乐 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 互联网的科技 互联网医疗科技 互联网科技公司官网 深圳齐家互联网科技 一五八零互联网科技 科技大学互联网专业好不好 互联网 科技馆 茂名市互联网科技产业园 互联网科技有哪些公司 昊天互联网科技有限公司 苏州五指互联网络科技有限 宜昌元轩互联网科技有限公司 米聚互联网科技南京有限公司排面 科技大学互联网 伍佰万互联网科技怎么赚钱 江苏互联网科技小贷 容联科技互联网电商 北京军民互联网科技公司 优雇互联网科技有限公司 互联网络科技有限公司 互联网金融科技创新 互联网科技美容 成都玖崟互联网科技有限公司乐商圈怎么样 科技与互联网哪个更好 来此购互联网科技有限公司 翼展科技 首家互联网医院 半导体行业属于互联网高科技类吗 互联网科技手机排行榜 小牛互联网科技有限公司地址
0