MySQL常用易忘个人总结

1。每一页大小为16K
1G大概10亿个比特

explain :

key 所用到的索引

row 这次查询所扫描的行数(时机上为内循环数)

type:连接类型

mysql的锁

根本上上是要保证加锁的顺序。

InnoDB做了死锁预防的策略:持有事务锁(行锁、表锁),可以等待获取页面锁;但反之,持有页面锁,不能等待持有事务锁。根据死锁预防策略,在持有页面锁,加行锁的时候,如果行锁需要等待。则释放页面锁,然后等待行锁。此时,行锁获取没有任何锁保护,因此加上行锁之后,记录可能已经被并发修改。
————————————————
版权声明:本文为CSDN博主「weixin_39608680」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39608680/article/details/113126180

in/not in exists/not exists 区别?,是否走索引?

in与exists的区别:

  1. not in 要保证子查询的匹配字段是非空的,否则会导致not in返回整个结果集为空
  2. 语法不同

alt

alt
not in 的快速扫描全表也就比遍历快一点。使用 left join 或 not exists 来优化 not in 操作

因为insert语句对于主键来说,插入的行不管有没有存在,都会只有行锁。

insert...on duplicate key update...
防止互相gap导致的死锁

多个索引冲突的时候只有一个数据修改

行级锁不是锁记录,而是锁索引。

如果一条sql语句操作了主键索引,MySQL就会锁定这条主键索引;如果一条语句操作了非主键索引,MySQL会先锁定该非主键索引,再锁定相关的主键索引

alt

重构索引:
如果频繁的删除导致数据过于稀疏
用declear命令看扫描粒度
rebuild

with [名字] as ( select... ) :定义一个sql语句片段

over关键字:over(partition by columnname1 order by columnname2),不能单独使用,要跟四个排序函数一起使用
一、ROW_NUMBER():序号 连续 不重复
alt

二、rank():要求排序的值相同的归为一组且每组序号一样,排序不会连续执行
alt

三、dense_rank(): 排序是连续的,也会把相同的值分为一组且每组排序号一样(可以和rank()对比记)

四、ntile():Ntile(group_num) 将所有记录分成group_num个组,每组序号一样
alt

#猿辅导##产品##笔试题目#
全部评论
许久了也没捞起来,也不告诉我挂了
点赞 回复 分享
发布于 2019-10-15 15:47
10月还有笔试呀?
点赞 回复 分享
发布于 2019-10-10 12:26
m
点赞 回复 分享
发布于 2019-10-06 11:46

相关推荐

昨天 11:18
门头沟学院 Java
作者先叠个甲:本人双非本,秋招拿到了多个大厂offer,这个过程也不容易,但是在看到很多秋招胜利之后说自己一路有多艰辛的文章,总感觉有一点不对劲,想了很久打算写一篇文章分析一下,本文仅代表作者观点,不认同的可以在评论区大家一起理性讨论。 秋招已经结束,各类社交平台出现一大批“大厂上岸”胜利结算。文章的叙事逻辑高度相同,开篇就渲染焦虑和困惑,学习时的挑灯夜读、投递时的屡屡碰壁、面试时的如履薄冰,将过往经历包装成一步艰辛的“奋斗史”,然后最终以大厂offer的胜利结尾,字里行间全是苦尽甘来的优越感。但是在我看来,这类文章的本质是结果导向的、带有浮夸的叙事,因为其内核不是分享经验,而是借“苦难”之名...
创作小队长:你的批判视角非常犀利,尤其“结果决定叙事权”的洞察非常精准,哈哈想邀请你来成为我们的创作者🫰 但我想补充一个视角:许多分享者的初衷并非炫耀结果或者苦难,我更愿意相信他们在这个过程中付出了很多,在这场战役结束后,他们迫不及待地想被看到,记录和分享都是给自己的一个交代,而非真的教会别人什么,他们的初衷未必是想制造焦虑。求职市场的残酷、经济环境的下行、世俗价值观才是这种叙事流行的土壤,作为一个普通人无法抵抗洪流。 感谢你发起这场讨论。理想的社区,既需要这样锐利的批判来保持清醒,你的洞察非常犀利,也许会启发一些人,能逐渐改变这种叙事~
点赞 评论 收藏
分享
2025-12-03 03:32
安徽大学 Java
点赞 评论 收藏
分享
评论
2
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务