您的位置:首页 > 数据库 > MySQL

MySQL 体系结构和存储引擎

2016-08-18 02:44 344 查看
数据库: 物理操作系统文件或其他形式文件类型的集合

实例: MySQL数据库向后台线程以及一个共享内存区组成,共享内存可以被运行的后台线程所共享

MySQL 数据库实例在某统上的表现就是一个进程。

MySQL 体系结构

连接池组件

管理服务和工具组件

SQL 接口组件

查询分析器组件

优化器组件

缓冲(Cache ) 组件

插件式存储引擎

物理文件



从概念上讲

数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合。

数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道

存储引擎是基于袤的,而不是鼓据库

InnoDB 存储引擎



从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 存储引擎



在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



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存储引擎》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: