MySQL体系结构和存储引擎
1. 数据库和实例
数据库:物理操作系统文件或其他形式文件类型的集合。
实例:MySQL数据库由后台线程以及一个共享内存区组成。(数据库实例才是真正用于操作数据库文件的)
实例与数据库的关系通常是一一对应的,但是在集群情况下可能存在一个数据库被多个数据实例使用的情况。
MySQL被设计为一个单进程多线程架构的数据库,也就是说MySQL数据库实例在系统上的表现就是一个进程。
从概念上说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的。用户只有通过数据库实例才能和数据库打交道。
2. MySQL体系结构
由上图可以看出,MySQL由以下几部分组成:
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询分析器组件
- 优化器组件
- 缓冲组件
- 插件式存储引擎
- 物理文件
3. MySQL存储引擎
MySQL数据库的核心就在于存储引擎!!!
一些主流引擎有:
- InnoDB存储引擎(基本上大部分顶尖公司都是使用该引擎)
- MyISAM存储引擎
- NDB存储引擎
- Memory存储引擎
- Archive存储引擎
- Federated存储引擎
- Maria存储引擎
- 其他存储引擎
注意:MySQL存在不支持事务(Transactions)的存储引擎。
4. 连接MySQL
连接MySQL本质上是进程通信。常用的进程通信方式有:
- 管道
- 命名管道
- 命名字
- TCP/IP套接字(任何平台下都提供的连接方式,也是网络中使用得最多得一种方式;客户端在一台服务器上,MySQL实例在另一台服务器上)
- UNIX域套接字(基于UNIX和Linux环境,客户端和MySQL实例都在一台服务器上)