本文对一个案例的有趣的地方进行分析,然后最后再综述下replace into的流程。基础环境 进行一个Replace操作,唯一索引冲突,SQL执行完后事务持有的锁。 Inse...
本文对一个案例的有趣的地方进行分析,然后最后再综述下replace into的流程。基础环境 进行一个Replace操作,唯一索引冲突,SQL执行完后事务持有的锁。 Inse...
作用 AHI是针对叶子节点的,作用是减少B树寻址的代价。 如何做的 通过key(index_id+fileds+bytes):value(记录的物理地址)来直接定位。这里面有...
基本概念 脏读是指读到别的事务未提交的修改。不可重复度读与幻读的区别,不可重复读的重点在于update和delete(读不到已提交的修改),幻读的重点在于insert。 隔离...
总感觉哪里不对,但是又说不上来 1、基本类型及底层实现 1.1、String 用途: 适用于简单key-value存储、setnx key value实现分布式锁、计数器(原...
基于组提交的并行复制 如何表示并行度 为了表示主库并行度,在binlog row event增加了如下的标识。 即在gtid_event中增加两个字段: sequence_n...
B树 物理组织 表空间下一级称为Segment。Segment与数据库中的索引相映射。Innodb引擎内,每个索引(包括聚簇索引)对应两个Segment:管理叶子节点的Seg...
InnoDB的Mini-transaction(简称mtr)是保证若干个page原子性变更的单位。一个mtr中包含若干个日志记录——mlog,每个日志记录都是对某个page—...
内存并发控制 为了维护内存结构的一致性,比如Dictionary cache、sync array、trx system等结构。InnoDB并没有直接使用glibc提供的库,...
锁类型 元数据锁 表锁 IX 自增锁 自增锁模式通过参数innodb_autoinc_lock_mode来控制,加锁选择参阅函数ha_innobase::innobase_l...
参数状态 made young表示old页移动到LRU头部,not young表示的是访问的old区的页,但是访问这页的时间与上次访问这个页的时间小于innodb_old_b...
内存组织 Chunk:包括两部分:数据页和数据页对应的控制体,控制体中有指针指向数据页。Buffer Chunks是最低层的物理块,在启动阶段从操作系统申请,直到数据库关闭才...
前提 flush_list是包含dirty page并按修改时间有序的链表,在刷脏时选择从链表的尾部进行遍历淘汰 异步IO,当异步写page完成后,io helper线程会调...
刷脏的种类 批量刷脏 单页刷脏操作批量刷脏是后台线程发起,单页刷脏操作是用户线程发起。批量刷脏中的同步刷脏是Redo空间不足引发的,单页刷脏是没有free的page引发的。 ...
调用栈 LRU中的flush会从flush list中remove掉,相反flush list的flush不会从lru中remove,因为可能是读热点。/* If no bl...
参数 innodb_lru_scan_depth调用栈批量刷脏会从lru和flush list中flush。innodb_lru_scan_depth影响着lru的遍历深度,...
buf_flush_page_cleaner_coordinator协调线程的主循环主线程以最多1s的间隔或者收到buf_flush_event事件就会触发进行一轮的刷脏。批...
相关参数 innodb_max_dirty_pages_pct_lwm innodb_max_dirty_pages_pct innodb_adaptive_flushing...