您现在的位置是:首页 > 正文

乐观锁解决并发下单问题和事务隔离级别的修改

2024-02-01 03:26:59阅读 1

一.乐观锁结果并发下单问题

1.查询商品
查询原有库存
查询原有销量
2.以商品和原有库存作为条件,用result接收结果,result=0,表示被修改,下单失败,若不等于零表示原始库存中途未被修改,则更新库存和销量
3.如果遇到网络信号不好,那么用户只买一个但是库存100时也会下单失败
购买成功包括两点:
库存大于购买商品数
库存没有被他人修改
4.所以使用无线循环,如果库存被改动,循环下单,直到库存不足,跳出循环
5.事务隔离级别决定了是否能查到已被修改后的库存数据
所以修改事务隔离级别为Read committed读取已提交

#循环下单直到库存不足
  while True:
  	#查询商品
  	sku=SKU.object.get(id=sku_id)
  	#查询商品原始库存
  	origin_stock=sku.stock
  	origin_sales=sku.sales
  	.....其他操作
	#乐观锁更新数据库销量
	new_stock=origin_stock - sku_count
	new_sales=origin_sales + sku_count	
	result=SKU.objects.fllter(id=sku_id,sku.stock=origin_stock)
		.update(stock=new_stock,sales=new_sales)
	#如果下单失败但是库存足够,继续下单,直到下单成功
	if result==0:
		continue
	#下单成功跳出循环
	break
	

	

二.修改事务隔离级别

MySQL事务隔离级别修改
隔离级别指,在处理同一个数据的多个事务中,一个事务修改数据后,其他事务能否看到修改后结果
默认使用可重复读( Repeatable read)。
修改:

cd /etc/mysql/mysql.conf.d/
ls
sudo vim mysql.cnf
105 transaction-isolation=Read committed

Read committed:读取已提交,其他事务提交了对数据的修改后,本事务就能读取到修改后的数据值

网站文章

  • 论文阅读-面向图像自动语句标注的注意力反馈模型

    论文阅读-面向图像自动语句标注的注意力反馈模型

    文献:吕凡,胡伏原,张艳宁,夏振平,盛胜利.面向图像自动语句标注的注意力反馈模型[J].计算机辅助设计与图形学学报,2019,31(07):1122-1129.主要工作在传统注意力基础上引入反馈机制,利用关注信息的图像特征指导文本生成,借助文本中的关注信息进一步修正图像中的关注区域,解决了传统注意力机制的注意分散问题。技术两种图像语义提取常用技术与ATTENTION结合1.基于全图:...

    2024-02-01 03:26:42
  • (一)u-boot简介

    u-boot简介简介u-boot官方资料简介 U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios...

    2024-02-01 03:26:25
  • [mysql] Access denied for user ‘root’@’localhost’ (using password: YES) 的问题解决:恢复root权限

    故障现象:ROOT账户可以连接数据库,但在操作时候或再次登陆出现如下提示:Access denied for user ‘root’@‘localhost’ (using password: YES)...

    2024-02-01 03:25:55
  • 27 类深度学习主要神经网络

    27 类深度学习主要神经网络

    1. 感知器(Perceptron(P))  感知器模型也称为单层神经网络。这个神经网络只包含两层: 输入层输出层 这种类型的神经网络没有隐藏层。它接受输入并计算每个节点的加权。然后,它使用激活函数...

    2024-02-01 03:25:50
  • windows11中vmware安装centos虚拟机后蓝屏,搜不到wifi

    windows11中vmware安装centos虚拟机后蓝屏,搜不到wifi

    Windows11搜不到wifi

    2024-02-01 03:25:44
  • shell 希尔排序【排序算法篇】

    shell 希尔排序【排序算法篇】

    希尔排序此算法建立在插入排序上。首先,将要排序的数组,按照一定的增量分出子序列,我们对子序列利用插入排序算法排序。然后,增量=增量/2,在按照增量分出子序列,对它们进行排序。如此往复,直到增量=1时,意味着分不出子序列了,数组已经有序。增量可以看作子序列中各个节点的距离,以及子序列的个数。...

    2024-02-01 03:25:16
  • SRS流媒体服务进行视频推送拉取

    SRS流媒体服务进行视频推送拉取

    SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。Note: 简单的单节点架构,适用于大多数场景你可以推拉多路流到SRS,不需要特殊的设置,按照前面的步骤运行SRS后,改变推拉流的URL就可以。streamid=#!

    2024-02-01 03:25:11
  • 7. docker——镜像

    7. docker——镜像

    1. 概述 镜像是一种轻量级、可自行的独立软件包,用来打包软件运行环境和基于运行环境快发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。1.1UnionFS(...

    2024-02-01 03:25:05
  • Kotlin的数据类,枚举类,单例类

    Kotlin的数据类,枚举类,单例类

    数据类 Kotlin 新增 数据类的概念,使用data关键字声明class,不用手动写一堆 getter和setter方法, 自动生成通用方法的默认实现 data class UserInfoBean( val authStatus: String, // 认证状态 val authTime: String, //认证时间 va...

    2024-02-01 03:24:35
  • 前端 mock 接口响应数据

    前端 mock 接口响应数据

    前端mock数据

    2024-02-01 03:24:29