数据库和实例

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

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

mysql 数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。mysql插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器,而存储引擎是底层物理结构的实现,每个存储引擎开发者可以按照自己的意愿来进行开发。

存储引擎是基于表的,而不是数据库。

Mysql体系结构

mysql由几个部分组成:

连接池组件

管理服务和工具组件

SQL 接口组件

查询分析器组件

缓冲组件

插件式存储引擎

物理文件

![00cc9f6fb6b6b14fa708adbad2c40ec4.png](en-resource://database/450:1)

Mysql 数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。Mysql插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器等。

存储引擎是基于表的,而不是数据库。

Mysql存储引擎

MySQL数据库独有的插件式体系结构,并了解到存储引擎是MySQL区别于其他数据库的一个最重要特性。存储引擎的的好处是,每个存储引擎都有各自的特点,能够根据具体的应用建立不同的存储引擎表。

由于MySQL 数据库开源特性,存储引擎可以分为MySQL官方存储引擎和第三方存储引擎,最为广泛的为InnoDB,甚至在MySQL数据库OLTP应用中使用最广泛。

InnoDB 存储引擎

InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用,其特点是行锁设计、支持外键,并支持类似于Orcle 的非锁定读,即默认读取操作不会产生锁。

InnoDB存储引擎将数据放在一个逻辑的表空间中,这个表空间就像黑盒一样由InnoDB存储引擎自身进行管理。

InnoDB 通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别。使用next-keylocking的策略来避免幻读现象的产生。

InnoDB存储引擎还提供插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

表中数据的存储,InnoDB存储引擎采用了聚集的方式,因此 每张表的存储都按顺序存放。

MyISAM 存储引擎

MyISAM存储引擎不支持事务、表锁设计、支持全文索引,主要面向OLAP数据库应用。

MyISAM存储引擎不支持事务、它的缓冲池只缓存索引文件,而不缓冲数据文件。

MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。

NDB存储引擎

NDB存储引擎是一个集群存储引擎。

NDB的特点是数据全部放在内存中,因此主键查找的速度极快,并且通过添加NDB数据存储节点可以线性地提高数据库性能,是高可用、高性能的集群系统。

NDB存储引擎的连接操作(JOIN)是在MySQL数据库层完成的,而不是在存储引擎层完成的。

复杂的连接操作需要巨大的网络开销,因此查询速度很慢。