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

(脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别)、( 什么是qps,tps,并发量,pv,uv)、(什么是接口幂等性问题,如何解决?)

1 脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么?
2 什么是qps,tps,并发量,pv,uv
3 什么是接口幂等性问题,如何解决?

1 脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么?

脏读(Dirty Read),不可重复读(Non-Repeatable Read),和幻读(Phantom Read)是
数据库中事务隔离级别引发的问题,它们描述了不同类型的并发读取问题。### 1. 脏读(Dirty Read):**定义:** 脏读是指一个事务读取了另一个事务未提交的数据。如果事务 A 修改了一行数据,而事务 B 读取了这个未提交的修改,如果事务 A 回滚,那么事务 B 读取到的数据就是无效的。**例子:** 
1. 事务 A 开始,更新了某行数据但还未提交。
2. 事务 B 读取了这行数据。
3. 事务 A 回滚。
4. 事务 B 读取到的数据是无效的,因为事务 A 的更新被撤销了。### 2. 不可重复读(Non-Repeatable Read):**定义:** 不可重复读是指在一个事务内,同一查询在不同时间点返回了不同的结果。这是因为在两次查询之间,另一个事务修改了相同的数据。**例子:**
1. 事务 A 开始,读取某行数据。
2. 事务 B 开始,更新或删除了这行数据并提交。
3. 事务 A 再次读取相同的数据,但结果已经不同了。### 3. 幻读(Phantom Read):**定义:** 幻读是指在一个事务内,同一查询在不同时间点返回了不同数量的行。这是因为在两次查询之间,另一个事务插入或删除了数据,导致查询结果不一致。**例子:**
1. 事务 A 开始,根据某个条件查询了一批数据。
2. 事务 B 开始,插入了符合条件的新数据,并提交。
3. 事务 A 再次查询相同条件下的数据,结果行数不同了。### 事务隔离级别:
- **读未提交(Read Uncommitted):** 允许脏读、不可重复读和幻读。
- **读已提交(Read Committed):** 防止脏读,但允许不可重复读和幻读。
- **可重复读(Repeatable Read):** 防止脏读和不可重复读,但允许幻读。
- **串行化(Serializable):** 防止脏读、不可重复读和幻读,是最高隔离级别。选择合适的隔离级别取决于应用的需求和性能要求。更高的隔离级别通常伴随着更多的锁和性能开销。
在 MySQL 中,有四种事务隔离级别,分别是:- **读未提交(Read Uncommitted):** 允许事务读取尚未提交的更改。这可能导致脏读、不可重复读和幻读。- **读已提交(Read Committed):** 允许事务读取已经提交的更改。避免了脏读,但仍可能有不可重复读和幻读。- **可重复读(Repeatable Read):** 对相同字段的多次读取是一致的,除非事务本身进行写操作。避免了脏读和不可重复读,但仍可能有幻读。- **串行化(Serializable):** 最高的隔离级别,通过对读和写加锁来防止所有并发问题,包括脏读、不可重复读和幻读。MySQL 5.7 默认的隔离级别是 **可重复读**

事务什么?作用是什么?

**事务**是数据库管理系统(DBMS)执行的一个操作序列,被视为一个逻辑工作单元,
要么完全执行,要么完全不执行,而且是一个不可分割的工作单位。事务具有四个特性,通常称为ACID属性:1. **原子性(Atomicity):** 事务是一个不可分割的工作单元,要么全部执行,要么全部不执行。如果事务中的任何操作失败,整个事务都会被回滚到初始状态。
2. **一致性(Consistency):** 事务在执行前后数据库必须保持一致性状态。这意味着事务执行后,数据库从一个一致性状态转变为另一个一致性状态。
3. **隔离性(Isolation):** 各个事务的执行互相独立,一个事务的执行不能被其他事务干扰。事务的隔离性能防止并发执行的事务之间出现数据混乱。
4. **持久性(Durability):** 一旦事务被提交,对数据库中的数据的改变是永久性的。即使在系统崩溃之后,数据库状态也能够恢复到事务提交的状态。### 作用:1. **确保数据一致性:** 事务能够保证在其运行过程中数据库始终处于一致的状态。如果事务执行失败,数据库将回滚到事务开始前的状态,不会留下部分执行的结果。
2. **并发控制:** 事务隔离性确保了并发执行的事务之间不会相互干扰,防止了数据的混乱。数据库系统需要保证并发事务的执行效率,同时又要保证数据的一致性。
3. **持久性:** 事务的持久性确保了数据一旦被提交就会永久保存在数据库中,即使系统崩溃也能够通过日志等手段进行恢复。
4. **错误恢复:** 当系统发生错误或者事务执行失败时,事务可以被回滚,使数据库恢复到一个一致的状态。事务是数据库系统中保障数据完整性和一致性的一个重要机制,特别在多用户、高并发的数据库环境中,
事务的概念和ACID属性变得尤为重要。

2 什么是qps,tps,并发量,pv,uv

**QPS(Queries Per Second):** 表示每秒查询次数,通常用于衡量系统的查询处理能力。
**TPS(Transactions Per Second):** 表示每秒事务处理的数量,通常用于衡量系统的事务处理能力。
**并发量(Concurrency):** 表示系统同时处理的请求数量。高并发指系统能够同时处理大量请求。QPS = 并发量 / 平均响应时间并发量 = QPS * 平均响应时间例如当前系统QPS为1w,每个请求的响应时间都是2s,那么并发量就是2w 
**PV(Page Views):** 表示页面浏览量,即网站在一段时间内被访问的总次数。
**UV(Unique Visitors):** 表示独立访客数量,即在一段时间内访问网站的不同访客数量。**DAU(日活)**DAU(Daily Active User),日活跃用户数量。常用于反映网站、app、网游的运营情况。DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),与UV概念相似**MAU(月活)**MAU(Month Active User):月活跃用户数量,指网站、app等去重后的月活跃用户数量

2.1 模拟 QPS 和并发量

import time
import threading
from queue import Queue# 模拟查询的函数
def query():# 模拟查询需要的时间time.sleep(0.1)# 模拟 QPS 和并发量
def simulate_qps_and_concurrency(qps, concurrency):# 使用队列模拟并发请求request_queue = Queue()# 启动并发线程def worker():while True:request = request_queue.get()query()  # 执行查询request_queue.task_done()for _ in range(concurrency):t = threading.Thread(target=worker)t.daemon = Truet.start()# 模拟 QPSstart_time = time.time()for _ in range(qps):request_queue.put("query")# 等待所有查询完成request_queue.join()# 计算消耗的时间elapsed_time = time.time() - start_timeprint(f"QPS: {qps}, Concurrency: {concurrency}, Elapsed Time: {elapsed_time:.2f} seconds")# 测试
simulate_qps_and_concurrency(qps=10, concurrency=5)

3 什么是接口幂等性问题,如何解决?

- **问题描述:** 接口幂等性是指同一请求的重复执行不会产生不同的效果,即无论调用一次还是多次,系统的状态都是一致的。-接口幂等性:无论调用多少次,产生的效果是一样的-get 获取数据天然幂等-put 修改数据天然幂等-修改库存(数字加减):不幂等-delete 删除 天然幂等-post 新增数据,会出现不幂等的情况,要把它做成幂等性的- **解决方案:**1. **唯一标识符:** 为每个请求生成一个唯一标识符,通过这个标识符来判断请求是否已经被处理。-唯一ID(unique):调用接口时,生成一个唯一id,redis将数据保存到集合中(去重),存在即处理过。-唯一主键:这个机制是利用了数据库的主键唯一约束的特性,解决了在insert场景时幂等问题。但主键的要求不是自增的主键,这样就需要业务生成全局唯一的主键2. **幂等接口设计:** 接口本身应该设计成幂等的,即多次调用不会产生额外的影响。-防重表:使用订单号orderNo做为去重表的唯一索引,把唯一索引插入去重表,再进行业务操作,且他们在同一个事务中。这个保证了重复请求时,因为去重表有唯一约束,导致请求失败,避免了幂等问题。这里要注意的是,去重表和业务表应该在同一库中,这样就保证了在同一个事务,即使业务操作失败了,也会把去重表的数据回滚。这个很好的保证了数据一致性。3. **使用 Token:** 在请求中包含一个令牌,服务器验证令牌的有效性,避免重复执行。1、下单接口的前一个接口,只要一访问,后端生成一个随机字符串,存到redis中,把随机字符串返回给前端。2、然后调用业务接口请求时,把随机数字符串携带过去,一般放在请求头部。3、服务器判断随机字符串是否存在redis中,存在表示第一次请求,然后redis删除随机字符串,继续执行业务。4、如果判断随机字符串不存在redis中,就表示是重复操作,直接返回重复标记给client,这样就保证了业务代码,不被重复执行。4. **数据库乐观锁:** 在数据库层面使用乐观锁机制,确保同一数据项在同一时间只能被处理一次。保证接口的幂等性对于处理因网络问题、重试或其他原因导致的重复请求是非常重要的。

3.1 通过添加唯一标识符保证接口的幂等性

import uuidclass IdempotentApi:def __init__(self):self.processed_requests = set()def process_request(self, request_id):if request_id in self.processed_requests:print(f"Request {request_id} has already been processed. Ignoring.")return# 模拟处理请求的业务逻辑print(f"Processing request {request_id}...")# ...# 标记请求已经处理self.processed_requests.add(request_id)print(f"Request {request_id} processed successfully.")# 创建一个 IdempotentApi 实例
api = IdempotentApi()# 模拟重复调用
request_id = str(uuid.uuid4())
api.process_request(request_id)
api.process_request(request_id)

相关文章:

(脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别)、( 什么是qps,tps,并发量,pv,uv)、(什么是接口幂等性问题,如何解决?)

1 脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么? 2 什么是qps,tps,并发量,pv,uv 3 什么是接口幂等性问题,如何解决? 1 脏读,不可重复读…...

安全通信网络(设备和技术注解)

网络安全等级保护相关标准参考《GB/T 22239-2019 网络安全等级保护基本要求》和《GB/T 28448-2019 网络安全等级保护测评要求》 密码应用安全性相关标准参考《GB/T 39786-2021 信息系统密码应用基本要求》和《GM/T 0115-2021 信息系统密码应用测评要求》 1网络架构 1.1保证网络…...

深度学习_12_softmax_图片识别优化版代码

因为图片识别很多代码都包装在d2l库里了,直接调用就行了 完整代码: import torch from torch import nn from d2l import torch as d2l"获取训练集&获取检测集" batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(ba…...

element-ui设置下拉选择切换必填和非必填

1、<el-form-item label="区域" prop="areaCode" :required="isHaveTo"><el-select v-model="form.areaCode" placeholder="请选择区域" clearable size="small"><el-option v-for="dict in …...

Linux的命令——关于操作用户及用户组的命令

目录 1.Linux的命令格式 2.用户与用户组管理 2.1用户管理 添加用户 设置用户密码 删除用户 修改用户 2.2用户组管理 新增用户组 删除用户组 修改用户组属性 用户组切换 用户组管理 用户切换 1. su 2.sudo 1.Linux的命令格式 Linux系统中几乎所有操作&#xff0…...

pycharm 设置多级跳转SSH

打开本地终端并运行: ssh -L <local_port>:<target_server_ip>:22 <proxy_server_user><proxy_server_ip>运行完之后就应该已经连接上proxy (Optional) 可以再开一个终端测试一下&#xff1a; ssh -p <local_port> <target_server_user&g…...

LeetCode 189.轮转数组(三种方法解决)

文章目录 题目暴力求解空间换时间三段逆置总结 题目 LeetCode 189.轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5…...

GB28181设备对接视频流的流程

搭建CG28181 服务端&#xff0c;也即 SIP Server&#xff0c;这正是我们要实现的。实现CG28181服务端可以借助于现有的开源库 PJSIP&#xff0c;具体的实现步骤如下&#xff1a; 1、启动GB28181服务端&#xff0c;接收客户端消息请求 bool Init(std::string concat, int logL…...

类属性修改(为什么python类不具备被赋值能力?)

为什么python类不具备被赋值能力&#xff1f;&#xff0c;用魔术方法收集实参&#xff0c;在类中可以定义方法处理实际参数&#xff0c;实现对类“赋值”。 (笔记模板由python脚本于2023年11月15日 12:45:27创建&#xff0c;本篇笔记适合初通Python类class的coder翻阅) 【学习的…...

uniapp App端 解决input@input事件动态修改值不生效的问题

解决方法 1.延迟修改&#xff0c;利用setTimeout 2.异步修改&#xff0c;利用this.$nextTick <template><view><input v-modal"num" type"number" placeholder"请输入" :maxlength"3" input"onInputOne" …...

ELK分布式日志

ELK是指Elasticsearch、Logstash和Kibana三个开源软件的集合&#xff0c;用于构建分布式日志处理系统。 Elasticsearch是一款基于Lucene搜索引擎库的分布式全文搜索和分析引擎&#xff0c;支持多种数据类型的存储、搜索和分析&#xff0c;常用于日志分析、安全监控等领域。 L…...

Kylin-Server-V10-SP3+Gbase+宝兰德信创环境搭建

目录 一、Kylin-Server-V10-SP3 安装1.官网下载安装包2.创建 VMware ESXi 虚拟机3.加载镜像&#xff0c;安装系统 二、Gbase 安装1.下载 Gbase 安装包2.创建组和用户、设置密码3.创建目录4.解压包5.安装6.创建实例7.登录8.常见问题 三、宝兰德安装1.获取安装包2.解压安装3.启动…...

po与vo互转工具类

po转vo工具类 1.反射调用2.JSON序列化方式3.注解驱动4.ModelMappe5.手动映射6.总结7.扩展方法 1.反射调用 这个方法会创建一个新的实例&#xff0c;并将所有公共字段复制到目标对象中&#xff0c;而不修改原来的实例。因此&#xff0c;如果目标类包含 private 或 final 字段&am…...

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(三)

员工分页查询和账号启用禁用功能 1. 员工分页查询1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码开发1.2.1 设计DTO类1.2.2 封装PageResult1.2.3 Controller层1.2.4 Service层接口1.2.5 Service层实现类1.2.6 Mapper层 1.3 功能测试1.4 代码完善 2. 启用禁用员工账号…...

PyCharm:2023新版PyCharm无UI工具栏,如何回旧版

pycharm2023.3新版本&#xff0c;默认使用新UI&#xff0c;界面突然变化很大&#xff0c;感觉用起来很不适应。。。。于是&#xff0c;在网上搜了一下&#xff0c;确实有回老版的方法&#xff0c;试了一下&#xff0c;确实很nice~~~~ 方法&#xff1a; Settings——>Appea…...

阿里云国际站:云备份

文章目录 一、阿里云云备份的概念 二、云备份的优势 三、云备份的功能 四、云备份的应用场景 一、阿里云云备份的概念 云备份作为阿里云统一灾备平台&#xff0c;是一种简单易用、敏捷高效、安全可靠的公共云数据管理服务&#xff0c;可以为阿里云ECS整机、ECS数据库、文件…...

C#中.NET 6.0 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录

目录 一、应用程序设计 二、应用程序源码 三、生成效果 前文作者发布了在.NET 6.0 控制台应用中通过EF访问已有数据库&#xff0c;事实上&#xff0c;在.NET 6.0 Windows窗体应用中通过EF访问已有数据库也是一样的。操作方法基本一样&#xff0c;数据库EF模型和上下文都是自…...

kafka+ubuntu20.04+docker配置

记录一次配置过程 安装docker 参加下面链接的第一部分 Ubuntu20.04使用docker安装kafka服务-CSDN博客 安装zookeeper docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper安装kafka服务 docker run -d --name kafka …...

遍历一个对象,并得出所对应的值

var dates {//定义的对象year:now.getFullYear(),month:now.getMonth()1,date:now.getDate(),hour:now.getHours(),minute:now.getMinutes(),second:now.getSeconds() }//开始遍历循环 var val; for (val in dates){console.log(对象名称&#xff1a;val-对象的值&#xff1a;…...

WGCLOUD的特点整理

做运维工作很多年了&#xff0c;项目中用过不少的运维软件工具&#xff0c;今天整理下WGCLOUD的特点&#xff08;优点&#xff09; 首先WGCLOUD是完全免费的 部署使用&#xff1a;部署简单方便&#xff0c;上手容易&#xff0c;几乎没有学习成本&#xff0c;对新手友好 文档…...

量子软件测试的挑战与优化策略

1. 量子软件测试的挑战与机遇量子计算正在从实验室走向实际应用&#xff0c;随之而来的是对可靠量子软件的需求激增。与传统软件不同&#xff0c;量子程序面临三大独特挑战&#xff1a;首先&#xff0c;量子态的叠加性和纠缠性使得测试变得异常复杂。一个n量子比特系统可以同时…...

【DeepSeek事件驱动架构实战指南】:20年架构师亲授5大核心陷阱与避坑清单

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek事件驱动架构全景认知 DeepSeek事件驱动架构&#xff08;Event-Driven Architecture, EDA&#xff09;并非单一技术组件的堆叠&#xff0c;而是一种以事件为第一公民、强调松耦合与异步协作的系统设计…...

半导体元件(二极管/三极管/MOS管/IC)损坏诊断全解

半导体元件&#xff08;二极管、三极管、MOS 管、集成电路&#xff09;是 PCB 的核心功能单元&#xff0c;对过压、过流、ESD、高温极度敏感&#xff0c;损坏后直接导致电路功能失效、短路烧板。很多工程师维修时盲目更换芯片&#xff0c;不仅成本高&#xff0c;还易误判。​一…...

电子商务设计师软考备战:特别篇 - 综合模拟与备考策略

1. 考试形式与内容结构1.1 考试基本信息考试科目与时间基础知识考试&#xff1a;上午9:00-11:30&#xff08;150分钟&#xff09;应用技术考试&#xff1a;下午2:00-4:30&#xff08;150分钟&#xff09;题型与分值分布上午考试&#xff08;基础知识&#xff09;&#xff1a; -…...

别被忽悠了!2026亲测靠谱的AI论文网站|避坑精选版

2026 年学术写作工具已高度分化&#xff0c;千笔AI与ThouPen为全流程首选&#xff0c;豆包、DeepSeek 为专项强手&#xff1b;避坑关键&#xff1a;拒绝假文献、严控 AIGC 率、优先国内适配、免费试用先行。 一、TOP3 全流程首选&#xff08;亲测不踩雷&#xff09; 1. 千笔AI&…...

DragonBones与Godot集成:骨骼动画的可编程化实践

1. 为什么在Godot里用DragonBones不是“锦上添花”&#xff0c;而是“绕不开的刚需” 去年上线一个横版动作手游Demo时&#xff0c;美术团队交来一套20个角色、每个角色含8套动画&#xff08;待机/跑动/跳跃/攻击/受击/死亡/闪避/必杀&#xff09;的Spine资源。我兴冲冲导入God…...

从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战

从RD、CS到WK&#xff1a;SAR成像算法选型实战指南 当无人机掠过灾区上空&#xff0c;或卫星扫描地球表面时&#xff0c;合成孔径雷达&#xff08;SAR&#xff09;正通过电磁波穿透云层和黑暗&#xff0c;将地面信息转化为高分辨率图像。而决定图像质量的关键&#xff0c;在于工…...

差分隐私GDP机制紧密度量化:从隐私剖面到∆度量的实践指南

1. 差分隐私GDP机制&#xff1a;从理论到实践&#xff0c;如何量化隐私保护紧密度在差分隐私&#xff08;Differential Privacy, DP&#xff09;的实际部署中&#xff0c;尤其是在机器学习的隐私保护训练&#xff08;如DP-SGD&#xff09;场景里&#xff0c;我们常常面临一个核…...

在Hermes Agent项目中接入Taotoken作为自定义模型供应商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Hermes Agent项目中接入Taotoken作为自定义模型供应商 基础教程类&#xff0c;针对使用Hermes Agent框架的开发者&#xff0c;详…...

CUDA并行计算与FSR框架优化实践

1. CUDA并行计算与FSR框架概述在GPU加速计算领域&#xff0c;CUDA&#xff08;Compute Unified Device Architecture&#xff09;作为NVIDIA推出的并行计算平台和编程模型&#xff0c;已经成为高性能计算的事实标准。其核心设计理念是将计算任务分解为网格&#xff08;Grid&…...