体系结构
- 数据库:物理操作系统文件或其他形式文件类型的集合,是按照某种数据模型组织起来并存放在存储器中的数据集合。
- 实例:数据库实例是程序,是位于用户和操作系统之间的一层数据管理软件。
Mysql数据库体系结构图:
由图可见,MySQL由主要由以下几部分组成:
- 连接池组件:为解决资源的频繁分配﹑释放所造成的问题,为数据库连接建立一个“缓冲池”。
- 管理服务和工具组件:系统管理和控制工具,例如备份恢复、Mysql复制、集群等;
- SQL接口组件:用户SQL命令接口,进行DML/DDL、存储过程、视图、触发器等操作和管理;
- 解析器组件:SQL命令传递到解析器的时候会被解析器解析和验证。
- 优化器组件:SQL语句在查询之前会使用查询优化器对查询进行优化。
- 缓冲组件:查询缓存,如果查询缓存中有查询结果,查询语句可以直接去查询缓存中取数据。
- 插件式存储引擎:存储引擎是MySql中具体的与文件打交道的子系统,Mysql的存储引擎是插件式的。
- 物理文件
存储引擎
MySQL的存储引擎是插件式的,每个存储引擎都有各自的特点,能根据具体的应用建立不同的存储引擎表。
MySQL主要有9种存储引擎,可以通过show engines;
语句查询:
Engine | Support | Comment | Transactions | XA | Savepoints |
---|---|---|---|---|---|
MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
CSV | YES | CSV storage engine | NO | NO | NO |
FEDERATED | NO | Federated MySQL storage engine | |||
PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
MyISAM | YES | MyISAM storage engine | NO | NO | NO |
InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
ARCHIVE | YES | Archive storage engine | NO | NO | NO |
数据库应用主要分两类:OLAP(联机分析处理)和OLTP(联机事务处理)。
OLAP (联机分析处理)主要特点:
- 实时性要求不高
- 数据量大
- 并发量小
OLTP(联机事务处理)主要特点:
- 实时性要求高
- 数量小
- 并发高
- 要求满足ACID
存储引擎简介:
-
InnoDB
InnoDB是一个事务型的存储引擎,支持行级锁和外键约束。从MySQL5.5.8版本开始,InnoDB是默认存储引擎。其设计主要面向OLTP的应用。
-
MyISAM
MyISAM存储引擎不支持事务、表锁,支持全文索引,主要面向OLAP应用。
MyISAM存储引擎由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。此外,MyISAM引擎的另一个与众不同的地方是它的缓冲池只缓存索引文件。
-
Memory
Memory采用的逻辑介质是内存,响应速度应该是很快的,但是当数据库重启或发生崩溃时数据会丢失。只支持表锁,并发性能差。
-
Archive
Archive引擎只支持INSERT和SELECT操作,支持行锁,不支持事务。使用zlib算法将数据行进行压缩后存储,压缩比一般可达1:10。Archive存储引擎非常适合存储归档数据。Archive存储引擎使用行锁来实现高并发的插入操作,但是本身不是事务安全的,其设计目的主要是提供快速插入和压缩数据功能。
-
MRG_MYISAM
Mrg_MyISAM存储引擎,是一组MyIsam的组合,也就是说,他将MyIsam引擎的多个表聚合起来,但是他的内部没有数据,真正的数据依然是MyIsam引擎的表中,但是可以直接进行查询、删除更新等操作。
-
CSV
可以将scv文件作为MySql的表来使用,但是不支持索引。CSV引擎表所有的字段都必须为非空的,创建的表有两个一个是CSV文件和CSM文件。
-
FEDERATED
Federated存储引擎是访问MySQL服务器的一个代理。
-
PERFORMANCE_SCHEMA
MySQL5.5以后新增了一个存储引擎,就是Performance_Schema,他主要是用来收集数据库服务器的性能参数。MySQL用户不能创建存储该类型的表。
他提供了以下的功能:
- 提供进程等待的详细信息,包括锁、互斥变量、文件信息。
- 保存历史的事件汇总信息,为Mysql服务器的性能做出详细的判断。
- 对于新增和删除监控时间点都非常容易,并可以随意的改变Mysql服务器的监控周期
需要在配置文件my.cnf中进行配置才能开启。
-
BLACKHOLE
“黑洞”存储引擎,他会丢弃所有的插入的数据,服务器会记录下Blackhole表的日志,所以可以用于复制数据到备份数据库。
文件
资料摘抄
https://blog.csdn.net/wangyang1354/article/details/50740041
《MySQL技术内幕》