一:数据库和实例
数据库:物理操作系统文件或其他形式文件类型的集合。数据文件包括frm,MYD,MYI,idb结尾文件
实例:MySQL数据库由后台线程以及一个共享内存区组成.数据库实例才是真正由于操作数据库文件的。Mysql数据库实例在系统上的表现就是一个进程. linux 查看 mysql 进程pid:
ps -ef | grep mysqld
二:MySql 体系结构
从图中可以看出,Mysql由几下部分组成:
连接池组件
管理服务和工具组件
Sql接口组件
查询分析器组件
优化器组件
缓冲组件
插件式存储引擎
物理文件
其中存储引擎是基于表的,而不是数据库的。
三:MySql存储引擎
3.1 Innodb 存储引擎
Innodb存储引擎支持事物,其设计目标主要面向在线事物处理的应用.其特点是行锁设计,支持外键,并支持类似于Oracle的非锁定读。从5.5.8版本开始为Mysql的默认搜索引擎.
Innodb通过使用多版本并发控制(MVCC)来获得高并发性,并实现了SQL标准的四种隔离级别,默认的是REPEATABLE级别,同时,使用一种被称为next-key locking的策略来避免幻读,除此之外,Innodb存储引擎还提供了插入缓存(Insert buffer)和二次写(Double write),自适应哈希索引,预读等高性能和高可用的功能。
对于表中数据的存储,采用聚集的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显式的指定主键,Innodb会为每条记录生成一个rowid作为主键.
3.2 MyISAM存储引擎
MyISAM存储引擎不支持事务,表锁设计,但是支持全文索引。主要面向一些OLAP(联机分析处理)数据库应用。MyISAM的缓存池只缓存索引文件,不缓存数据文件。
MyISAM存储引擎表由MYD(D 表示存储数据)和 MYI(I 表示存储索引).5.0 版本前表最大限制4GB,以后是256TB。