MySQL体系结构和存储引擎

数据库与传统文件系统最大的区别在于数据库是支持事务的

一、定义数据库与实例
1、数据库:
物理操作系统的文件或者其他文件类型的集合,依照某种数据模型组织起来并存储于二级存储器中的数据集合。
2、实例:
MySQL数据库由一个后台进程以及一个共享区域组成,是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据定义、数据查询、数据维护、数据运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

*:在集群情况下,可能出现一个数据库多个实例的情况;
     MySQL被设计成为一个单进程多线程架构的数据库;
     MySQL数据库实例在系统上表现就是一个进程。

二、MySQL体系结构
MySQL由以下几个部分组成
①连接池组件 ②管理服务与工具组件 ③sql接口组件 ④查询分析器组件
⑤优化器组件 ⑥缓冲组件 ⑦插件式存储引擎 ⑧物理文件

三、存储引擎
MySQL数据库区别于其他数据库的最重要的一个特点是它的插件式表存储引擎,存储引擎是基于表,而不是基于数据库的。
存储引擎的好处在于,可以根据业务的需要选择不同特点的存储引擎,从而达到目的。

几个常见的存储引擎:

1、InnoDB存储引擎
①最重要的一个特点在于“支持事务”。其设计目标面向在线事务处理(OLTP)的应用。
②将数据存储在一个逻辑的表空间中,这个表空间就像黑盒一样由该存储引擎自行管理。
③通过使用多版本并发控制(MVCC)来获得高并发性。
④提供了插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用功能。
⑤采用了“聚集”的方式,因此每张表的存储都是按照主键顺序进行存放,若没有显示的定义主键,则该存储引擎会为每一行生成一个6字节的ROWID,并以此为主键。

2、MyISAM存储引擎
①MyISAM“不支持事务”、表锁设计、“支持全文索引”,主要面向一些OLAP数据应用。
②MyISAM表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。
③对于MyISAM存储引擎表,MySQL数据库只缓存其索引文件,数据文件的缓存交给操作系统本身完成。

3、Maria存储引擎
①新开发的引擎,设计目标主要是用来取代MyISAM
②支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务与非事务的安全选项,以及更好的BLOB字符类型的处理性能。

4、NDB存储引擎
①是一个集群存储引擎。
②数据全部放在内存中(从MySQL5.1 版本之后可以将非索引文件存放在磁盘),因此主键查询非常快,并且通过天剑NDB数据存储节点可以线性地提高数据库性能,是一个高可用、高性能的集群系统。
③NDB存储引擎的连接操作时在MYSQL数据库层完成的,而不是在存储引擎层,所以,复杂的连接操作需要巨大的网络开销,因此查询速度非常慢。如果解决了这个问题,NDB存储引擎的市场应该是巨大的。

5、Memory存储引擎
①表中的数据存储在内存中,如果数据库重启或者宕机,数据就会消失。适合存放临时数据。
②速度虽快,但是只支持表锁,并发性能差,并且不支持TEXT和BLOB列的类型,最重要的是存储变长字段(vachar)时事按照定长字段(char)方式进行的,因此浪费内存。

三、连接MySQL的几种方式
1、TCP\IP
2、命名管道和共享内存
3、UNIX域套接字

你可能感兴趣的:(MySQL体系结构和存储引擎)