数据库
物理操作系统文件或其它形式文件类型的集合。在MySQL中,数据库文件可以是frm、myd、myi、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但是定义仍然不变
数据库实例
由数据库后台进程/线程以及一个共享内存区组成。共享内存可以被运行的后台进程/线程所共享。需要牢记的是,数据库实例才是真正用来操作数据库文件的
MySQL 被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程架构有所不同(Oracle的Windows版本也是的基础多线程的架构)。这也就是说,MySQL数据库实例在系统上的表现就是一个进程。
当启动实例时,MySQL数据库会读取配置文件,根据配置文件的参数来启动数据库实例。这与Oracle的参数文件(spfile)相似,不同的是,在Oracle中,如果没有参数文件,启动时会提示找不到该参数文件,数据库启动失败。而在MySQL数据库中,可以没有配置文件,在这种情况下,MySQL会按照编译时的默认参数设置启动实例。用一下命令可以查看,当MySQL数据库实例启动时,他会在哪些位置查找配置文件。
./mysql --help | grep my.cnf
MySQL会以读取到的最后一个配置文件中的参数为准。在Linux环境下,配置文件一般放在/etc/my.cnf下。在Windows平台下,配置文件的后缀名可以是.cnf,也可能是.ini。
从图1-1我们可以发现,MySQL由以下几个部分组成:
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询分析器组件
- 优化器组件
- 缓冲(Cache)组件
- 插件式存储引擎
- 物理文件