MySQL 8.4 参考手册  /  ...  /  MySQL 的主要功能

1.2.2 MySQL 的主要功能

本节介绍了 MySQL 数据库软件的一些重要特性。在大多数方面,路线图适用于所有版本的 MySQL。有关特定系列版本中引入的功能的信息,请参阅相应手册的“简述”部分。

内部结构和可移植性

  • 用 C 和 C++ 编写。

  • 在各种不同的编译器上进行了测试。

  • 在许多不同的平台上运行。请参阅 https://www.mysqlserver.cn/support/supportedplatforms/database.html.

  • 为了可移植性,使用 CMake 配置。

  • 使用 Purify(商业内存泄漏检测器)和 Valgrind(GPL 工具) (https://valgrind.org/) 进行测试。

  • 使用具有独立模块的多层服务器设计。

  • 旨在使用内核线程完全支持多线程,以便轻松使用多个 CPU(如果可用)。

  • 提供事务性和非事务性存储引擎。

  • 使用非常快的 B 树磁盘表 (MyISAM),并具有索引压缩功能。

  • 旨在使添加其他存储引擎变得相对容易。这在您希望为内部数据库提供 SQL 接口时非常有用。

  • 使用非常快的基于线程的内存分配系统。

  • 使用优化的嵌套循环连接执行非常快的连接。

  • 实现内存中的哈希表,用作临时表。

  • 使用高度优化的类库实现 SQL 函数,该库应尽可能快。通常,在查询初始化后,根本没有内存分配。

  • 提供服务器作为独立程序,用于在客户端/服务器网络环境中使用。

数据类型

语句和函数

  • 查询的 SELECT 列表和 WHERE 子句中提供了完整的运算符和函数支持。例如

    mysql> SELECT CONCAT(first_name, ' ', last_name)
        -> FROM citizen
        -> WHERE income/dependents > 10000 AND age > 30;
  • 完全支持 SQL GROUP BYORDER BY 子句。支持分组函数 (COUNT()AVG()STD()SUM()MAX()MIN() 以及 GROUP_CONCAT())。

  • 支持 LEFT OUTER JOINRIGHT OUTER JOIN,包括标准 SQL 语法和 ODBC 语法。

  • 支持标准 SQL 所需的表和列的别名。

  • 支持 DELETEINSERTREPLACE 以及 UPDATE,以返回更改(受影响)的行数,或者通过在连接到服务器时设置标志来返回匹配的行数。

  • 支持 MySQL 特定的 SHOW 语句,这些语句检索有关数据库、存储引擎、表和索引的信息。支持根据标准 SQL 实现的 INFORMATION_SCHEMA 数据库。

  • 一个 EXPLAIN 语句,用于显示优化器如何解析查询。

  • 函数名称与表或列名称无关。例如,ABS 是有效的列名。唯一的限制是,对于函数调用,在函数名和随后的 ( 之间不允许有空格。请参阅 第 11.3 节,“关键字和保留字”.

  • 您可以在同一个语句中引用来自不同数据库的表。

安全

  • 非常灵活且安全的权限和密码系统,支持基于主机的验证。

  • 当您连接到服务器时,通过对所有密码流量进行加密来保证密码安全。

可扩展性和限制

  • 支持大型数据库。我们使用包含 5000 万条记录的数据库来使用 MySQL 服务器。我们还了解一些用户使用包含 200,000 个表和大约 5,000,000,000 行的 MySQL 服务器。

  • 每个表最多支持 64 个索引。每个索引可以包含 1 到 16 列或列的一部分。对于 InnoDB 表,最大索引宽度为 767 字节或 3072 字节。请参阅 第 17.21 节,“InnoDB 限制”。对于 MyISAM 表,最大索引宽度为 1000 字节。请参阅 第 18.2 节,“MyISAM 存储引擎”。索引可以使用 CHARVARCHARBLOBTEXT 列类型的列的前缀。

连接

  • 客户端可以使用多种协议连接到 MySQL 服务器

    • 客户端可以使用 TCP/IP 套接字在任何平台上连接。

    • 在 Windows 系统上,如果服务器启动时启用了 named_pipe 系统变量,则客户端可以使用命名管道连接。Windows 服务器还支持共享内存连接,如果启动时启用了 shared_memory 系统变量。客户端可以使用 --protocol=memory 选项通过共享内存连接。

    • 在 Unix 系统上,客户端可以使用 Unix 域套接字文件连接。

  • MySQL 客户端程序可以用多种语言编写。一个用 C 编写的客户端库可用于用 C 或 C++ 编写的客户端,或者用于提供 C 绑定的任何语言。

  • MySQL 客户端可以使用 C、C++、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 等多种语言的 API 进行编写。有关详细信息,请参阅第 31 章,连接器和 API

  • Connector/ODBC (MyODBC) 接口为使用 ODBC (开放式数据库连接) 连接的客户端程序提供 MySQL 支持。例如,您可以使用 MS Access 连接到您的 MySQL 服务器。客户端可以在 Windows 或 Unix 上运行。Connector/ODBC 源代码可用。所有 ODBC 2.5 函数以及其他许多函数都受支持。请参阅MySQL Connector/ODBC 开发人员指南

  • Connector/J 接口为使用 JDBC 连接的 Java 客户端程序提供 MySQL 支持。客户端可以在 Windows 或 Unix 上运行。Connector/J 源代码可用。请参阅MySQL Connector/J 开发人员指南

  • MySQL Connector/NET 使开发人员能够轻松创建需要与 MySQL 进行安全、高性能数据连接的 .NET 应用程序。它实现了所需的 ADO.NET 接口并集成到支持 ADO.NET 的工具中。开发人员可以使用他们选择的 .NET 语言构建应用程序。MySQL Connector/NET 是一个完全托管的 ADO.NET 驱动程序,用 100% 纯 C# 编写。请参阅MySQL Connector/NET 开发人员指南

本地化

  • 服务器可以以多种语言向客户端提供错误消息。请参阅第 12.12 节,“设置错误消息语言”

  • 完全支持几种不同的字符集,包括 latin1 (cp1252)、germanbig5ujis、几种 Unicode 字符集等。例如,斯堪的纳维亚字符 åäö 允许在表和列名中使用。

  • 所有数据都以选择的字符集保存。

  • 排序和比较根据默认字符集和排序规则进行。启动 MySQL 服务器时可以更改此设置(请参阅第 12.3.2 节,“服务器字符集和排序规则”)。要查看高级排序的示例,请查看捷克排序代码。MySQL 服务器支持多种不同的字符集,这些字符集可以在编译时和运行时指定。

  • 服务器时区可以动态更改,并且各个客户端可以指定自己的时区。请参阅第 7.1.15 节,“MySQL 服务器时区支持”

客户端和工具

  • MySQL 包含多个客户端和实用程序。这些程序包括命令行程序(如 mysqldumpmysqladmin)以及图形程序(如 MySQL Workbench)。

  • MySQL 服务器内置支持 SQL 语句来检查、优化和修复表。这些语句可以通过 mysqlcheck 客户端从命令行使用。MySQL 还包括 myisamchk,这是一种非常快速的命令行实用程序,用于对 MyISAM 表执行这些操作。请参阅第 6 章,MySQL 程序

  • MySQL 程序可以使用 --help-? 选项调用以获取在线帮助。