线上问题得解决

问题: 最近碰到一个比较棘手但是比较低级的问题,一直没有找到原因,苦找了两天才发现问题。场景就是订单做了某一个操作之后(比如拣货完成)然后到下一步(下道口)。

但是线上几万笔订单 ,只有偶尔几笔发现,到了下道口操作,但是拣货明细数据丢失。百思不得其解

背景:A订单,拣货操作后,去下道口(改订单状态以及明细),下道口完成生成配货任务量。

现在定义的pda操作是8秒钟。

触发流程。点击拣货完成。然后跳到下道口页面 ,拣货完成接口执行了十几秒。就会导致前端报超时(其实后端处理中,此时订单状态已变成下道口中,但是拣货数量没有改变成正确的还是0,这两个步骤刚好卡在8秒前后),然后进明细还会有一个操作就是吧拣货为0的货号自动下道口

超时之后pda操作人员会立即再点击下道口操作。 此时订单状态已经变成下道口了,但是明细表没有改变状态以及下道口数量。所以第二次点击会报订单状态待下道口但是明细都已经下道口完成,就会一直报找到不可以下道口的货号

最终原因就是数据库执行时间过长(那段时间数据库有问题  ,然后隔离级别又是默认的 可重复读)然后后面的下道口页面也没有加 读已提交注解。所以偶尔就有问题

这里说一下  mysql的默认隔离级别  “可重复读” 和 “读未提交” 和’‘读已提交’‘有什么区别

读未提交:在此隔离级别下,其他事务修改了数据 但是还没有提交, 该事务也能读取到

读提交:在此隔离级别下,一个事务只能看到其他事务已提交的更改。这意味着,同一个事务中的多次查询可能会看到不同的数据,因为其他事务在此期间可能已经提交了更改。

可重复读:在此隔离级别下,一个事务启动时看到的数据是一致的。即使其他事务提交了更改,这些更改对当前事务也不可见,确保事务内的多次查询结果一致。(默认的)

相关推荐

  1. 线问题解决

    2023-12-12 07:32:03       58 阅读
  2. 线问题复盘记录

    2023-12-12 07:32:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-12 07:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-12 07:32:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-12 07:32:03       82 阅读
  4. Python语言-面向对象

    2023-12-12 07:32:03       91 阅读

热门阅读

  1. Spring-xml版本

    2023-12-12 07:32:03       67 阅读
  2. Mysql mybatis 语法示例

    2023-12-12 07:32:03       68 阅读
  3. Docker与K8s的区别

    2023-12-12 07:32:03       70 阅读
  4. x的平方根算法(leetcode第69题)

    2023-12-12 07:32:03       63 阅读
  5. Flask存储在内存中的密钥被读取

    2023-12-12 07:32:03       58 阅读
  6. MATLAB 2021b 安装教程

    2023-12-12 07:32:03       78 阅读
  7. 微服务学习二

    2023-12-12 07:32:03       72 阅读
  8. 洛谷 P8628 [蓝桥杯 2015 国 AC] 穿越雷区

    2023-12-12 07:32:03       70 阅读
  9. 【Fiddler】IDEA配置Fiddler

    2023-12-12 07:32:03       52 阅读
  10. 面试经典150题(14)

    2023-12-12 07:32:03       62 阅读