目录
mysql基础学习
mysql 执行流程
三大范式
acid
内存模型
mvcc
mvcc中涉及的概念
mysql基础学习
字段长度表示问题
mysql中的字段长度表示的是字符长度,而非字节长度,例如varchar(64)表示最大字符串长度为64,而非字节大小为64
mysql 执行流程
三大范式
第一范式:要求一张表的每个字段,设计时都必须具备原子性,即单个列只表示一个值,不可再分。
第二范式:要求一张表的所有字段,都必须依赖于主键,也就是一张表只能存同一个业务属性的字段。
第三范式:要求表中每一列数据不能与主键之外的字段有直接关系,也就是表中只允许一个主属性存在
acid
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
许可协议。转载请注明出处!