MySQL更新操作的方法有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容介绍了"MySQL更新操作的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!案例分析
千家信息网最后更新 2025年11月07日MySQL更新操作的方法有哪些案例分析
更新账户金额
直接更新
乐观锁方案
无锁方案
排队操作
常见问题
如果数据中存在 update_time 字段受影响的行数是多少?
如果执行 update 更新但受影响的行数为 0 会加行锁吗?
本篇内容介绍了"MySQL更新操作的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
案例分析
创建数据库的DDL:
CREATE TABLE `hw_account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `balance` int(11) DEFAULT NULL, `status` varchar(20) DEFAULT NULL, `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
更新账户金额
直接更新
方案 1 查询后更新
# 数据查询select * from hw_account where id = 1;# 数据更新update hw_account set balance = 5 where id = 1;
存在的问题,就是分两次操作,如果并发执行的时候,可能造成更新丢失的问题.
乐观锁方案
利用版本号操作,即对数据库增加乐观锁的方式进行。
# 数据查询select * from hw_account where id = 1;# 数据更新update hw_account set balance = 5 , version = version + 1 where id = 1 and version = n; # 判断是否成功 if row < 1 { 回滚}存在的问题,如果该条数据并发操作的时候,会导致其他的请求失败。如果这个请求的前置链路比较长的话, 回滚成本比较高。
无锁方案
不用查询,采用数据库的计算,也不需要版本号的操作,直接通过域值进行有效性判断。具体的 SQL 如下:
# 数据更新update hw_account set balance = balance + @change_num , version = version + 1 where id = 1 and version = n; # 判断是否成功 if row < 1 { 回滚}这种方案修改比较简单, 但是依赖于数据计算,感觉不是特别友好。
排队操作
通过 redis 或者 zk 的分布式锁,进行数据请求进行排队。然后在进行数据更新。
# 伪代码if (获取分布式锁) { update hw_account set balance = @balance where id = 1;} else { # 进入等待,或者进行自旋获取锁}常见问题
如果数据中存在 update_time 字段受影响的行数是多少?
update_time 的字段定义如下,如果数据为id = 1, status = 1 如果执行更新数据的 sql 为
update hw_account set `status` = 1 where id = 1;
返回的受影响的行数为 0;
如果执行 update 更新但受影响的行数为 0 会加行锁吗?
会的, 执行更新的语句都会加行锁(前提,事务内)
"MySQL更新操作的方法有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
更新
方案
问题
查询
数据库
影响
方法
乐观
成功
内容
分布式
字段
数据查询
时候
更多
案例
版本
知识
加行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术工程师发展
某公司主要通过系统数据库
数据库任务书
服务器ping延迟高cpu正常
廊坊市峰杰网络技术有限公司
数据库技术笔记
为什么要租服务器
寿光市公安局网络安全员
青岛海房屋网络技术有限公司
呼和浩特市软件开发培训
asr离线识别服务器注册码
lync2010怎么连接服务器
网络安全售前待遇好的公司
ssm整合查询数据库的数据
粤商通服务器异常怎么解决
国内比较好的软件开发平台有哪些
华为被国际网络安全
光源测试数据库坏了
dellemc服务器维修调试
濮阳软件开发商在线咨询
小规模软件开发几个点的税
oppo媒体服务器
gepia数据库找基因关系
查询数据库时乱码问题
与国外服务器传送数据
百思教育软件开发一年多少钱
天正v5.0服务器为空
现代的网络技术 英语作文
网络安全四大工作要点
未来游戏软件开发有前途吗