
MySQL进阶
文章平均质量分 97
此栏文章主要来自“康师傅”的视频及前辈总结的文章中,目的是为了记录下学习笔记。
EijoaHoaiQ:D
来日方长
展开
-
MySQL进阶之(十四)MVCC-多版本并发控制
在 MVCC 机制中,多个事务对同一个行记录进行更新会产生多个历史快照,这些历史快照保存在 undo log 里,如果一个事务想要查询这个行记录,需要读取哪个版本的行记录呢?这时就需要用到 ReadView 了,它帮助我们解决了行的可见性问题。ReadView 就是事务在使用 MVCC 机制进行快照读操作时产生的读视图。当事务启动时,会生成数据库系统当前的一个快照,InnoDB 为每个事务构造了一个数组,用来记录并维护系统当前活跃事务的 id(活跃指的就是,启动了但还没提交)。原创 2024-11-10 15:53:54 · 676 阅读 · 0 评论 -
MySQL进阶之(十三)MySQL锁机制
脏读的产生是因为当前事务读取了另一个事务未提交的记录,如果另一个事务再写记录的时候就给这条记录加锁,那么当前事务就无法继续读取该记录了,所以也就不会有脏读的问题产生了。不可重复读的产生是因为当前事务先读取了一条记录,另外一个事务对该记录做了改动之后并提交,当前事务再次读取时会获得不同的值,如果在当前事务读取记录时就给该记录加锁,那么另一个事务就无法修改该记录,也就不会发生不可重复读了。幻读。原创 2024-11-03 16:35:56 · 876 阅读 · 0 评论 -
MySQL进阶之(十二)MySQL事务日志-undo log
在事务中更新数据的前置操作其实就是要先写入一个 undo log。原创 2024-10-20 21:01:33 · 1138 阅读 · 0 评论 -
MySQL进阶之(十一)MySQL事务日志-redo log
这个和磁盘的扇区有关,机械磁盘默认的扇区就是 512 字节,如果要写入的数据大于 512 字节,那么要写入的扇区肯定不止一个,这时就要设计到盘片的转动,找到下一个扇区,假设需要写入两个扇区 A 和 B,如果扇区 A 写入成功,而扇区 B 写入失败,那么就会出现非原子性的写入,而如果每次只写入和扇区的大小一样的 512 字节,那么每次的写入都是原子性的。对于使用 InnoDB 存储引擎的表来说,无论是用于存储用户数据的索引,还是各种系统数据,都是以【页】的形式存放在表空间中的。原创 2024-10-18 23:11:13 · 1221 阅读 · 0 评论 -
MySQL进阶之(十)事务和隔离级别
MySQL 事务主要用于处理操作量大、复杂度高的数据。比如:张三给李四转钱这个操作,必须同时完成两步:扣除张三账户中的钱、新增李四账户中的钱。这两步数据库操作就构成了一个事务。事务是一组逻辑操作单元,使数据从一种状态变换到另一种状态。事务是数据库区别于文件系统的重要特性之一,有了事务就会让数据库始终保持一致性,同时还能通过事务机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。在 MySQL 中只有使用了InnoDB 存储引擎的数据库或表才支持事务。原创 2024-07-22 23:04:04 · 721 阅读 · 0 评论 -
MySQL进阶之(九)数据库的设计规范
在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,就必须满足一定的范式(Normal Form,简称:NF)。范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF,又称完美范式)。原创 2024-05-28 22:54:13 · 949 阅读 · 0 评论 -
MySQL进阶之(八)索引优化与查询优化
提前为下文做数据准备,两张表:学员表(student) 插入 50w 条数据,班级表(class) 插入 1w 条数据。原创 2024-05-16 22:46:16 · 923 阅读 · 0 评论 -
MySQL进阶之(七)EXPLAIN 详解
id 如果相同,可以认为是一组,自上往下顺序执行。在所有组中,id 值越大,优先级越高,越先执行。id 的每个值都代表一趟独立的查询,一个 sql 的查询趟数越少越好。原创 2024-04-10 22:10:43 · 1063 阅读 · 0 评论 -
MySQL进阶之(六)索引的使用与设计原则
① 冗余索引例如:通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一个专门针对 name 列的索引就算是一个冗余索引,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,例如:col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。原创 2024-03-28 22:05:59 · 1228 阅读 · 0 评论 -
MySQL进阶之(五)InnoDB数据存储结构之表空间
在。原创 2024-03-09 19:59:16 · 1348 阅读 · 0 评论 -
MySQL进阶之(四)InnoDB数据存储结构之行格式
之所以要存储 NULL 值,是因为数据都是需要对齐的,如果没有标注出来 NULL 值的位置,就有可能。原创 2024-03-06 22:54:51 · 1458 阅读 · 0 评论 -
MySQL进阶之(三)InnoDB数据存储结构之数据页结构
InnoDB数据页结构原创 2024-03-01 23:11:01 · 1459 阅读 · 0 评论 -
MySQL进阶之(二)索引的数据结构
索引的数据结构原创 2024-01-09 20:13:08 · 1919 阅读 · 2 评论 -
MySQL进阶之(一)逻辑架构
逻辑架构、select语句的执行过程、update语句的执行过程原创 2023-12-28 22:50:55 · 1809 阅读 · 1 评论