首页 > 其他分享 >接口幂等性,qps,tps,并发量,pv,uv,脏读,不可重复读,幻读

接口幂等性,qps,tps,并发量,pv,uv,脏读,不可重复读,幻读

时间:2023-07-31 22:33:59浏览次数:28  
标签:事务 pv 请求 重复 uv 并发 tps 提交 数据

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

脏读:'当一个事务读取了另一个未提交事务的数据时,称为脏读。当事务A读取到事务B尚未提交的数据时,如果事务B回滚,那么事务A读取的数据就是无效的或者不一致的,导致脏读的结果是不可靠的。'
不可重复读:'在同一个事务中,对于相同的查询,第二次读取数据时,得到的结果与第一次读取数据时不相同,称为不可重复读。不可重复读的问题在于其他事务可能在两次读取之间修改了数据,导致了结果的不一致性。'
幻读:'在同一个事务中,对于相同的查询,第二次读取数据时,得到了新增或删除的额外数据行,称为幻读。幻读问题发生在并发事务中,其中一个事务在读取数据的同时,另一个事务执行了插入或删除操作,导致第一个事务读取的数据发生了改变。'
mysql5.7以后默认隔离级别是:'可重复读'
在MySQL 5.6及之前的版本中,默认的隔离级别是"读已提交"
若要修改,需要编辑my.cnf文件
在末尾添加:transaction-isolation=READ-COMMITTED

1	读未提交	READ-UNCOMMITTED
2	读提交		 READ-COMMITTED
3	可重复读	REPEATABLE-READ
4	串行化		 SERIALIZABLE

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

qps(Queries Per Second):'每秒查询率,表示在一秒内数据库系统能够处理的查询请求数量,他是衡量系统性能的标准,越高则表示系统处理能力越来强'
tps(Transactions Per Second):'每秒事务处理量,表示在一秒内系统能够处理的事务数量,一个事务可以包括多个查询操作,因此TPS一般会小于等于QPS'
并发量:'指系统在某个时间段内处理请求的数量,也可以了理解为系统的并发链接数,并发量大则可以表示系统在某个时间段内承载了更多的请求,具备并发处理能力'
pv(Page View):'页面浏览量,表示网站或应用在一段时间内被访问的页面次数,PV是衡量网站或应用的访问量的指标,他可以用来分析用户的访问行为和访问规模'
uv(Unique Visitor):'唯一的访客,表示在一段时间内访问网站或应用的独立用户数量,UV是根据用户的设备唯一标识或ip地址等信息来区分用户的,他用来衡量网站或应用的用户数量'

#QPS(Queries Per Second)表示每秒查询率,衡量数据库系统处理查询请求数量的能力。
#TPS(Transactions Per Second)表示每秒事务处理量,衡量系统处理完整事务的能力。
#并发量指系统在某个时间段内同时处理的请求数量,是系统的并发连接数。
#PV(Page View)表示网站或应用在一段时间内被访问的页面次数,用来分析访问规模和用户行为。
#UV(Unique Visitor)表示访问网站或应用的独立用户数量,用来衡量用户数量。

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

接口幂等性:'指在分布式系统中,由于网络原因或其他原因导致请求重复发送,从而导致系统产生重复的操作或数据,比如重复扣款、重复下单、重复发送短信等'
-支付接口,重复支付会导致多次扣钱 ;订单接口,同一个订单可能会多次创建。
什么情况下,会产生接口幂等性的问题呢?
	-网络波动, 可能会引起重复请求
	-用户重复操作,用户在操作时候可能会无意触发多次下单交易,甚至没有响应而有意触发多次交易应用
	-使用了失效或超时重试机制(Nginx重试、RPC重试或业务层重试等)
	-页面重复刷新
    -使用浏览器后退按钮重复之前的操作,导致重复提交表单
    -使用浏览器历史记录重复提交表单
    -浏览器重复的HTTP请求
    -定时任务重复执行
    -用户双击提交按钮
解决方法:
	-按钮只能操作一次
    	-提交后把按钮置灰或loding状态,消除用户因为重复点击而产生重复记录
    -token机制
    	-允许重复提交,但不能产生副作用,进入页面时申请一个token,然后所有请求都带着token,后端根据token来避免重复请求,将token存入redis,请求来了之后把redis中的token清除,当重复请求来,发现没有token,不做处理。
    -使用post/redirect/get模式(PRG)
    	-在提交后执行页面重定向,在用户提交后跳转到一个重定向的信息页面,避免用户按F5刷新页面导致重复提交,而且也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进或后退导致同样重复提交的问题
    -在session存放特殊标识
    	-在服务端生产一个唯一的标识符,存入session,同时前端获取到这个标识符,将这个标识符一并提交到后端,在服务器获取到前段传入的标识符,与session中的比较,如果一致,代表是首次提交,处理本次请求,移除标识符,不相等,不做处理
    -使用唯一索引防止新增脏数据
    	-利用数据库的唯一索引机制,插入数据库会抛出异常,保证不会出现脏数据
    -乐观锁:'乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。. 因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作'
    	-为数据增加一个version字段,当数据需要更新时,先去数据库里获取此时的version版本号
        -更新数据时首先和版本号作对比,如果不相等说明已经有其他请求去更改新数据了,提示更新失败
    -悲观锁
    	-在获取数据时进行加锁,当同时有多个重复请求时其他请求都无法进行操作
    -分布式锁
    	-幂等的本质就是分布式锁的问题,分布式锁可以使用redis实现,在分布式环境下,锁定全局唯一资源,使请求串行化,实际表现为互斥锁,防止重复
    -缓冲队列
    	-将请求全部放入缓冲队列,使用异步任务处理队列中的数据,过滤掉重复的请求,优点:同步处理改为异步处理,高吞吐量,缺点:不能及时返回请求结果,需要后续轮训得到处理结果
        
	

标签:事务,pv,请求,重复,uv,并发,tps,提交,数据
From: https://www.cnblogs.com/liyuanxiangls/p/17594950.html

相关文章

  • 脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么?什么是qps,tps,并发量,pv,uv、什么是
    目录一、脏读,不可重复读,幻读,mysql5.7以后默认隔离级别是什么?脏读,不可重复读,幻读脏读不可重复读幻读mysql5.7以后默认隔离级别是什么二、什么是qps,tps,并发量,pv,uv三、什么是接口幂等性问题,如何解决?一、脏读,不可重复读,幻读,mysql5.7以后默认隔离级别是什么?程序访问数据库,往往是多......
  • UVM:3.3.2 field_automation 机制常用的函数
    1.copy要把A的实例复制到B实例中,应该使用B.copy(A),使用前,B必须使用new分配好内存空间。2.compare比较A与B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。相等时,返回1;否则为0。3.pack_bytes将所有字段打包成bytes流。返回的是size。4.unpack_bytes:将byte流逐一恢复到某个cla......
  • UVM:2.1_验证平台的组成
    1.首先看下面的结构吧:这个结构虽然不是一个严格满足官方规范的架构,但它真的可以跑.1).driver:产生最原始的data,发送给两部分。一个是DUT,另一个是referencemodel。2) referencemodel:是一个和DUT逻辑上相同的模块,可以sv,也可以通过DPI实现。我遇到的问题是,如果referencemodel和DU......
  • UVM:5.1.6 build 阶段出现UVM_ERROR停止仿真
    1.在build_phase使用uvm_error,也会退出:2.结果:3.在end_of_elaboration_phase之前的phase中,如果出现UVM_ERROR,UVM就认为出现了致命错误,会调用uvm_fatal结束仿真。4.小设计看不出优势,大设计有用。......
  • UVM:3.4.2 重载打印信息的严重性
    1.所有warning替换成error:2.只对某个特定id起作用:3.重载严重性是没有递归函数的。4.可以在命令行中实现:<simcommand>+uvm_set_severity=<comp>,<id>,<currentseverity>,<new_severity><simcommand>+uvm_set_severity="uvm_test_top.env.i_agt.drv,my_driver,......
  • UVM:4.1.1 验证平台内部的通信
    1.两个components通信可以有如下方法:1)设置全局变量。2)设置public让外部访问。3)写一个新的class,uvm_object,用config_db(config_object)配置,被配置的components去吃这个新的class。但是都不好!!!!!!!!!!!!!!!!2.1)上面的方法如果加入阻塞和非阻塞的概念,会更复杂。2)scoreboard主动要求数据,又怎么实现......
  • UVM:5.1.8 phase 机制的必要性
    1.可以这么写:第三行在第二行后面就可以。2.将顺序降到最低,也可以这么写:3.UVM将例化放在build_phase,连接放在connect_phase,这就是phase的来源。方便用户。......
  • UVM:4.1.3 UVM 中的PORT 与 EXPORT
    1.UVM中常用的PORT有:总结到一起:1)put,get,transport都是3个。2)peek与get类似,都是主动获取数据。是有区别的。。。3)get_peek结合了get和peek的功能。4)前12个的参数就是PORT中的数据类型,后3个是request的类型和response的类型。5)如果没有指定是否阻塞,则都可以当。(都可以作只是端口......
  • 7.kubernetes存储卷、持久卷、pv和pvc、NFS CSI部署示例
    pod资源规范总结资源类型获取:kubectlaip-resources资源群组获取:kubectlaip-versions特定资源的规范获取:kubectlexplain<Kind>.pod运行自主式pod,非受控于工作负载型控制器直接由kubelet管理apiVersion:v1kind:Po......
  • UVM:6.3.3 uvm_rand_send 系列宏
    1.uvm_rand_send系列宏有如下几个:1)和uvm_send的唯一区别是它会对transaction进行随机化。2)使用前提是transaction被分配了空间,(就是uvm_create)2.uvm_rand_send系列宏及uvm_send系列宏的意义在于,如果一个transaction占用内存较大,希望前后两次发送的transaction都是用同一块内......