MySQL更新操作的方法有哪些
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容介绍了"MySQL更新操作的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!案例分析
千家信息网最后更新 2025年01月17日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安全错误
数据库的锁怎样保障安全
青年网络安全倡议书
计算机网络技术类包括哪些专业
数据库跨数据库关联
中小学网络安全保障工作方案
网络安全的关系是什么
南京发展软件开发技术参数
深圳市安防网络技术有限公司
中国邮政银行软件开发
怎么打开用户数据库权限
服务器硬盘数据读写不稳定
网络安全宣传图片设计图
宁波服务器哪家便宜
服务器系统不能装显卡
递归服务器的功能
网络安全和反邪教主题班会
做棋牌类游戏软件开发犯法吗
什么时候需要用到云服务器
柳州电子软件开发招聘网
sql数据库并行语句
与360网络安全合作的公司
mysql建立数据库网站
中国数据库40年发展简史
南京发展软件开发技术参数
洛阳网络技术是什么
晋中勘倌网络技术有限公司
天龙八部游戏燕子坞服务器
linux服务器复制
互联网科技大会马总
网安大队提示网络安全
合肥的网络安全公司