数据库系统原理及MySQL应用教程(第2版)
上QQ阅读APP看书,第一时间看更新

5.3 MySQL系统构成

MySQL数据库系统由多个组件构成,通常包括以下几个部分。

1.MySQL数据库服务

该部分主要由MySQL服务器、MySQL实例和MySQL数据库3个部分组成,通常简称为MySQL服务,对应着官方技术文档中的“MySQL Service”“MySQL Server”或“MySQL Database Server”等说法。

1)MySQL服务器,也称为MySQL数据库服务,它是保存在MySQL服务器硬盘上的一个服务软件。通常是指mysqld服务器程序,它是MySQL数据库系统的核心,所有的数据库和数据表操作都是由它完成的。其中的mysqld_safe是一个用来启动、监控和(出问题时)重新启动mysqld的相关程序。如果在同一台主机上运行了多个服务器,通常需要用mysqld_multi程序来帮助用户管好它们。

2)MySQL实例。MySQL实例是一个正在运行的MySQL服务,其实质是一个进程,只有处于运行状态的MySQL服务实例才可以响应MySQL客户机的请求,提供数据库服务。同一个MySQL服务,如果MySQL配置文件的参数不同,启动MySQL服务后生成的MySQL服务实例也不相同。通常是指mysqld进程(MySQL服务有且仅有这一个进程,不像Oracle等数据库,一个实例对应一堆的进程),以及该进程持有的内存资源。对应官方技术文档中的“MySQL instance”,也有的称之为mysqld进程。

3)MySQL数据库。通常是指一个物理概念,即一系列物理文件的集合。一个MySQL数据库下可以创建很多个数据库,默认情况下至少会有4个数据库(information_schema、performance_schema、test、mysql),这些数据库及其关联的磁盘上的一系列物理文件构成MySQL数据库。通常提到的data目录是指存储MySQL数据文件的目录,默认是指/data/mysqldata/3306/data目录。

① information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式,也就是通常所说的Metadata。Metadata是关于数据的数据,如数据库名或表名、列的数据类型或访问权限等,用于表述该信息的其他术语包括“数据字典”和“系统目录”。

在MySQL中,information_schema被看作一个数据库,确切地说是信息数据库。在information_schema中,有数个只读表。它实际上是视图,而不是基本表,因此,无法看到与之相关的任何文件。如果想看到它包含什么信息,只需要进入这个数据库,然后逐一执行“show create table表名”查看每一个表的功能。

数据目录(catalog)是一组关于数据的数据,也叫元数据。在高级程序设计语言中,程序所用到的数据由程序中的说明语句定义,程序运行结束了,这些说明也就失效了。DBMS的任务是管理大量的、共享的、持久的数据。有关这些数据的定义和描述须长期保存在系统中,一般就把这些元数据组成若干表,称之为数据目录,由系统管理和使用。

数据目录的内容包括基表、视图的定义以及存取路径(索引、散列等)访问权限和用于查询优化的统计数据等的描述。数据目录只能由系统定义并为系统所有,在初始化时由系统自动生成。数据目录是被频繁访问的数据,同时又是十分重要的数据,几乎DBMS的每一部分在运行时都要用到数据目录。如果把数据目录中所有基表的定义全部删去,则数据库中的所有数据,尽管还存储在数据库中,将无法访问。为此,DBMS一般不允许用户对数据目录进行更新操作,而只允许用户对它进行有控制的查询。

② performance_schema数据库是MySQL 5.5中新增的,它主要是针对性能的,主要用于收集数据库服务器性能参数。提供如下功能:

● 提供进程等待的详细信息,包括锁、互斥变量、文件信息;

● 保存历史事件汇总信息,为判断MySQL服务器性能做出详细的依据;

● 添加或删除监控事件点都非常容易,并可以随意改变MySQL服务器的监控周期。

③ test数据库是测试库。

④ mysql数据库,是MySQL数据库中的一个数据库名称,是创建MySQL数据库时自动创建的,主要存储一些系统对象,比如用户、权限、对象列表等字典信息。

⑤ sys数据库,是MySQL 5.7中首次加入的一个系统信息库,这个库可以快速地了解系统的元数据信息,并非常方便地让DBA发现数据库中的信息,在解决性能瓶颈、自动化运维等方面提供帮助。

2.MySQL客户程序和工具程序

MySQL客户程序和工具程序主要负责与服务器进行通信,主要内容如下。

1)mysql:用于把SQL语句发往服务器并让查看其结果的交互式程序,位于[mysql_software]/bin目录下。通过它完成连接数据库、查询、修改对象,执行维护操作。

2)mysqladmin:用于完成关闭服务器或在服务器运行不正常时检查其运行状态等工作的管理性程序。

3)mysqlcheck、isamchk、muisamchk:用于对数据表进行分析和优化,即当数据表损坏时,还可以用它们进行崩溃恢复工作。

4)mysqldump和mysqlhotcopy:用于备份数据库或者把数据库复制到另一个服务器的工具。

3.服务器的语言——SQL

SQL是结构化查询语言(Structured Query Language,SQL)的英文缩写,它是一种专门用来与数据库通信的语言。

注意:在MySQL系统构成中,要注意“MySQL数据库”“mysql数据库”“mysql库”和“MySQL”几个术语的含义,避免产生概念歧义。