SQL5.7版本索引超长

SQL5.7版本索引超长
本次使用库为Mysql库,版本为:5.7.34,编码集为UTF8,存储引擎为innodb
问题概述:
从云上导入SQL文件后,导入库发生异常索引超长,感觉很奇怪,线上确实是有字段长度为255的字段联合组成唯一索引,但是线上同版本的库却正常建立了表

百度的结果是

在MySQL5.5版本,引入了innodb_large_prefix,用来禁用大型前缀索引,以便与不支持大索引键前缀的早期版本的InnoDB兼容
开启innodb_large_prefix可以使单索引的长度限制达到3072字节(但是联合索引总长度限制还是3072字节),禁用时单索引的长度限制为767字节
在MySQL5.5版本与MySQL5.6版本,innodb_large_prefix是默认关闭的,在MySQL5.7及以上版本则默认开启

查配置文件后确实没有innodb_large_prefix项的配置,版本是5.7.34,那该项应该是自动开启
既然不是该项,应该是别的参数导致了限制了大小
解决:
innodb_page_size = 8K -------------->innodb_page_size = 16K
innodb_page_size
该参数是先将需要写入的数据写到内中,再从内存写到磁盘,这个参数就是控制这块内存的大小
如果内存是16K那就是一次内存IO光是虚拟地址到物理地址的转换就要去内存查4次页表,再算上真正的内存访问,需要5次内存IO才能获取一个内存数据。
建议从源头上,也就是字段的长度通过合理的值设置避免出现该异常

innodb_page_size参数的具体理解请看:
MySQL innodb_page_size
大神讲的很清楚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值