1 MySQL体系结构
1.1 数据库与数据库实例
数据库:物理操作系统中的文件和其他文件类型的集合,除了硬盘存储的文件,也可以是存放在内存中的文件
数据库实例:有数据库后台进程、线程以及一个共享内存区域组成,共享内存可以被后台进程/线程所共享,是应用程序,位于用户与操作系统直接的数据管理软件
注意:不能通过修改二进制文件来更改数据库内容,仅可以通过数据库实例操作数据库。在MySQL中,实例与数据库是一一对应的,但在集群环境下会发生一个数据库被多个实例调用的情况。
MySQL由以下组件构成:
连接池组件
管理服务与工具组件
SQL接口组件
查询分析器组件
优化器组件
缓存组件
插件式存储引擎
物理文件
MySQL的重要特点是其插件式存储引擎,提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是数据库系统本身所必需的,如SQL分析器和优化器等,而存储引擎是底层物理结构的实现,此外,存储引擎是基于表的,而不是数据库
2 常见的存储引擎
2.1 InnoDB存储引擎
InnoDB存储引擎支持事务,是面向在线事务处理方面的应用,支持行锁、外键,支持类似Oracle的非锁定读,默认情况读取操作不会产生锁,在MySQL5.1版本之后被设定成默认存储引擎,此前是MyISAM
InnoDB存储引擎将数据放在一个逻辑表空间,由InnoDB自身进行管理,将每个InnoDB存储的表单独放在一个独立的ibd文件中,同样也可以使用裸设备(row disk)建立表空间
InnoDB使用多版本并发控制(MVCC)获得高并发性,实现了SQL标准的4种隔离级别,默认使用的是REPEATABLE READ(可重复读)级别,此外还提供了插入缓冲、预读、二次写、自适应哈希索引、预读等高性能和高可用的功能
针对表数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,每张表的存储按照主键的顺序存放,如果没有显式地指定主键,InnoDB将为每一行生成一个6字节的ROWID作为主键