我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于mysql8.x中insertignore的性能问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于mysql8.x中insertignore的性能问题

mysql 8.x中insert ignore性能问题

mysql中replace into效率很差,多进程并发一下就会锁表,所以应该用on duplicate 来做更新,这是众所周知的了。没想到insert ignore也有性能坑,记录下遇到的问题。

为了往一张表中插入初始化数据,我开了10个进程并发向数据库中使用insert ignore插入数据,每条insert ignore语句包含7行数据。没想到上线开始跑脚本以后数据库出现不少锁表。根据innodb status log来看,锁住的是表的自增id主键。

调试了半天之后发现,原来是insert ignore的时候会对插入的每一行数据取S锁做unique id的检测,同时会对主键的自增id字段加写意向锁(insert intension),在unique key较为复杂的时候,检测unique key的时候会一直占用主键的插入意向锁,其他insert ignore也想给主键id加插入意向锁,导致死锁。

以上情况是在mysql 8.x中发现的,以前用低版本的mysql似乎没遇到过相关问题,所以不清楚低版本mysql的insert ignore是否有坑,但是8.x的版本最好insert ignore不要插入多行数据,尤其是unique key比较复杂的时候(有三四个字段共同组成)

mysql insert ignore()函数

INSERT IGNORE语句

当您使用该INSERT语句向一个表中添加多行时,如果在处理过程中发生错误,则MySQL终止该语句并返回错误。结果,没有行插入到表中。

但是,如果使用该insert ignore语句,则会忽略包含导致错误的无效数据的行,并将具有有效数据的行插入表中。

insert ignore into actor values (3,'ED','CHASE','2006-02-15 12:34:33')

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于mysql8.x中insertignore的性能问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 关于高级特性的问题

1.函数装饰器有什么作用?请列举说明?  2. Python 垃圾回收机制?  3. 魔法函数 _call_怎么使用?  4. 如何判断一个对象是函数还是方法?  5. @classmethod 和 @staticmethod 用法和区别 
2023-01-31

关于要不要关闭Vista中的IPv6功能的问题

事实是,IPv6在Vista中是默认启用的。由于几乎没有人真正使用IPv6,这就提出了这样一个问题:为什么不关闭IPv6呢?为什么不关闭IPv6?反对和支持关闭IPv6功能的人实际上都有充分的理由。让我们先谈一下关闭IPv6的理由。我们都知
2023-05-25

js中关于base64编码的问题

这篇文章主要介绍了js中关于base64编码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-08

关于python中pika模块的问题

工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经中间碰到一些问题的解决方法刚开写代码的小
2023-01-30

Vue3中关于ref和reactive的问题

这篇文章主要介绍了Vue3中关于ref和reactive的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-16

关于SpringBoot3.x中spring.factories功能被移除的解决方案

这篇文章主要介绍了SpringBoot3.x中spring.factories功能被移除的解决方案,在配置好相关依赖、最小启动类和配置之后,发现项目无法启动,于是根据启动上下文日志和按行DEBUG找到原因并且在等待组件升级兼容之前进行临时性解决,需要的朋友可以参考下
2022-12-08

Android中关于FragmentA嵌套FragmentB的问题

问题描述: 在项目中Activity A中嵌套Fragment B,Fragment B中再嵌套Fragment C,如图:问题1:在点击Activity A中主菜单1进行切换时,报错Fragment C already added。 解决
2022-06-06

关于Android中ListView嵌套GridView的问题

问题 在Android开发中,遇到一个问题,是ListView嵌套GridView,需要点击整个ListView的Item进行跳转。但是在点击GridView区域时无法进行页面的跳转。这是因为GridView获得了焦点。导致点击无法跳转。
2022-06-06

编程热搜

目录