Skip to main content

MySQL拓展

MySQL 存储引擎
存储引擎概述
数据库最核心的一点就是用来存储数据,数据存储就避免不了和磁盘打交道。那么数据以哪种方式进行存储,如何存储是存储的关键所在。所以存储引擎就相当于是数据存储的发动机,来驱动数据在磁盘层面进行存储。

1、数据库:

物理操作系统文件或其他形式文件类型的集合。 在MySQL数据库中, 数据库文件可以是frm、 MYD、 MYI、 ibd结尾的文件。 当使用NDB引擎时, 数据库的文件可能不是操作系统上的文件, 而是存放于内存之中的文件, 但是定义仍然不变。

2、实例:

MySQL数据库由后台线程以及一个共享内存区组成。 共享内存可以被运行的后台线程所共享。 需要牢记的是, 数据库实例才是真正用于操作数据库文件的。

这两个词有时可以互换使用, 不过两者的概念完全不同。 在MySQL数据库中, 实例与数据库的关系通常是一一对应的, 即一个实例对应一个数据库, 一个数据库对应一个实例。 但是, 在集群情况下可能存在一个数据库被多个数据实例使用的情况。

MySQL被设计为一个单进程多线程架构的数据库, 这点与SQL Server比较类似, 但与Oracle多进程的架构有所不同( Oracle的Windows版本也是单进程多线程架构的) 。 这也就是说, MySQL数据库实例在系统上的表现就是一个进程。

3、mysql配置文件

当启动实例时, MySQL数据库会去读取配置文件, 根据配置文件的参数来启动数据库实例。这与Oracle的参数文件( spfile) 相似, 不同的是, Oracle中如果没有参数文件, 在启动实例时会提示找不到该参数文件, 数据库启动失败。 而在MySQL数据库中, 可以没有配置文件, 在这种情况下, MySQL会按照编译时的默认参数设置启动实例。 用以下命令可以查看当MySQL数据库实例启动时, 会在哪些位置查找配置文件。

MySQL数据库是按/etc/my.cnf→/etc/mysql/my.cnf→/usr/local/mysql/etc →~/.my.cnf的顺序读取配置文件的。 可能如果几个配置文件中都有同一个参数,MySQL数据库以哪个配置文件为准?MySQL数据库会以读取到的最后一个配置文件中的参数为准。 在Linux环境下, 配置文件一般放在/etc/my.cnf下。 在Windows平台下, 配置文件的后缀名可能是.cnf, 也可能是.ini。

从概念上来说, 数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合; 数据库实例是程序, 是位于用户与操作系统之间的一层数据管理软件, 用户对数据库数据的任何操作, 包括数据库定义、 数据查询、 数据维护、 数据库运行控制等都是在数据库实例下进行的, 应用程序只有通过数据库实例才能和数据库打交道。

更为直白的方式来解释: 数据库是由一个个文件组成( 一般来说都是二进制的文件) 的,要对这些文件执行诸如SELECT、 INSERT、UPDATE和DELETE之类的数据库操作是不能通过简单的操作文件来更改数据库的内容, 需要通过数据库实例来完成对数据库的操作。