有同学在一次代码调整中,mysql “insert ignore into” 错误改为 “insert into”,导致线上问题
insert ignore into 印象中我们通常用来处理uk重复插入异常,还有另一个坑,...
汪明鑫
1年前 (2023-07-24) 543浏览 0评论
0喜欢
如果可以使用被驱动表的索引,join还是有优势的,让驱动表走全表扫描,而被驱动表是走树搜索。
否则就是驱动表全表扫 + 被驱动表全表扫,那就不要用join。
使用join的时候,尽量使用小表作为驱动表。
join会借助join buffer做数据关联,join buffer不够...
汪明鑫
3年前 (2022-03-14) 715浏览 0评论
3喜欢
查询过程中访问到的对象才会加锁,而加锁的基本单位是next-key lock(前开后闭);
等值查询上MySQL的优化:索引上的等值查询,如果是唯一索引,next-key lock会退化为行锁,如果不是唯一索引,需要访问到第一个不满足条件的值,此时next-key lock会...
汪明鑫
3年前 (2022-03-01) 860浏览 0评论
0喜欢
每创建一个表,就会基于主键建立一个主键索引,就是一个B+树
每多创建一个索引,就会多生成一个索引树
数据和索引就在一起,因此称为聚集(簇)索引
B+的叶子节点才有数据,可以理解非叶子节点都是起到目录作用
主键索引树和普通索引树的区别就是普通索引树叶子节点是包含主键,...
汪明鑫
3年前 (2022-03-01) 802浏览 0评论
2喜欢
redo log
innodb引擎专有的重做日志
事务持久化,这也是为啥说myisam不支持事务,innodb支持事务
redo log是先落日志再写磁盘,类似基于内存整个小本本,每次事务来了,记个账,选择合适的时机再刷到磁盘里
redo log分为两个阶段: ...
汪明鑫
3年前 (2022-03-01) 716浏览 0评论
0喜欢
有一个场景:每个赛季用户都有自己的积分,积分前100的有一个榜单top100
榜单展示按积分由大到小
这样会有个问题,积分相同的谁排前谁排后,比如100名和101名积分相同怎么整?
上了榜单多有排面
因此相同积分的,谁先达到该积分谁在前面 update_time
即我们的排序策...
汪明鑫
5年前 (2020-05-29) 830浏览 0评论
0喜欢
伪代码:
Person personFromDb = personMapper.selectPerson(person.getUserId);
if(personFromDb == null){
int rst...
汪明鑫
5年前 (2020-05-07) 749浏览 0评论
0喜欢
定长字符串 vs 变长字符串
varchar存放变长字符串,char存放定长字符串
The CHAR and VARCHAR types are declared with a length that indicates the maximum number o...
汪明鑫
5年前 (2019-12-23) 882浏览 0评论
0喜欢
order by
根据某一列进行排序
select * from person order by name;
索引命中
尽量命中索引,因为如果在该列建有索引,就无需额外的排序
创建索引:
create index ix_name on person(...
汪明鑫
5年前 (2019-11-19) 915浏览 0评论
0喜欢
就问你锁恶不恶心人
锁在程序员的世界里无处不在,因为并发无处不在
锁住共享资源,防止并发造成的问题
从Java锁到数据库锁,悲观锁、乐观锁,行锁、表锁,读锁、写锁,自旋锁,可重入锁,CAS,死锁,分布式锁等等等。。。
我是觉得锁这一大块很难啃,上面每一个点都需要花很多时间学习了解...
汪明鑫
5年前 (2019-11-11) 876浏览 0评论
0喜欢