![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 88
做时间的朋友。
注重知识的积累,以量变实现质变
展开
-
Mysql基于成本选择索引
在Mysql5.6及之后的版本中,我们还可以使用optimizer trace功能查看每个索引、全表扫描具体的成本是多少,从而知道mysql为什么选这个索引,或为什么走全表扫描。我们仔细看上面俩个执行计划的rows列,可以很明显的发现第二个执行计划的rows小得多,也就是说要扫描的行更小,CPU的成本也就会更小,所以mysql选择了走索引。这也是基于成本考虑的,哪个索引的成本更低,就使用哪个索引。本篇文章介绍mysql基于成本选择索引的行为,解释为什么有时候明明可以走索引,但mysql却没有走索引的原因。原创 2023-09-10 13:27:55 · 654 阅读 · 0 评论 -
MVCC,MySql可重复读的实现秘密
在MySQL中,为了避免在并发环境下,事务受到其他事务的干扰,MySQL提供了可重复读隔离级别。即一次事务多次查询结果相同,即使事务执行过程中数据被其他的事务修改了。 为了避免事务执行期间读到其他事务修改的数据,最简单的做法是对读取的数据进行加锁,但很显然,这样会导致性能极具下降,因此不可取。 为了实现可重复读的同时,拥有较高的并发性能,MySQL使用MVCC实现可重复读。 undo日志 由于MVCC是基于undo日志实现的,所以我们先来了解一下undo日志。 undo日志主要用于日志事务回滚,MySQ原创 2021-05-17 10:03:28 · 248 阅读 · 1 评论 -
MySQL原理初探之一条SQL的执行需要经历什么
首先先来看一张MySQL的架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5原创 2021-04-28 11:09:11 · 125 阅读 · 0 评论 -
mysql普通索引和唯一索引选择
结论 mysql普通索引和唯一索引的区别: 查找:唯一索引在找的时候,由于结果只有一个,所以根据B+数查找的时候,找到第一个满足查询条件的记录就会停止检索。而普通索引判断下一条记录是否满足,也就是说普通索引多了指针寻址和判断,但是这对于性能的影响是微乎其微的。 插入和修改:普通索引在插入和修改的时候,会使用到change buffer,从而大幅提高性能。而唯一索引由于需要确保数据满足唯一性约束,所以无法使用change buffer。 所以,普通索引和唯一索引的主要区别在于插入和修改,换个说法就是能否使原创 2020-10-26 18:38:05 · 229 阅读 · 0 评论 -
触发器
触发器 1、为什么要使用触发器 触发器含义:当表的某个特定事件发生前或发生后执行一些操作。如: 增加一条学生记录时,检查年龄是否符合范围要求 当删除一条学生信息时,自动删除其成绩表上对应的记录 每当删除一条数据时,在数据库存档表中保留一个备份副本 作用:主要用于保护表中的数据。特别是当有多个 表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。 在MySql中只有执行insert...原创 2019-06-20 22:31:11 · 524 阅读 · 0 评论