Mysql
目录
事务的特征
- 原子性
- undo log 出现错误回滚业务
- 隔离性
- 写写操作、
- 通过锁来实现
- 写读操作
- MVCC
- 写写操作、
- 持久性
- 由redo log实现
- 预写式log 追加模式速度很快 要比mysql的随机写入快很多
- 缓冲区中
- 0 每秒同步一次
- 1 事务提交同步写入 一般使用1
- 2 一步写入
- 一致性
MVCC (多版本并发控制)
版本链与Undo log
- 事务id 该条记录的事务 trx id
- 回滚指针 记录着上一条记录的地址
- readview 快照读 区别于当前读 当前读的一般为写入与更新中 指导mysql具体取那条数据
readview数据结构
- m ids 当前活跃的事务id
- min trx id 最小的活跃事务id
- max trx id 最大的活跃id
- creaor trx id
ReadView如何判断版本链中的记录可用呢
版本链中的
- trx_id == creator id 可用
- trx_id < min_id 早于当前的事务的事务都已提交 可以获取
- trx_id > max_id 当前的事务是在活动事务之后的 不可获取
- min_trx_id <= trx_id<=max_trx_id 如果事务在m_ids中 不可以访问 如果不在那么可以访问
RR可重复读 RC读已提交
- 可重复读的快照读 是在事务开始的时候进行的 公用一个快照读
- 读已提交 在每个select都要生成readview 容易出现不可重复读问题 会读到已经提交的事务
大量数据的优化
最左前缀法则
- 索引创建的
索引
数据结构原理
B+树的结构 叶子结点由双向链表相连
- 飞叶子节点不存储数据
- 只在叶子结点存储数据并且 叶子结点由双向链表链接 避免了回查这一问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?