Mysql InnoDB浅析
Golden_Dog
这个作者很懒,什么都没留下…
展开
-
Mysql InnoDB 事务简单理解
1. 事务基本特性: ACID A 由undo 来实现的 I 由锁实现 D 由redo实现 C 由AID共同保证 2. undo 实现了 事务的回滚 以及 MVCC 事务的回滚: 记录下事务期间的所有Update/Delete/Insert操作的前后value,当需要rollback时会做一个相反的操作。 MVCC:undo恰好记录下了事务期间的快照信息,当Update/Delete原创 2018-01-31 14:32:06 · 1126 阅读 · 0 评论 -
InnoDB理解
个人理解InnoDB主要实现了两个功能:速度+正确性 思维导图如下:原创 2018-02-05 22:10:51 · 189 阅读 · 0 评论 -
Mysql InnoDB 结构
1. Master Thread(老版本的基本逻辑,之后版本无非在此基础上做了一些细节调优,更加适应时代) 脏页刷新、合并插入缓冲、UNDO回收 每秒操作流程: 重做日志缓冲刷新到磁盘(记录操作) 合并插入缓冲 刷新100个脏页至磁盘(checkpoint) 如果当前没有用户活动,则切换到background loop 每十秒操作流程: 刷新脏页至磁盘 合并插入缓冲 重做日志缓...原创 2018-11-24 14:07:00 · 113 阅读 · 0 评论 -
单机与分布式一致性理解
ACID是数据库支持的基本特性: A:原子性 = 一荣俱荣,一损俱损。支持提交+回滚。 单机: 方案:通过undo日志(逻辑反操作)实现。 分布式: 方案:2PC/3PC/Paxos。一方面多个服务相关的数据库之间需要一荣俱荣,一损俱损;另一方面每个服务的分布式数据库内部需要保证每个节点的原子性(当有分表的时候)。 C:一致性 = 从一个正确的状态到下一个正确的状态 单机: ...原创 2018-12-01 18:33:42 · 295 阅读 · 0 评论 -
分库分表初识
分库: 一般用于拆分不同的业务场景。业务场景之间关联越少越好 分表:一般用于拆分同类数据。 难点: 跨库/跨表查询操作: 1. 排序 应用层/中间件 需要做归并排序 2. 函数处理 max/min/sum/count 应用层/中间件 需要做处理 3. 求平均值 转化为sum + count 4. 非排序分页 先按照条件确定每个表的个数,按照比例获取 5. 排序后分页 ...原创 2018-12-01 22:15:29 · 136 阅读 · 0 评论 -
InnoDB事务理解
1. 标准事务【官方定义】 read-uncommitted:会出现脏读,读到未提交的内容 read-committed:会出现不可重复读,读到提交了的内容(某行) repeatable read:会出现幻读,范围读取读到新insert的内容(某范围行) Serializable:完美 2. InnoDB read-uncommitted:无甚区别 read-committed...原创 2018-12-12 22:38:35 · 509 阅读 · 0 评论