MySql数据库
文章平均质量分 58
想去大厂的JAVAer
这个作者很懒,什么都没留下…
展开
-
Mysql中EXPLAIN解读
当EXPLAIN与可解释的语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理该语句,包括有关如何连接表以及以何种顺序连接表的信息。在select语句之前增加explain关键字,执行后MySQL就会返回执行计划的信息,而不是执行sql。可以通过Explain来查看sql语句中的索引执行情况。原创 2022-11-11 16:59:23 · 737 阅读 · 1 评论 -
MySql中的锁
由于两个事务都需要对多行进行操作,与此同时会对多行进行上锁,待事务提交之后才会释放行锁。因此在上图中都无法获取到自己所需要的行锁,两事务都无法正常提交事务,故而陷入死锁。在InnoDB事务中,⾏锁是在需要的时候才加上的,但并不是不需要了就⽴刻释放,⽽是要等到事务提交后才释放。⾏锁就是针对数据表中行记录的锁。比如事务A更新了一行,而这时候事务B也要更新同⼀行,则必须等事务A的操作完成后才能进⾏更新。MySql中并不是所有引擎都支持行锁,如MyISAM引擎就不⽀持行锁,但InnoDB是⽀持⾏锁的。...原创 2022-07-30 17:12:06 · 167 阅读 · 0 评论 -
MySql索引
若根据非主键字段进行查找时,则会先扫描对应的非主键索引的B+树,在叶子节点处得到对应的主键值,再去主键索引的B+树进行查找,得到所需要查找的值。这个最左前缀可以是联合索引的最左N个字段,也可以是字符串索引的最左M个字符。如果有一个3列索引(a,b,c),则已经对(a)、(a,b)、(a,b,c)上建立了索引;如果有一个2列的索引(a,b),则已经对(a)、(a,b)上建立了索引;若根据主键字段进行查找时,则会直接扫描主键索引的B+树,得到所要查找的数据;......原创 2022-07-29 15:43:53 · 225 阅读 · 0 评论 -
SQL语句的执行顺序
在分组前对数据进行过滤,筛选出表中满足条件的行,不可与聚合函数连用。在分组后对数据进行过滤,筛选出满足条件的组,可与聚合函数连用。原创 2022-07-28 22:01:52 · 91 阅读 · 0 评论 -
MySql事务
针对不同隔离级别,数据库⾥⾯会创建⼀个视图,访问的时候以视图的逻辑结果为准。在“可重复读”隔离级别下,这个视图是在事务启动时创建的,整个事务存在期间都⽤这个视图。在“读提交”隔离级别下,这个视图是在每个SQL语句开始执⾏的时候创建的。这⾥需要注意的是,“读未提交”隔离级别下直接返回记录上的最新值,没有视图概念;系统会判断当没有事务需要⽤到这些回滚⽇志的时候,回滚⽇志会被删除。即当系统⾥没有线程使用⽐这个回滚⽇志更早的read-view的时候。读未提交、读已提交、可重复读、串⾏化。脏读、不可重复读、幻读。..原创 2022-07-27 20:39:28 · 237 阅读 · 0 评论 -
sql更新语句的执行流程
与执行查询语句不同的是,更新流程中有两个重要的日志模块redolog(重做日志)和binlog(归档日志)。原创 2022-07-26 20:05:53 · 473 阅读 · 2 评论 -
sql查询语句的执行流程
优化器的作用主要是确定语句的执行方案,保证执行时最优的效率。比如在表⾥⾯有多个索引的时候,决定使⽤哪个索引;或者在⼀个语句有多表关联(join)的时候,决定各个表的连接顺序。若查询结果已经被缓存在内存之中,则直接返回结果。若内存中无缓存,则继续执行后续阶段。由于缓存失效非常频繁且查询缓存命中率低,故MySql8.0以后将查询缓存功能删除。MySQL需要对SQL语句做解析。这部分主要是进行词法分析和语法分析。连接器负责跟客户端建⽴连接、认证身份获取权限、维持和管理连接。执行器是负责执行语句。.........原创 2022-07-26 11:44:55 · 415 阅读 · 0 评论