当前位置: 首页 > news >正文

厦门网站制作哪里好薇专业的销售网站

厦门网站制作哪里好薇,专业的销售网站,WordPress文章无图,英铭科技做网站和设计制作更专业记一次mysql事务并发优化 背景 事情的情况大致是这样的。一个扣减库存的业务上线以后#xff0c;隔几天会报一次错#xff0c;错误内容如下#xff1a; ERROR - exception: UncategorizedSQLException,detail:org.springframework.jdbc.UncategorizedSQ…记一次mysql事务并发优化 背景 事情的情况大致是这样的。一个扣减库存的业务上线以后隔几天会报一次错错误内容如下 ERROR - exception: UncategorizedSQLException,detail:org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLQueryInterruptedException: Query execution was interrupted ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: UPDATE a SET stock stock - ? WHERE id ? and stock ? ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLQueryInterruptedException: Query execution was interrupted ; uncategorized SQLException for SQL []; SQL state [70100]; error code [1317]; Query execution was interrupted; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLQueryInterruptedException: Query execution was interrupted at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) at com.sun.proxy.$Proxy64.update(null:-1) at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)这块业务之前一直都是正常的迁移以后做的唯一大的改动就是加了java事务注解所以怀疑是否和事务有关。 排查过程 首先现寻找报错的关键信息第一个看到的是UncategorizedSQLException。查看这个类的源代码说明如下 /*** Exception thrown when we cant classify a SQLException into* one of our generic data access exceptions.** author Rod Johnson* author Juergen Hoeller*/可以看到这个类是Spring无法归类的一个SQL异常所以从这个异常我们是看不出什么内容的继续往下。 MySQLQueryInterruptedException: Query execution was interrupted 发现这个执行是超时被kill了。一般来讲我们公司dba设置的mysql超时时间是500ms。是否是因为数据量太大没有走到索引才导致update操作执行时间太长被kill了呢看一下update语句里 UPDATE a SET stock stock - ? WHERE id ? and stock ? 马上排除了这个可能性。因为where条件里有id查询必定会走主键索引不可能没有走到索引。那会是什么原因呢 上面我们提到这个业务操作里是开启了事务的还原一下大体的执行情况。 start transaction; UPDATE a SET stock stock - 1 WHERE id 100 and stock 1;INSERT INTO a (num) values (1); commit;查了一下当时的日志发现1秒内有大约200条请求对一条记录做更新库存的操作。线索渐渐清晰起来了事故现场大致应该是这样的 结论 由于开启了事务在高并发地对一条记录进行更新的情况下多个请求会进入排队系统。由于锁的竞争是不公平的当多个事务同时对一条记录进行更新时极端情况下就可能会出现一个更新操作进去排队系统以后一直拿不到锁超过500ms被kill了。 细节分析 以上的业务操作update会先申请行锁拿到行锁以后进行更新更新完以后会执行插入操作。那么在插入操作的时候是否需要申请锁呢答案是肯定的不过这里的插入操作使用的是自增锁。那自增锁是什么级别的锁呢如果存在自增字段MySQL会维护一个自增锁和自增锁相关的一个参数为5.1.22版本之后加入innodb_autoinc_lock_mode可以设定3个值0120traditonal 每次都会产生表锁1consecutive 会产生一个轻量锁simple insert会获得批量的锁保证连续插入2interleaved 不会锁表来一个处理一个并发最高Myisam引擎均为traditionalInnoDB默认为1轻量锁。所以在InnoDB的情况下这里的insert操作的性能比update操作更高。 优化 有了以上结论以后那如何优化呢 最简单的方案就是减少持有锁的时间处理方式非常简单将更新操作放到最后执行从而缩短更新锁的持有时间避免类似的超时问题。 start transaction;INSERT INTO a (num) values (1); UPDATE a SET stock stock - 1 WHERE id 100 and stock 1; commit;----------------------------------------------------------------------------------- offer突击训练营简介 1针对不知道怎么面试面试没有信心的小伙伴我们会给你一个offer保障。 2我们会监督你15-20天内把面试体系技术点掌握至少7成这样足够你去找到满意的工作了。 3我们是面向面试学习指导不会带你们去写代码会把项目真实开发的迭代过程和技术细节如何实现业务功能都详细教清楚你能在面试中流畅表达清楚就行了项目经验你不用担心(技术老师提供的真实项目经验肯定拿的出手)自己学和别人带着系统学效率完全不一样。 详情请点击这里offer突击训练营给你一个offer的保障求职跳槽的看过来
http://www.hkea.cn/news/14593061/

相关文章:

  • 网站不备案可以吗南昌网站建设开发团队
  • 寿光营销型网站建设交易网站建设
  • 企业门户网站建设思路百度网首页
  • 北京网站优化什么价格大型网络游戏排行榜前十
  • 吴江建设局房产网站兼职学网页设计怎么样
  • 金华网站建设方案开发自己架设网站
  • php语言入门seo助手
  • 南昌企业建设网站设计浅析企业网络营销推广方法
  • 做网站会后期维护吗无锡住房和城乡建设部网站
  • 十大ppt模板免费下载网站农业网站 源码
  • 门户网站是网络表达吗定制网站费用
  • 设计上海2023展会时间济宁优化推广公司
  • 江苏恒健建设集团有限公司网站京东网站项目建设规划书
  • 江苏省网站建设哪些网站做婚纱摄影
  • 西局网站建设谈谈我认为的网络营销是什么
  • 摄影网站建设策划书wordpress游客投稿
  • 免费网站建站系统电子商务网站建设实训报告文章
  • dedecms网站地图制作网络营销的特点举例说明
  • 做网站与网页有什么区别个人注册网址怎么注册
  • 网站建设的后期维护问题南京科技网站设计多少钱
  • 嘉兴网站推广wordpress更换IP
  • 贸易公司 网站 扶持广州房产网
  • 郑州模板建站系统网站建设 赚钱吗
  • 上饶专业的企业网站开发公司企业网站的推广阶段和特点
  • 北京高端网站建设工作wordpress视频类模板
  • 网站怎么排版删除自豪的采用wordpress
  • 放弃wordpress珠海百度推广优化排名
  • 简约的网站设计上海网络广告公司
  • 做内容网站网站内容建设运维服务器
  • 怎样做网站信箱传媒公司简介范文