数据库SQL
文章平均质量分 81
云闲不收
这个作者很懒,什么都没留下…
展开
-
mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
加锁的基本单位为next-key lock = 间隙锁+行锁,范围为前开后闭,但加锁过程为先申请间隙锁在申请行锁。只有访问到的对象才可以加锁。等值查询:①主键索引:next-key lock会退化为行锁;②非主键索引:保持原样等值查询:InnoDB会向右继续遍历,找到第一个不符合的数据行,加next-key lock并退化为间隙锁。范围查询:先找到复核条件的一行数据,再向右查找,向右查找时加的锁不会退化为间隙锁。无论什么情况下,InnoDB 会往前扫描到第一个不满足条件的行为止。原创 2021-05-12 21:38:11 · 3400 阅读 · 1 评论 -
数据库优化(最终版)
user”表中有 user_id、nickname 等字段,“order”表中有order_id、user_id等字段,如果想拿到用户昵称怎么办?一般情况是通过 join 关联表操作,在查询订单表时关联查询用户表,从而获取导用户昵称。但是随着业务量增加,订单表和用户表肯定也是暴增,这时候通过两个表关联数据就比较费力了,为了取一个昵称字段而不得不关联查询几十上百万的用户表,其速度可想而知。冗余字段的做法也有一个弊端,如果这个字段更新会同时涉及到多个表的更新,因此在选择冗余字段时要尽量选择不经常更新的字段。原创 2022-10-20 17:03:32 · 146 阅读 · 0 评论