该文为《 My
SQL
实战 45 讲》的学习笔记,感谢查看,如有错误,欢迎指正
一、查询和更新上的区别
这两类索引在查询能力上是没差别的,主要考虑的是对更新性能的影响。建议尽量选择普通索引。
1.1 My
SQL
的查询操作
查找到第一个满足条件的记录后,继续向后遍历,直到第一个不满足条件的记录。
由于索引定义了唯一性,查找到第一个满足条件的记录后,直接停止继续检索。
普通索引会多检索一次,几乎没有影响。因为 InnoDB 的数据是按照数据页为单位进行读写的,需要读取数据时,并不...
本文介绍了使用
springboot
和拦截器、redis来优雅的实现接口幂等,对于幂等在实际的开发过程中是十分重要的,因为一个接口可能会被无数的客户端调用,如何保证其不影响后台的业务处理,如何保证其只影响数据一次是非常重要的,它可以防止产生脏数据或者乱数据,也可以减少并发量,实乃十分有益的一件事。token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token。
笔者这段时间在做第三方用户接入的时候碰到了一个问题:由于自身的系统是在第三方发送请求的时候直接将第三方的账号数据存入
数据库
的,所以当页面出现多个请求并发执行的时候,会出现用户数据重复插入的问题,之后笔者尝试了几种方式最终解决了这个问题,在此记录一下。
目录一、单台服务器的处理方案二、多台服务器环境下的处理方案
一、单台服务器的处理方案
这种情况是最简单的一种情况,笔者的处理方法是给插入数据的代码块加锁,这样就能保证同一时间只能有一个线程访问该段代码快,这样只要在代码块的开头加上有无相同数据的判断,就.
文章来源:极客时间My
SQL
实战45讲 评论区更精彩,有能力去支持哈
假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的
SQL
语句:
select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';
所以,你一定会考虑在 i...
|-- java.
sql
.
SQL
Exception
|--
SQL
NonTransientException
|--
SQL
IntegrityConstraintViolationException
//新增机型
aircraftService.save(aircraft);
return R.ok(aircraft.getId());
}catch (Exception e){
Thr..
数据库
添加
索引导致
前端
页面
异常
/加载不出来的神奇情况
今天在优化my
sql
,看到一个主要的select联合其他表的patient_id没有索引,先在线下测试过后没有问题,跑到线上
数据库
加索引,加完了,页面加载不出来了----->wtf???
报错
显示type_id有null值??我加个索引怎么把值搞没了?
前面上答案,解析在下面
线上存在逻辑上不应该为空的值,只不过加载的时候my
sql
通过o...
一个同事在调试Mybatis更新操作,没有任何
sql
语句打印,
sql
语句也没执行。跟了下Mybatis的MapperProxy类的invoke方法,跟到拼装
sql
语句的地方,确实抛出了
异常
,但是控制台确实没有打印,其他的
sql
语句都有打印。
springboot
的application配置文件中加上了logging.level.xxx.xxx.xxx.xxx.mapper=debug,正常是要打印s...
有时候在
数据库
表中,对某列设置了唯一约束,
在对某条数据,进行修改或者新增时候,程序中会抛出
异常
:
SQL
IntegrityConstraintViolationException简单处理:
try {
//修改or新增
sql
}catch (Exception e){
Throwable cause = e.getCause();
if (cause instance...
https://www.aliyun.com/jiaocheng/851082.html
摘要:Mybatis不鼓励捕捉
异常
,但在某些特定场景下需要捕捉,这个时候通过trycatch是捕捉不到的,mybatis有自己...
接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。
不知道你有没有遇到过这些场景:
有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。
我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取
返回
结果(此时有可能已经成功了),为了避免
返回
错误的结果(这种情况不可能直接
返回
失败
public String createStudentid() {
// 生成学号工具类
String studentid = StudentIdGenerator.gener...