评估事务中发生并发异常的可能性比较低 但又不完全保证不会发生 使用乐观锁
乐观锁是通过SQL本身的语法去进行校验
-- 在修改之前查询一下数据 在修改的同时回去判断这个值和刚才查询到的数据是否一致 如果一致则继续执行更新 否则不更新
SELECT MONEY FROM USERS WHERE ID = 1;
UPDATE USERS SET MONEY = 500 WHERE ID = 1 AND MONTY = 前面语句查出来的值;
合成一句
UPDATE `Users` SET money = 500
WHERE id = 1
AND `Users`.money = (SELECT m1 FROM (SELECT money AS m1 FROM `Users` WHERE id = 1 ) AS t1);
Every derived table must have its own alias 给虚拟表命名
总结:
1、对数据库要有一定的认知:关系型数据库和非关系型数据库
-
2、数据库的四大类型语言要有一定的了解
1DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库 表 列 Create
2DML(Data Manipulation Language)数据操作语言
对于数据的增删改 insert delete update
3DQL(Data Query Language)数据操作语言
对于数据的查询 select
4DCL(Data Control Language)数据控制语言
定义数据库访问权限 定义新的用户及权限 密码等等
Grant
-
3、在设计数据库的时候要应用:约束和范式,考虑表与表之间的关系,是一对一、一对多、多对多
怎么加索引才合适、外键等,先有一定的设计才去建表创建属性
-
4、在数据库的层面要对事务一定的认知和理解
要知道什么是事务隔离级别、什么是脏读、不可重复读、幻读和串行化,这也是面试常常被问到的。
-
5、对数据库的锁要有自己的理解:悲观锁、乐观锁
事务中的业务大概率会出现并发异常时 我们处于一种悲观状态 可以使用悲观锁
评估事务中发生并发异常的可能性比较低 但又不完全保证不会发生 使用乐观锁
本篇文章来源于微信公众号: 小刘Java之路
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/11155.html