摘要: Innodb的启动与关闭1.启动函数的流程 innobase_start_or_create_for_mysql 启动的主要步骤包括: 1. 初始化innodb的参数 2. 初始化系统结构 主要结构:srv_sys_t 3. 加载或者创建文件 ... 阅读全文
posted @ 2014-08-31 23:05 xpchild 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 1. 概述MVCC:即多版本一致性,在事务模型下,使用version控制数据版本,关系型数据库基本都实现了MVCC,以对表数据的读写互不阻塞,增大了并发量。 Oracle和MySQL数据库都是使用undo的机制来实现MVCC。但数据库都实现了多个事务的隔离级别,所以MVCC中对可见性的判断,也会因事... 阅读全文
posted @ 2014-08-20 19:43 xpchild 阅读(819) 评论(1) 推荐(0) 编辑
摘要: 上一篇介绍了Innodb的同步机制锁:Innodb锁系列1这一篇介绍一下Innodb的事务锁,只所以称为事务锁,是因为Innodb为实现事务的ACID特性,而添加的表锁或者行级锁。这一部分分两篇来介绍,先来介绍下事务锁相关的数据结构事务锁数据结构1. 锁模式/* Basic lock modes *... 阅读全文
posted @ 2014-08-17 23:20 xpchild 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 提要: MySQL 5.5.39 Release版本正式从源码里删除了全局参数timed_mutexes。timed_mutexes原本用来控制是否对Innodb引擎的mutex wait进行 计时统计,以方便进行性能诊断。为什么要删除这个参数呢? 下面介绍下相关背景:Innodb的同步锁机制: ... 阅读全文
posted @ 2014-08-11 23:11 xpchild 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 上一篇介绍了因为子表过多,导致innodb crash的情况,但crash的原因是long semaphore waits。long semaphore waits又为何物?背景:Innodb使用了mutex和rw_lock来保护内存数据结构,同步的机制要么是互斥,要么是读写阻塞的模式, Innod... 阅读全文
posted @ 2014-08-09 21:41 xpchild 阅读(1592) 评论(0) 推荐(0) 编辑
摘要: case描述: innodb中,父表和子表通过foreign constraint进行关联, 因为在更新数据时需要check 外键constraint,如果父表被大量的子表reference, 那么在open的时候,需要open所有的child table和所有的foreign const... 阅读全文
posted @ 2014-08-06 16:23 xpchild 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 前一篇讨论了Innodb system,表空间,文件的关系及数据结构,这一篇记录下Innodb行记录的格式。前提: 1. server层和innodb层都有自己对于record的记录格式,需要进行转换。 2. 物理文件上的记录存储,需要内存中的数据结构进行对应(任何数据都需要在内存中进行处理... 阅读全文
posted @ 2014-08-01 18:29 xpchild 阅读(1483) 评论(0) 推荐(0) 编辑
摘要: 测试的用例中,因为limit的大小不同,而产生了完全不同的执行计划:1. 测试case: create table t1 ( f1 int(11) not null, f2 int(11) not null, f3 int(11) not null, f4 tinyint(1) not n... 阅读全文
posted @ 2014-07-30 16:39 xpchild 阅读(899) 评论(0) 推荐(1) 编辑
摘要: 本篇先介绍 下Innodb表空间,文件相关的内存数据结构。1. 数据结构Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体1. fil_system_struct: 表示Innodb的表空间内存cache,innodb一共包括两类tablespace,即 #defi... 阅读全文
posted @ 2014-07-29 22:47 xpchild 阅读(873) 评论(0) 推荐(0) 编辑
摘要: 同步机制Innodb实现了不依赖于平台的mutex,rwlock。1. 全局变量 对于mutex, rwlock,都有一个全局链表。1. mutex全局链表:mutex_list2. rwlock全局链表:rw_lock_list 在create创建mutex 或者rwlock的时候,加入链表。... 阅读全文
posted @ 2014-07-28 21:07 xpchild 阅读(624) 评论(0) 推荐(0) 编辑