Mysql Logic Architecture

1. Mysql最与众不同的特点是存储引擎结构,他的设计把查询处理和server的其他task与data的存取分离开来
2. mysql逻辑结构
connection manager
查询解析优化执行:优化器会询问StorageEngine的性能及某些操作的cost
storage engine
3. cuncurrency control
Read/Write Lock
Lock Granularity: table lock、row lock
4. Transaction
isolation level:
transction logging:使事务更有效,每次修改不直接更新硬盘,而是:
1.更新内测数据 
2.修改计入ts log(fast,serial io(而非random io))
3.之后再写入硬盘
Transaction in mysql:三种支持事务的存储引擎(InnoDB, NDB Cluster, Falcon);第三方engine(solidDB, PBXT)
AutoCommit
Mix storage engine in ts:server不管ts,storageEngine负责:一个事务中多种类型engine不可靠:
一个ts既有InnoDB又有MyISAM,没回滚则正常,发生回滚则MyISAM无法回滚,而且可能还没有出错信息
支持显式、隐式lock
5. MultiVersion Cuncurrency Control:多版本并发控制,与row lock配合使用,大部分情况不需要设read lock,cost更低:读不锁,写锁必要的行
InnoDB实现原理:
1. 为每一行额外存储两个值(新建 修改删除时)
2. 存储system veriosn number,当增删改事件发生时   
    svn:事务开始时,svn会自增长
3. 每个事务开始时,保存自己的svn

每个查询都需要校验每行的svn和事务的svn,以REPEATABLE READ为例:
select:需要满足两个条件
    每一行的svn要小于等于事务的svn:事务开始前就存在/事务新建或修改了这条记录
    每一行的delete version为空,或者大于当前事务:表明row未被删除,或者是事务开始之后删除的
insert: 记录新行的svn
delete:svn标记为当前行的delete id   
update:新建一行,version设为svn;旧行的delete version也设为svn
 
6. Storage Engine:... ....