2025-01-26
其他
00

目录

mysql基础学习
mysql 执行流程
三大范式
acid
内存模型
mvcc
mvcc中涉及的概念

mysql基础学习

字段长度表示问题

mysql中的字段长度表示的是字符长度,而非字节长度,例如varchar(64)表示最大字符串长度为64,而非字节大小为64

mysql 执行流程

三大范式

js
第一范式:要求一张表的每个字段,设计时都必须具备原子性,即单个列只表示一个值,不可再分。 第二范式:要求一张表的所有字段,都必须依赖于主键,也就是一张表只能存同一个业务属性的字段。 第三范式:要求表中每一列数据不能与主键之外的字段有直接关系,也就是表中只允许一个主属性存在

acid

js
A/Atomicity:原子性,指组成一个事务的一组SQL要么全部执行成功,要么全部执行失败。 C/Consistency:一致性,指任何一个事务发生的前后,库中的数据变化必须一致。 I/Isolation:独立性/隔离性,指同时存在多个并发事务时,各个事务之间执行的操作不会相互影响。 D/Durability:持久性,指一个事务但凡提交之后,就必须确保事务变更过的数据永远不会丢失。

内存模型

  • 全局内存区域 : 在 MySQL 启动时分配,由所有客户端连接共享
    • 缓冲池:混存索引和数据表,将磁盘io转变为内存访问
    • 重做日志缓存区: 事务提交前,暂存 redo_log
  • 线程内存区域 : 每当有一个客户端连接到 MySQL,服务器都会为其分配独立的内存空间。如果连接数过多,这部分内存会迅速耗尽系统资源
    • order buffer
    • join Buffer
    • read Buffer 用于全表或者索引扫描时的顺序缓存
    • binlog Cache 在事务提交期间,用来记录binlog的临时内存

mvcc

mvcc中涉及的概念

  • 每行记录都有三个隐藏字段
    • DB_TRX_ID (6字节):最后一次修改该记录的 事务 ID。
    • DB_ROLL_PTR (7字节):回滚指针,指向该记录的上一个版本(在 Undo Log 中)。
    • DB_ROW_ID (6字节):隐藏的主键(如果表没有定义主键,则使用这个字段)。
  • review视图中包含几个核心字段
    • creator_trx_id:创建该 Read View 的事务ID
    • m_ids:当前活跃的事务(未提交) ID 列表。
    • min_trx_id:活跃事务中最小的 ID。
    • max_trx_id:预分配给下一个事务的 ID(即当前最大事务 ID + 1)。

本文作者:曹子昂

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!