MySQL 体系结构和存储引擎
2016-08-18 02:44
344 查看
数据库: 物理操作系统文件或其他形式文件类型的集合
实例: MySQL数据库向后台线程以及一个共享内存区组成,共享内存可以被运行的后台线程所共享
MySQL 数据库实例在某统上的表现就是一个进程。
管理服务和工具组件
SQL 接口组件
查询分析器组件
优化器组件
缓冲(Cache ) 组件
插件式存储引擎
物理文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/87a4e53cfbbd6bcdf285adc6ab7a6cab.png)
从概念上讲
数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合。
数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道
存储引擎是基于袤的,而不是鼓据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/95a73af8fba51afb0c994040ad01bebd.png)
从MySQL 数据库5.5.8 版本开始, InnoDB 存储引擎是默认的存储引擎。
InnoDB存储引擎支持事务、行级索引、支持外键、提供一致性非锁定读
将数据存放在逻辑的表空间中
支持用裸设备(row disk) 用来建立其表空间
InnoDB通过使用多版本并发控制(MVCC) 来获得高并发性,并且实现了SQL标准的4 种隔离级别,默认为REPEATABLE级别
使用一种被称为next-key locking的策略来避免幻读(Cphantom)现象的产生
提供插入缓冲(insert buffer) 、二次写(double write) 、自适应哈希索引(adaptive hash index)、预读(read ahead )等高性能和高可用的功能
采用聚集(c1ustered) 方式,每张表的存储都是按主键顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB 存储引擎会为每一行生成一个6 字节的ROWID,并以此作为主键。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/1355cfdce1612b4fc98c60eb8fa3d3d5.png)
在MySQL5.5.8版本之前MyISAM是默认的存储引擎(除Windows版本外)。
擎不支持事务、表锁设计,通常用于只读或以读为主的工作负载,支持全文索引
对于MylSAM 存储引擎表, MySQL数据库只缓存索引文件,数据文件的缓存主由操作系统本身来完成,这与其他使用LRU 算法缓存数据的大部分数据库大不相同
MylSAM 存储引擎表由MYD 和MYI 组成, MYD 用来存放数据文件, MYI 用来存放索引文件
在MySQL 5.1.23 版本之前,32/64位操作系统下,缓存索引文件缓冲区最大只能设置为4GB,之后版本的64位系统支持大于4GB的索引缓冲区
MySQL 5.0 版本开始, MylSAM 默认支持256TB 的单表数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/57d1a5a4808e4dcf22b3f968ef3afcaf.png)
实例: MySQL数据库向后台线程以及一个共享内存区组成,共享内存可以被运行的后台线程所共享
MySQL 数据库实例在某统上的表现就是一个进程。
MySQL 体系结构
连接池组件管理服务和工具组件
SQL 接口组件
查询分析器组件
优化器组件
缓冲(Cache ) 组件
插件式存储引擎
物理文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/87a4e53cfbbd6bcdf285adc6ab7a6cab.png)
从概念上讲
数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合。
数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道
存储引擎是基于袤的,而不是鼓据库
InnoDB 存储引擎
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/95a73af8fba51afb0c994040ad01bebd.png)
从MySQL 数据库5.5.8 版本开始, InnoDB 存储引擎是默认的存储引擎。
InnoDB存储引擎支持事务、行级索引、支持外键、提供一致性非锁定读
将数据存放在逻辑的表空间中
支持用裸设备(row disk) 用来建立其表空间
InnoDB通过使用多版本并发控制(MVCC) 来获得高并发性,并且实现了SQL标准的4 种隔离级别,默认为REPEATABLE级别
使用一种被称为next-key locking的策略来避免幻读(Cphantom)现象的产生
提供插入缓冲(insert buffer) 、二次写(double write) 、自适应哈希索引(adaptive hash index)、预读(read ahead )等高性能和高可用的功能
采用聚集(c1ustered) 方式,每张表的存储都是按主键顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB 存储引擎会为每一行生成一个6 字节的ROWID,并以此作为主键。
MylSAM 存储引擎
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/1355cfdce1612b4fc98c60eb8fa3d3d5.png)
在MySQL5.5.8版本之前MyISAM是默认的存储引擎(除Windows版本外)。
擎不支持事务、表锁设计,通常用于只读或以读为主的工作负载,支持全文索引
对于MylSAM 存储引擎表, MySQL数据库只缓存索引文件,数据文件的缓存主由操作系统本身来完成,这与其他使用LRU 算法缓存数据的大部分数据库大不相同
MylSAM 存储引擎表由MYD 和MYI 组成, MYD 用来存放数据文件, MYI 用来存放索引文件
在MySQL 5.1.23 版本之前,32/64位操作系统下,缓存索引文件缓冲区最大只能设置为4GB,之后版本的64位系统支持大于4GB的索引缓冲区
MySQL 5.0 版本开始, MylSAM 默认支持256TB 的单表数据
CREATE TABLE t (i INT) ENGINE = MYISAM; --指定存储引擎
存储引擎间的比较
参考地址:http://dev.mysql.com/doc/refman/5.7/en/storage-engines.html![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/14/57d1a5a4808e4dcf22b3f968ef3afcaf.png)
mysql> show engines \G; *************************** 1. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keys Transactions: YES XA: YES Savepoints: YES *************************** 2. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tables Transactions: NO XA: NO Savepoints: NO *************************** 3. row *************************** Engine: MEMORY Support: YES Comment: Hash based, stored in memory, useful for temporary tables Transactions: NO XA: NO Savepoints: NO *************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears) Transactions: NO XA: NO Savepoints: NO *************************** 5. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engine Transactions: NO XA: NO Savepoints: NO *************************** 6. row *************************** Engine: CSV Support: YES Comment: CSV storage engine Transactions: NO XA: NO Savepoints: NO *************************** 7. row *************************** Engine: ARCHIVE Support: YES Comment: Archive storage engine Transactions: NO XA: NO Savepoints: NO *************************** 8. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance Schema Transactions: NO XA: NO Savepoints: NO *************************** 9. row *************************** Engine: FEDERATED Support: NO Comment: Federated MySQL storage engine Transactions: NULL XA: NULL Savepoints: NULL 9 rows in set (0.24 sec)
参考资料
《MySQL技术内幕:InnoDB存储引擎》相关文章推荐
- MYSQL性能调优
- MySQL数据的主从复制、半同步复制和主主复制详解-转
- MySQL外键与外键关系说明(简单易懂)
- MySQL外键使用及说明详解
- MySQL删除外键问题小结
- Mysql 自定义随机字符串的实现方法
- mysql datetime 类型的字段进行时间比较
- 2.使用jodd 操作mysql数据库
- MySQL冷知识
- mysql 集合操作UNION DISTINCT和UNION ALL
- mysql(二)存储引擎和数据类型
- MySQL常用DDL
- Mysql用户权限管理
- 初始化 mysql时报错
- 安装MYSQL5.7.14遇上的那些小事~
- MySQL 常用命令详解
- 使用cmake安装mysql5.5.13
- mysql5.6 中文乱码问题
- Mysql 查询缓存
- 【MySQL】MySQL快速插入大量数据