数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但定义仍然不变。
实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是:数据库实例才是真正用于操作数据库文件的。
实际情况下,这2个概念可以互换使用,不过2者的概念完全不同。在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个实例使用的情况。
MySQL是一个单进程多线程架构的数据库,因此MySQL数据库实例在系统上的表现就是一个进程。
当启动MySQL实例时,MySQL数据库会读取配置文件,根据配置文件的参数来启动数据库实例;当启动实例时没有找到配置文件,则MySQL会按照编译时的默认参数设置来启动实例,可以通过mysql --help|grep my.cnf来查看各个配置文件加载路径与顺序。
MySQL数据库按照/etc/my.cnf~/etc/mysql/my.cnf~
/usr/local/mysql/etc/my.cnf~/.my.cnf的顺序来读取配置文件。如果这几个配置文件中都有同一个参数,则MySQL数据库会以读取到的最后一个配置文件中的参数为准。
MySQL由以下几部分组成:连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插件式存储引擎、物理文件。
MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持。
需要特别注意的是:存储引擎是基于表的,而不是基于数据库。
插件式存储引擎是MySQL区别于其他数据库的一个最重要特性。每个存储引擎都有各自的特点,能够根据具体的应用来建立不同存储引擎表。
TCP/IP套接字方式是MySQL数据库在任何平台下都提供的连接方式。在通过TCP/IP连接到MySQL实例时,MySQL数据库会先检查一张权限视图表user,用来判断发起请求的客户端IP是否允许连接到MySQL实例。
命名管道和共享内存主要是Windows系统特有的,如果2个需要进行通信的进程在同一台服务器上,那么可以使用命名管道。MySQL需要启用-enable-named-pipe选项。在MySQL4.1之后,MySQL还提供了-shared-memory的共享内存的连接方式。如果想使用共享内存方式则MySQL客户端必须使用-protocol=memory选项。
UNIX域套接字是Linux和UNIX环境下的另外一种连接方式。UNIX域套接字不是一个网络协议,因此,只能在MySQL客户端和数据库实例在一台服务器上的情况下使用。用户可以在配置文件中指定套接字文件的路径,当数据库实例启动后,可以通过命令来查找套接字文件路径,然后就可以使用该方式进行连接了。