并发控制 加乐观锁

简介:

由于悲观锁在开始读取时即开始锁定,因此在并发访问较大的情况下性能会变差。对MySQL Inodb来说,通过指定明确主键方式查找数据会单行锁定,而查询范围操作或者非主键操作将会锁表。 接下来,我们看一下如何使用乐观锁解决这个问题。

MYSQL

首先我们为counter表增加一列update_time字段,当进行操作时,将先前读取的update_time与当时表中的update_time进行一次对比,如果一致,那么允许操作,然后生成一个新的update_time值替换表中原有的update_time。

Java代码   收藏代码
  1. <?php   
  2. mysqli_query($conn, 'BEGIN');  
  3. $rs = mysqli_query($conn, 'SELECT num, version FROM counter WHERE id = 1');  
  4. mysqli_free_result($rs);  
  5. $row = mysqli_fetch_array($rs);  
  6. $num = $row[0];  
  7. $version = $row[1];//此例:新增version字段标记  
  8. mysqli_query($conn, 'UPDATE counter SET num = ' . $num . ' +1, version = version + 1 WHERE id = 1 AND version = ' . $version);  
  9. $affectRow = mysqli_affected_rows($conn);  
  10. if ($affectRow == 0 || mysqli_errno($conn)) {  
  11.     // 回滚事务重新提交  
  12.     mysqli_query($conn, 'ROLLBACK');  
  13. else {  
  14.     mysqli_query($conn, 'COMMIT');  
  15. }  

PHP文件乐观锁,在处理下单请求的时候,用flock锁定一个文件,如果锁定失败说明有其他订单正在处理,此时要么等待要么直接提示用户"服务器繁忙"

Java代码   收藏代码
  1. <?php  
  2. $fp = fopen("lock.txt""w+");   
  3. if (flock($fp, LOCK_NB | LOCK_EX)) {  
  4.     echo 'do something';  
  5.     @flock($fp, LOCK_UN);  
  6. else {  
  7.     echo '系统繁忙';  
  8. }  
  9. @fclose($fp);  
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
人工智能 JavaScript 数据可视化
VTJ.PRO:打破次元壁!AI驱动 + 双向代码自由穿梭,重新定义Vue高效开发!
VTJ.PRO推出“双向代码转换引擎”,实现可视化设计与手写代码无缝切换,真正践行“设计即代码,代码即设计”。支持Vue3组件一键生成、源码反向解析,兼顾开发自由度与效率,助力快速原型验证与项目迭代。
446 0
|
8月前
|
存储 监控 算法
从24G到8G:大模型调存优化全攻略(新手保姆级)
本文揭秘大模型显存消耗的四大“吃金兽”(参数、梯度、优化器状态、激活值),并提供零代码优化方案:LoRA/QLoRA微调、BF16混合精度、梯度累积与梯度检查点。实操指南助你用RTX 3060/4060等入门卡高效微调7B模型,显存直降70%+,兼顾效果与速度。(239字)
631 1
|
数据采集 监控 搜索推荐
301重定向对网站收录的影响:全面解析与最佳实践
301重定向是永久性跳转技术,能有效传递SEO权重并避免内容重复。合理使用可提升收录效率与用户体验,但需注意实施质量及搜索引擎差异。
546 0
|
8月前
|
传感器 人工智能 前端开发
WebGL开发数字孪生项目
WebGL是2026年数字孪生跨平台落地的核心技术,支撑实时遥测、边缘AI与仿真。本文详解Three.js/Babylon/Cesium选型、glTF模型优化、WebSocket数据同步、LOD/实例化/纹理压缩等性能策略,及资产版本、安全与验收标准。(239字)
|
9月前
|
传感器 人工智能 数据可视化
构建AI智能体:五十三、反应式应急+深思式优化:反应速度与规划智慧的平衡
智能体系统设计的混合架构研究 本文探讨了智能体系统的两种基本范式及其融合架构。反应式智能体采用&quot;感知-行动&quot;模式,具有响应速度快、资源消耗低的特点,适用于紧急场景;深思熟虑智能体采用&quot;感知-推理-行动&quot;模式,具备复杂问题求解能力,但计算成本高。研究表明,最先进的解决方案是分层混合架构:底层反应层处理紧急任务,上层深思层负责战略规划,二者通过动态交互机制协作。这种架构在扫地机器人等应用场景中展现出显著优势,既能快速应对突发情况,又能执行长期规划任务。
689 11
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
7248 19
|
11月前
|
存储 弹性计算 监控
阿里云渠道商:云文件存储 NAS 的价格是如何计算的?
阿里云NAS提供灵活计费与分层存储,支持按量付费和预购资源包,结合生命周期管理可降低存储成本超60%。通过冷热数据分离、合理选型与容量优化,助力企业高效降本。新用户可享专业指导与优惠支持。
|
缓存 监控 Java
说一说 SpringCloud Gateway 堆外内存溢出排查
我是小假 期待与你的下一次相遇 ~
1595 5
|
网络协议
UDP协议在网络通信中的独特应用与优势
UDP(用户数据报协议)作为关键的传输层协议,在网络通信中展现出独特优势。本文探讨UDP的无连接性及低开销特性,使其在实时性要求高的场景如视频流、在线游戏中表现优异;其不保证可靠交付的特性赋予应用程序自定义传输策略的灵活性;面向报文的高效处理能力及短小的包头设计进一步提升了数据传输效率。总之,UDP适用于高速、实时性强且对可靠性要求不高的应用场景,为网络通信提供了多样化的选择。
|
Linux 数据安全/隐私保护 开发者
Red Hat下载ISO镜像的方法
简介:本文介绍如何注册或登录Red Hat账号,选择并下载Red Hat Enterprise Linux (RHEL)的免费版本,以及激活订阅的步骤。首先访问Red Hat官网注册或登录账号,然后在开发者页面选择免费下载RHEL,最后通过终端命令激活订阅,确保状态已订阅。订阅为期一年,到期后需重新注册以继续享受支持和权益。
5901 17
Red Hat下载ISO镜像的方法