MySQL 5.7 参考手册  /  MySQL 词汇表

MySQL 词汇表

这些术语常用于有关 MySQL 数据库服务器的信息中。这个词汇表最初是作为 InnoDB 存储引擎术语的参考,大部分定义都是与 InnoDB 相关的。

一个

.ARM文件

表的元数据ARCHIVE。与 .ARZ 文件对比。具有此扩展名的文件始终包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

另见.ARZ 文件MySQL 企业备份mysqlbackup 命令

.ARZ文件

ARCHIVE 表的数据。对比 .ARM 文件。具有此扩展名的文件始终包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

另见.ARM 文件MySQL Enterprise Backupmysqlbackup 命令

代表原子性、一致性、隔离性和持久性的首字母缩写词。这些属性都是数据库系统所需要的,并且都与事务的概念紧密相关 。事务特性InnoDB遵循 ACID 原则。

事务是可以提交回滚的原子工作单元。当一个事务对数据库进行多次更改时,要么在事务提交时所有更改都成功,要么在事务回滚时所有更改都撤消。

数据库始终保持一致的状态——在每次提交或回滚之后,以及事务正在进行时。如果跨多个表更新相关数据,查询将看到所有旧值或所有新值,而不是新旧值的混合。

交易在进行时相互保护(隔离);它们不能相互干扰或查看彼此未提交的数据。这种隔离是通过锁定机制实现的。有经验的用户可以调整隔离级别,牺牲较少的保护以提高性能和 并发性,前提是他们可以确定事务确实不会相互干扰。

事务的结果是持久的:一旦提交操作成功,该事务所做的更改就不会出现电源故障、系统崩溃、竞争条件或许多非数据库应用程序容易受到的其他潜在危险。持久性通常涉及写入磁盘存储,具有一定数量的冗余以防止写入操作期间出现电源故障或软件崩溃。(在 InnoDB中,双写缓冲区有助于持久性。)

另请参见原子提交并发双写缓冲区隔离级别锁定回滚事务

自适应冲洗

InnoDB表 的一种算法,可以消除检查点引入的 I/O 开销 。MySQL不是 立即将 缓冲池中的所有修改 页面刷新数据文件,而是定期刷新一小组修改页面。自适应刷新算法通过根据刷新速率和生成重做信息 的速度估计执行这些周期性刷新的最佳速率来扩展此过程 。

另见缓冲池检查点数据文件刷新InnoDB页面重做日志

自适应哈希索引

通过在内存中构建 散列索引, 对表进行优化,可以使用和 运算符InnoDB加快查找速度。MySQL 监视表的索引搜索,如果查询可以从哈希索引中受益,它会自动为 经常访问的索引页构建一个索引。从某种意义上说,自适应哈希索引在运行时配置 MySQL 以利用充足的主内存,更接近主内存数据库的体系结构。此功能由 =INInnoDBinnodb_adaptive_hash_index 配置选项。由于此功能有利于某些工作负载而不是其他工作负载,并且用于哈希索引的内存保留在缓冲池中,因此通常您应该启用和禁用此功能进行基准测试。

散列索引始终基于表上现有的 B 树索引构建。MySQL 可以在为 B 树定义的键的任意长度的前缀上构建哈希索引,具体取决于针对索引的搜索模式。哈希索引可以是部分的;整个 B-tree 索引不需要缓存在缓冲池中。

在 MySQL 5.6 及更高版本中,另一种利用InnoDB表的快速单值查找的方法是使用InnoDB memcached插件。有关详细信息,请参阅 第 14.21 节,“InnoDB memcached 插件”

另请参阅B 树缓冲池哈希索引memcached页面二级索引

ADO.NET

一种对象关系映射 (ORM) 框架,适用于使用 .NET 技术(如 ASP.NET )构建的应用程序。这样的应用程序可以通过Connector/NET组件 与 MySQL 交互 。

另请参见.NETASP.netConnector/NETMonoVisual Studio

一体机

异步 I/O 的缩写。您可能会在InnoDB消息或关键字中看到此首字母缩略词。

另请参阅异步 I/O

美标

ODBC中,支持字符集和其他国际化方面的替代方法。与Unicode对比。 Connector/ODBC 3.51 是一个 ANSI 驱动程序,而 Connector/ODBC 5.1 是一个 Unicode 驱动程序。

另请参见连接器/ODBCODBCUnicode

羚羊

InnoDB 原始文件格式 的代号。它支持 REDUNDANTCOMPACT行格式,但不支持Barracuda文件格式 中可用的较新的DYNAMICCOMPRESSED行格式。

另请参见Barracuda紧凑行格式压缩行格式动态行格式文件格式innodb_file_format冗余行格式

应用程序接口

API 提供从客户端程序 对 MySQL 协议和 MySQL 资源的低级访问。与Connector提供的更高级别的访问对比 。

另请参阅C API客户端连接器本机 C APIPerl APIPHP APIPython APIRuby API

应用程序编程接口 (API)

一组函数或过程。API 为函数、过程、参数和返回值提供一组稳定的名称和类型。

申请

MySQL Enterprise Backup产品生成的备份不包括备份进行时发生的最新更改时,更新备份文件以包括这些更改的过程称为应用步骤。它由命令的apply-log选项 指定mysqlbackup

在应用更改之前,我们将文件称为 原始备份。应用更改后,我们将这些文件称为 准备好的备份。更改记录在 ibbackup_logfile文件中;应用步骤完成后,不再需要此文件。

另见热备份ibbackup_logfileMySQL 企业备份准备好的备份原始备份

网站

使用 .NET技术和语言开发基于 Web 的应用程序的框架。这样的应用程序可以通过Connector/NET组件 与 MySQL 交互。

另一种用 MySQL 编写服务器端网页的技术是PHP

另请参见.NETADO.NETConnector/NETMonoPHPVisual Studio

部件

.NET系统 中的已编译代码库 ,可通过 Connector/NET访问。存储在 GAC中以允许在没有命名冲突的情况下进行版本控制。

另请参见.NETGAC

异步输入输出

一种 I/O 操作类型,允许在 I/O 完成之前继续进行其他处理。也称为 非阻塞 I/O,缩写为AIOInnoDB将这种类型的 I/O 用于某些可以并行运行而不影响数据库可靠性的操作,例如将 实际未被请求但可能很快需要 的页面读入缓冲池。

过去,InnoDB仅在 Windows 系统上使用异步 I/O。从 InnoDB Plugin 1.1 和 MySQL 5.5 开始,InnoDB 在 Linux 系统上使用异步 I/O。此更改引入了对 libaio. Linux 系统上的异步 I/O 是使用 innodb_use_native_aio默认启用的选项配置的。在其他类 Unix 系统上,InnoDB 仅使用同步 I/O。

另见缓冲池非阻塞 I/O

原子

在 SQL 上下文中, 事务是完全成功( 提交时)或完全无效(回滚时)的工作单元。事务的不可分割(“原子”)属性是 首字母缩写词 ACID中的“ A

另见ACID提交回滚事务

原子 DDL

原子DDL语句将数据字典更新、 存储引擎操作和 与 DDL 操作关联的二进制日志写入组合到单个原子事务中。事务完全提交或回滚,即使服务器在操作期间停止也是如此。MySQL 8.0 中添加了原子 DDL 支持。有关详细信息,请参阅原子数据定义语句支持

另见二进制日志数据字典DDL存储引擎

原子指令

CPU 提供的特殊指令,确保关键的低级操作不会被中断。

自动递增

表列(由关键字指定)的一种属性, AUTO_INCREMENT它会自动在列中添加值的升序序列。

它为开发人员节省了工作,在插入新行时不必生成新的唯一值。它为查询优化器提供了有用的信息,因为已知该列不为空且具有唯一值。此类列中的值可用作各种上下文中的查找键,并且由于它们是自动生成的,因此没有理由更改它们;出于这个原因,主键列通常被指定为自动递增。

自动增量列对于基于语句的复制可能会有问题,因为由于计时问题,在副本上重放语句可能不会产生与源上相同的列值集。当你有一个自动递增的主键时,你只能使用设置为 statement-based 的复制 innodb_autoinc_lock_mode=1。如果有 innodb_autoinc_lock_mode=2,允许更高的插入操作并发性,请使用 基于行的复制而不是基于语句的复制innodb_autoinc_lock_mode=0 除非出于兼容性目的,否则不应使用 该设置 。

连续锁模式 ( innodb_autoinc_lock_mode=1) 是 MySQL 8.0.3 之前的默认设置。从 MySQL 8.0.3 开始,交错锁模式 ( innodb_autoinc_lock_mode=2) 是默认的,这反映了从基于语句的复制到基于行的复制作为默认复制类型的变化。

另请参见自动增量锁定innodb_autoinc_lock_mode主键基于行的复制基于语句的复制

自增锁定

自动递增主键 的便利性 涉及到一些与并发性的权衡。在最简单的情况下,如果一个事务正在向表中插入值,则任何其他事务必须等待自己向该表中插入,以便第一个事务插入的行接收连续的主键值。InnoDB 包括优化和 innodb_autoinc_lock_mode选项,以便您可以在可预测的自动增量值序列和 插入操作的 最大并发性之间配置和优化平衡。

另见auto-incrementconcurrencyinnodb_autoinc_lock_mode

自动提交

在每个SQL 语句之后 导致提交操作的设置。不建议将此模式用于处理具有 跨越多个语句的事务的表 。它可以帮助提高 表上 只读事务的性能,从而最大限度地减少锁定和生成 撤消数据的开销,尤其是在 MySQL 5.6.4 及更高版本中。它也适用于处理 不适用事务的表。 InnoDBInnoDBMyISAM

另请参见提交锁定只读事务SQL事务撤消

可用性

处理主机故障并在必要时从中恢复的能力,包括 MySQL、操作系统或硬件故障以及可能导致停机的维护活动。通常与 可扩展性一起作为大规模部署的关键方面。

另见可扩展性

B树

常用于数据库索引的树数据结构。该结构始终保持排序,支持快速查找精确匹配(等于运算符)和范围(例如,大于、小于和BETWEEN 运算符)。这种类型的索引适用于大多数存储引擎,例如InnoDBMyISAM

因为 B 树节点可以有很多子节点,所以 B 树与二叉树不同,二叉树每个节点只能有 2 个子节点。

与仅在 存储引擎中可用的哈希索引相对。MEMORY存储引擎也可以使用MEMORYB-tree索引,MEMORY如果某些查询使用范围操作符,你应该为表选择B-tree索引。

术语 B 树的使用旨在作为索引设计的一般类别的参考。由于经典 B 树设计中不存在的复杂性,MySQL 存储引擎使用的 B 树结构可能被视为变体。相关信息参考MySQL Internals ManualInnoDB的Page Structure Fil Header部分 。

另见散列索引

反引号

`MySQL SQL 语句中的标识符如果包含特殊字符或保留字,则 必须使用反引号 ( ) 引起来。例如,要引用名为 的表FOO#BAR或名为 的列 SELECT,您可以将标识符指定为 `FOO#BAR``SELECT`。由于反引号提供了额外的安全级别,因此它们被广泛用于程序生成的 SQL 语句中,其中标识符名称可能事先不知道。

"许多其他数据库系统在此类特殊名称周围 使用双引号 ( )。为了可移植性,您可以ANSI_QUOTES在 MySQL 中启用模式并使用双引号而不是反引号来限定标识符名称。

另见SQL

备份

为了安全起见,从 MySQL 实例复制部分或全部表数据和元数据的过程。也可以参考复制文件的集合。这是 DBA 的一项重要任务。这个过程的逆过程是恢复 操作。

使用MySQL,物理备份MySQL Enterprise Backup产品执行,逻辑备份mysqldump命令执行。这些技术在备份数据的大小和表示以及速度(尤其是恢复操作的速度)方面具有不同的特征。

备份根据它们对正常数据库操作的干扰 程度进一步分为 冷。(热备份干扰最少,冷备份干扰最大。)

另见冷备份热备份逻辑备份MySQL 企业备份mysqldump物理备份热备份

梭子鱼

支持 启用 InnoDB 表压缩 的COMPRESSED行格式和改进长可变长度列的存储布局 的DYNAMIC行格式的InnoDB 文件格式 的代码名称。

MySQL Enterprise Backup 产品 3.5 及以上版本支持备份使用 Barracuda 文件格式的表空间 。

另请参见Antelope紧凑行格式压缩行格式动态行格式文件格式file-per-table通用表空间innodb_file_formatMySQL Enterprise Backup行格式系统表空间

基列

存储生成列或虚拟生成列所基于的非生成表列。换句话说,基列是非生成表列,它是生成列定义的一部分。

另见生成列存储生成列虚拟生成列

贝塔

软件产品生命周期的早期阶段,此时仅可用于评估,通常没有明确的版本号或版本号小于 1。 InnoDB不使用 beta 名称,更喜欢 可以扩展几个点的早期采用者阶段发布,导致 GA发布。

另见早期采用者GA

二进制日志

包含所有试图更改表数据的语句或行更改的记录的文件。可以重放二进制日志的内容,以便在 复制场景中使副本保持最新状态,或者在从备份恢复表数据后使数据库保持最新状态。二进制日志功能可以打开和关闭,但 Oracle 建议在使用复制或执行备份时始终启用它。

您可以使用mysqlbinlog命令 检查二进制日志的内容,或在复制或恢复期间重播它 。有关二进制日志的完整信息,请参阅第 5.4.4 节,“二进制日志”。对于与二进制日志相关的 MySQL 配置选项,请参阅 第 16.1.6.4 节,“二进制日志记录选项和变量”

对于MySQL Enterprise Backup 产品,二进制日志的文件名和文件中的当前位置是重要的细节。要在复制上下文中进行备份时为源记录此信息,您可以指定该--slave-info 选项。

在 MySQL 5.0 之前,有一个类似的功能可用,称为更新日志。在 MySQL 5.0 及更高版本中,二进制日志取代了更新日志。

另见二进制日志MySQL 企业备份复制

二进制日志

二进制日志文件 的非正式名称。例如,您可能会在电子邮件或论坛讨论中看到此缩写。

另见二进制日志

盲查询扩展

由子句启用的 一种特殊的全文搜索模式。WITH QUERY EXPANSION它执行两次搜索,其中第二次搜索的搜索短语是原始搜索短语与第一次搜索中几个最相关的文档连接而成。这种技术主要适用于简短的搜索短语,也许只有一个单词。它可以发现文档中未出现精确搜索词的相关匹配项。

另请参阅全文搜索

BLOB

SQL 数据类型(TINYBLOBBLOBMEDIUMBLOBLONGBLOB),用于包含任意大小的任何类型的二进制数据的对象。用于存储文档、图像、声音文件和其他类型的信息,这些信息不能轻易分解为 MySQL 表中的行和列。在 MySQL 应用程序中处理 BLOB 的技术因每个 连接器API而异。MySQL Connector/ODBCBLOB值定义为 LONGVARBINARY. 对于大型、自由形式的字符数据集合,行业术语是 CLOB,由 MySQL TEXT数据类型表示。

另见APICLOB连接器连接器/ODBC

瓶颈

系统的一部分在大小或容量上受到限制,具有限制总吞吐量的效果。例如,内存区域可能比需要的要小;访问单个所需资源可能会阻止多个 CPU 内核同时运行;或者等待磁盘 I/O 完成可能会阻止 CPU 满负荷运行。消除瓶颈往往会提高 并发性。例如,当多个会话同时读取和写入缓冲池时 ,拥有多个InnoDB 缓冲池实例的能力减少了争用。

另见缓冲池并发

弹跳

关机操作后立即重启 。理想情况下,预热时间相对较短,以便性能和吞吐量迅速恢复到较高水平。

另见关机

伙伴分配器

一种管理InnoDB 缓冲池中 不同大小 页面的机制。

另见缓冲池页面页面大小

缓冲

用于临时存储的内存或磁盘区域。数据缓冲在内存中,以便可以通过一些大的 I/O 操作而不是许多小的 I/O 操作有效地将数据写入磁盘。数据缓冲在磁盘上以获得更高的可靠性,因此即使在最坏的可能时间发生崩溃或其他故障也可以恢复数据 。InnoDB 使用的主要缓冲区类型是缓冲池双写缓冲区更改缓冲区

另见缓冲池更改缓冲区崩溃双写缓冲区

缓冲池

InnoDB保存表和索引 缓存数据的内存区域。为了提高大容量读取操作的效率,缓冲池被分成 可能包含多行的页面。为了缓存管理的效率,缓冲池被实现为页面链表;使用LRU算法的变体,很少使用的数据会从缓存中老化 。在具有大内存的系统上,您可以通过将缓冲池划分为多个缓冲池实例来提高并发性。

几个InnoDB状态变量、 INFORMATION_SCHEMA表格和 performance_schema表格有助于监视缓冲池的内部工作。从 MySQL 5.6 开始,您可以通过在服务器关闭时保存缓冲池状态并在服务器启动时将缓冲池恢复到相同状态来避免重新启动服务器后漫长的预热期,特别是对于具有大型缓冲池的实例。请参阅 第 14.8.3.6 节,“保存和恢复缓冲池状态”

另见缓冲池实例LRU页面预热

缓冲池实例

缓冲池可以划分 成的多个区域中的任何一个 ,由innodb_buffer_pool_instances 配置选项控制。指定的总内存大小 innodb_buffer_pool_size在所有缓冲池实例之间分配。通常,具有多个缓冲池实例适用于将多个 GB 分配给InnoDB 缓冲池的系统,每个实例为 1 GB 或更大。在从许多并发会话加载或查找缓冲池中的大量数据的系统上,拥有多个缓冲池实例可以减少对管理缓冲池的数据结构的独占访问的争用。

另见缓冲池

内置

MySQL内置的InnoDB存储引擎是存储引擎的原始分布形式。与InnoDB Plugin对比。从 MySQL 5.5 开始,InnoDB 插件作为内置 InnoDB存储引擎(称为 InnoDB 1.1)合并回 MySQL 代码库。

这种区别主要在 MySQL 5.1 中很重要,其中功能或错误修复可能适用于 InnoDB 插件,但不适用于内置插件InnoDB,反之亦然。

另见InnoDB

商业规则

构成商业软件基础的行为关系和顺序,用于运营一家商业公司。有时,这些规则由法律规定,有时则由公司政策规定。仔细规划可确保数据库编码和强制执行的关系以及通过应用程序逻辑执行的操作准确反映公司的真实政策并能够处理现实生活中的情况。

例如,一名员工离开公司可能会触发人力资源部门采取一系列行动。人力资源数据库可能还需要灵活性来表示有关已被雇用但尚未开始工作的人员的数据。在在线服务上关闭帐户可能会导致数据从数据库中删除,或者数据可能会被移动或标记,以便在重新打开帐户时可以恢复数据。公司可能会制定有关工资最高、最低和调整的政策,以及基本的合理性检查(例如工资不是负数)。零售数据库可能不允许多次退回具有相同序列号的购买,

另见关系

C

.cfg 文件

InnoDB 与可传输表空间 功能 一起使用的元数据文件。它由命令生成FLUSH TABLES ... FOR EXPORT,将一个或多个表置于可以复制到另一台服务器的一致状态。该 .cfg文件与相应的.ibd 文件一起复制,并用于在步骤中调整文件的内部值 , .ibd例如 空间 IDALTER TABLE ... IMPORT TABLESPACE

另见.ibd 文件空间 ID、可传输表空间

C

一种结合了可移植性和性能以及对低级硬件功能的访问的编程语言,使其成为编写操作系统、驱动程序和其他类型的系统软件的流行选择。许多复杂的应用程序、语言和可重用模块的特点是用 C 编写的部分,与用其他语言编写的高级组件捆绑在一起。C++JavaC#开发人员 熟悉其核心语法 。

另请参阅C APIC++C#Java

语言接口

C API代码随 MySQL 一起分发。它包含在 libmysqlclient库中,使C程序能够访问数据库。

另见APIClibmysqlclient

C#

一种结合了强类型和面向对象特性的编程语言,在 Microsoft .NET框架或其开源版本Mono中运行。通常用于使用 ASP.net框架创建应用程序。CC++Java开发人员熟悉它的语法。

另请参见.NETASP.netCConnector/NETC++JavaMono

C++

一种具有C开发人员 熟悉的核心语法的编程语言 。提供对低级操作的访问以提高性能,并结合高级数据类型、面向对象的功能和垃圾收集。要为 MySQL 编写 C++ 应用程序,您可以使用 Connector/C++组件。

另见C连接器/C++

缓存

存储数据副本以供频繁或高速检索的任何内存区域的通用术语。在 InnoDB中,主要的一种缓存结构是缓冲池

另请参见缓冲区缓冲池

基数

中不同值的数量。当查询引用具有关联 索引的列时,每列的基数会影响哪种访问方法最有效。例如,对于具有唯一约束的列,不同值的数量等于表中的行数。如果一个表有 100 万行,但特定列只有 10 个不同的值,则每个值(平均)出现 100,000 次。这样的查询 SELECT c1 FROM t1 WHERE c1 = 50;可能会返回 1 行或大量行,并且数据库服务器可能会根据c1.

如果列中的值分布非常不均匀,则基数可能不是确定最佳查询计划的好方法。例如,SELECT c1 FROM t1 WHERE c1 = x;可能会在 时返回 1 行,x=50而在 时可能会返回一百万行x=30。在这种情况下,您可能需要使用索引提示 来传递有关哪种查找方法对特定查询更有效的建议。

基数也可以应用于多个列中存在的不同值的数量,如在 复合索引中。

另请参见复合索引索引索引提示持久统计信息随机潜水选择性唯一约束

更改缓冲区

一种特殊的数据结构,用于记录二级索引中页面的 更改 。这些值可能来自 SQL 、 或 语句 ( DML )。涉及更改缓冲区的一组功能统称为 更改缓冲区,包括 插入缓冲区删除缓冲区清除缓冲区INSERTUPDATEDELETE

只有当来自二级索引的相关页面不在 缓冲池中时,更改才会记录在更改缓冲区中。当相关的索引页面被带入缓冲池,而关联的更改仍在更改缓冲区中时,该页面的更改将使用更改缓冲区中的数据应用到缓冲池中(合并)。周期性地, 在系统大部分空闲或缓慢关闭期间运行的清除操作将新索引页写入磁盘。与立即将每个值写入磁盘相比,清除操作可以更有效地为一系列索引值写入磁盘块。

在物理上,更改缓冲区是 系统表空间的一部分,因此索引更改在数据库重新启动时保持缓冲状态。只有当页面由于某些其他读取操作而被带入缓冲池时, 才会应用(合并)更改。

更改缓冲区中存储的数据种类和数量由 innodb_change_bufferinginnodb_change_buffer_max_size 配置选项控制。要查看有关更改缓冲区中当前数据的信息,请发出 SHOW ENGINE INNODB STATUS命令。

以前称为插入缓冲区

另请参见缓冲池更改缓冲删除缓冲DML插入缓冲区插入缓冲合并分页清除清除缓冲二级索引系统表空间

改变缓冲

涉及更改缓冲区 的功能的总称 ,包括 插入缓冲区删除缓冲区清除缓冲区。由 SQL 语句引起的索引更改(通常可能涉及随机 I/O 操作)会被后台线程阻止并定期执行。与立即将每个值写入磁盘相比,此操作序列可以更有效地为一系列索引值写入磁盘块。由 innodb_change_bufferinginnodb_change_buffer_max_size 配置选项控制。

另请参见更改缓冲区删除缓冲区插入缓冲区清除缓冲区

检查站

当对缓存在 缓冲池中的数据页进行更改时,这些更改会在稍后的某个时间写入数据文件 ,这一过程称为 刷新。检查点是对已成功写入数据文件 的最新更改(由 LSN值表示)的记录。

另见缓冲池数据文件刷新模糊检查点LSN

校验和

其中,当表空间中 的页面从磁盘读入缓冲池InnoDB时,一种检测损坏的验证机制。此功能由 MySQL 5.5 中的配置选项控制。 在 MySQL 5.6.3 中已弃用,替换为 . InnoDB innodb_checksumsinnodb_checksumsinnodb_checksum_algorithm

innochecksum命令通过在 MySQL 服务器关闭时 测试指定表空间文件的校验和值来帮助诊断损坏问题。

MySQL 还使用校验和进行复制。有关详细信息,请参阅配置选项 binlog_checksumsource_verify_checksummaster_verify_checksum、 和 replica_sql_verify_checksumslave_sql_verify_checksum

另见缓冲池表空间

子表

在外关系中,子表是指其行引用(或指向)另一个表中具有相同值的特定列的行。这是包含FOREIGN KEY ... REFERENCES子句和可选的ON UPDATEandON DELETE子句的表。父表中的相应行必须存在,然后才能在子表中创建该行。ON CASCADE根据创建外键时使用 的选项,子表中的值可以阻止对父表的删除或更新操作,或者可以导致子表中的自动删除或更新。

另见外键父表

干净的页面

缓冲池中的 一个页面, 其中在内存中所做的所有更改也已写入(刷新)到 数据文件中。与脏页相反。 InnoDB

另见缓冲池数据文件脏页刷新页面

干净关机

与崩溃快速关闭相反 的是无错误完成并 InnoDB在完成前将所有更改应用于表的关闭。缓慢关机的同义词 。

另请参见崩溃快速关机关机慢速关机

客户

在数据库服务器外部运行的程序,通过连接器发送请求或 通过 客户端库提供的API 与数据库通信 。它可以与数据库服务器运行在同一台物理机器上,也可以运行在通过网络连接的远程机器上。它可以是专用数据库应用程序,也可以是像mysql命令行处理器 这样的通用程序 。

另请参阅API客户端库连接器mysql服务器

客户端库

包含用于处理数据库的函数集合的文件。通过使用这些库编译您的程序,或将它们安装在与您的应用程序相同的系统上,您可以在未安装 MySQL 服务器的机器上运行数据库应用程序(称为 客户端);应用程序通过网络访问数据库。对于 MySQL,您可以使用 MySQL 服务器本身的 libmysqlclient库。

另见客户端libmysqlclient

客户端准备好的语句

一种在本地管理缓存和重用的准备语句 ,模拟服务器端准备语句的功能。过去,一些 Connector/JConnector/ODBCConnector/PHP开发人员使用它来解决服务器端存储过程的问题。对于现代 MySQL 服务器版本,建议使用服务器端准备好的语句来提高性能、可伸缩性和内存效率。

另见Connector/JConnector/ODBCConnector/PHPprepared statement

CLOB

SQL 数据类型(TINYTEXTTEXTMEDIUMTEXTLONGTEXT),用于包含任意大小的任何类型字符数据的对象。用于存储基于文本的文档,以及相关的字符集和整理顺序。在 MySQL 应用程序中处理 CLOB 的技术因每个 连接器API而异。MySQL 连接器/ODBC 将TEXT值定义为 LONGVARCHAR. 对于存储二进制数据,等效于BLOB类型。

另见APIBLOB连接器连接器/ODBC

聚集索引

主键索引 的InnoDB术语 。表存储是根据主键列的值来组织的,以加快涉及主键列的查询和排序。为获得最佳性能,请根据性能最关键的查询仔细选择主键列。因为修改聚集索引的列是一项昂贵的操作,所以选择很少或从不更新的主列。 InnoDB

在 Oracle 数据库产品中,这种类型的表称为索引组织表

另见索引主键二级索引

冷备份

数据库关闭时进行 的备份。对于繁忙的应用程序和网站,这可能不切实际,您可能更喜欢 热备份热备份

另见备份热备份热备份

柱子

中 的数据项,其存储和语义由数据类型定义。每个 索引主要由它包含的列集定义。

每列都有一个 数值。列可以是其表的主键,也可以是主键的一部分。列可以受唯一约束NOT NULL 约束或两者的约束。不同列中的值,甚至跨不同表的值,都可以通过 外键关系进行链接。

在 MySQL 内部操作的讨论中,有时 将字段用作同义词。

另见基数外键索引NOT NULL 约束主键唯一约束

列索引

单个列上 的索引。

另请参见复合索引索引

列前缀

当使用长度规范(例如 )创建索引CREATE INDEX idx ON t1 (c1(N))时,只有列值的前 N ​​个字符存储在索引中。保持索引前缀较小可使索引紧凑,内存和磁盘 I/O 节省有助于提高性能。(虽然使索引前缀太小可能会阻碍查询优化,因为查询优化器会认为具有不同值的行是重复的。)

对于包含二进制值或长文本字符串的列,排序不是主要考虑因素并且将整个值存储在索引中会浪费空间,索引会自动使用值的前 N ​​个(通常为 768 个)字符进行查找和排序。

另见索引

命令拦截器

语句拦截器 的同义词。拦截器设计模式的一个方面 可用于Connector/NETConnector/J。Connector/NET 称之为命令,Connector/J 称之为语句。与异常拦截器对比 。

另见连接器/J连接器/NET异常拦截器拦截器语句拦截器

犯罪

结束事务SQL语句, 使事务所做的任何更改永久化。它与回滚相反, 回滚会撤消事务中所做的任何更改。

InnoDB使用 乐观的提交机制,以便可以在实际发生提交之前将更改写入数据文件。这种技术使提交本身更快,但代价是在回滚的情况下需要做更多的工作。

默认情况下,MySQL 使用 自动提交设置,它会在每个 SQL 语句之后自动发出提交。

另请参阅自动提交乐观回滚SQL事务

紧凑的行格式

从 MySQL 5.0.3 到 MySQL 5.7.8 的 InnoDB 表的默认InnoDB 行格式。从 MySQL 5.7.9 开始,默认行格式由innodb_default_row_format 配置选项定义,默认设置为 DYNAMICCOMPACT行格式为空值和可变长度列提供了比先前默认(REDUNDANT行格式) 更紧凑的 表示。

有关InnoDB COMPACT行格式的其他信息,请参阅 第 14.11 节,“InnoDB 行格式”

另见Antelope动态行格式文件格式冗余行格式行格式

综合指数

包含多个列 的索引。

另见索引

压缩备份

MySQL Enterprise Backup产品 的压缩功能为每个表空间创建一个压缩副本,将扩展名 .ibd.ibz. 压缩备份数据使您可以保留更多备份,并减少将备份传输到不同服务器的时间。数据在还原操作期间未压缩。当压缩备份操作处理一个已经压缩的表时,它会跳过该表的压缩步骤,因为再次压缩会导致很少或根本不会节省空间。

一组由MySQL Enterprise Backup产品生成的文件,其中每个 表空间都经过压缩。压缩文件以.ibz文件扩展名重命名。

在备份过程开始时应用压缩有助于避免压缩过程中的存储开销,并避免将备份文件传输到另一台服务器时的网络开销。应用二进制日志的 过程耗时较长,并且需要解压备份文件。

另见应用二进制日志压缩热备份MySQL 企业备份表空间

压缩行格式

为 表启用数据和索引压缩行格式。它是在 插件中引入的,作为 Barracuda文件格式的一部分提供。大字段存储在远离包含其余行数据的页面的地方,如动态行格式。索引页和大字段都被压缩,从而节省了内存和磁盘。根据数据的结构,内存和磁盘使用量的减少可能会或可能不会超过在使用数据时解压缩数据的性能开销。见 第 14.9 节,“InnoDB 表和页面压缩”InnoDBInnoDB了解使用详情。

有关InnoDB COMPRESSED行格式的其他信息,请参阅 动态行格式

另请参见Barracuda压缩动态行格式行格式

压缩表

以压缩形式存储数据的表。对于 InnoDB,它是用 创建的表 ROW_FORMAT=COMPRESSED。有关更多信息,请参阅 第 14.9 节,“InnoDB 表和页面压缩”

另见压缩行格式压缩

压缩

使用更少的磁盘空间、执行更少的 I/O 以及使用更少的缓存内存具有广泛优势的功能。

InnoDB支持表级和页级压缩。InnoDB页面压缩也称为 透明页面压缩。有关InnoDB 压缩的更多信息,请参阅第 14.9 节,“InnoDB 表和页面压缩”

另一种类型的压缩是 MySQL Enterprise Backup 产品 的压缩备份功能。

另请参见Barracuda缓冲池压缩备份压缩行格式DML透明页面压缩

压缩失败

实际上不是错误,而是将压缩DML操作结合使用时可能发生的昂贵 操作。它发生在: 对压缩 页面的更新溢出页面上保留用于记录修改的区域;页面再次压缩,所有更改都应用于表数据;重新压缩后的数据放不下原来的页面,需要MySQL将数据拆分成两个新的页面,分别进行压缩。要检查这种情况的频率,查询 表并检查列的值超过了 INFORMATION_SCHEMA.INNODB_CMP多少 COMPRESS_OPSCOMPRESS_OPS_OK柱子。理想情况下,压缩失败不会经常发生;当它们出现时,您可以调整 innodb_compression_levelinnodb_compression_failure_threshold_pctinnodb_compression_pad_pct_max 配置选项。

另见压缩DML页面

连接索引

综合指数

并发

多个操作(在数据库术语中为 事务)同时运行而不会相互干扰的能力。并发性也与性能有关,因为理想情况下,对多个同时事务的保护以最小的性能开销工作,使用有效的 锁定机制。

另请参见ACID锁定事务

配置文件

保存MySQL 在启动时使用的选项值 的文件。传统上,在 Linux 和 Unix 上这个文件被命名为my.cnf,而在 Windows 上它被命名为my.ini. [mysqld]您可以在该文件的部分 下设置一些与 InnoDB 相关的选项 。

有关MySQL 在何处搜索配置文件的信息 , 请参阅第 4.2.2.2 节,“使用选项文件” 。

当您使用MySQL Enterprise Backup产品时,您通常使用两个配置文件:一个指定数据的来源和结构(可能是您服务器的原始配置文件),另一个精简的只包含一小组选项,指定备份数据的去向和结构。用于 MySQL Enterprise Backup产品的配置文件必须包含某些通常不包含在常规配置文件中的选项,因此您可能需要将选项添加到现有配置文件以用于 MySQL Enterprise Backup

另见my.cnfMySQL Enterprise Backup选项选项文件

联系

应用程序和 MySQL 服务器之间的通信通道。数据库应用程序的性能和可伸缩性受建立数据库连接的速度、可以同时建立的数量以及它们持续多长时间的影响。主机端口等参数在 Connector/NET中表示为连接字符串,在 Connector/ODBC中表示为 DSN。高流量系统使用称为 连接池的优化。

另见连接池连接字符串连接器/NET连接器/ODBCDSN主机端口

连接池

允许在同一应用程序或不同应用程序之间重复使用数据库连接 的缓存区域 ,而不是为每个数据库操作设置和拆除新连接。这种技术在J2EE应用程序服务器 中很常见 。使用Connector/J的Java应用程序 可以使用Tomcat和其他应用程序服务器的连接池功能 。重用对应用程序是透明的;该应用程序仍然像往常一样打开和关闭连接。

另请参见连接连接器/JJ2EETomcat

连接串

数据库 连接参数的表示,编码为字符串文字,以便可以在程序代码中使用。字符串的部分表示连接参数,例如 hostport。连接字符串包含多个键值对,以分号分隔。每个键值对都用等号连接。经常与连接器/NET应用程序一起使用;有关详细信息,请参阅 创建连接器/NET 连接字符串

另见connectionConnector/NEThostport

连接器

MySQL 连接器为 客户端程序提供到 MySQL 服务器的连接。几种编程语言和框架都有自己的关联连接器。与API提供的低级别访问对比。

另见API客户端连接器/C++连接器/J连接器/NET连接器/ODBC

连接器/C++

Connector/C++ 8.0 可用于访问实现 文档存储的 MySQL 服务器,或以传统方式使用 SQL 查询。它支持使用 X DevAPI 开发 C++ 应用程序,或使用适用于 C 的 X DevAPI 开发纯 C 应用程序。它还支持开发使用 Connector/C++ 1.1 中基于 JDBC 的遗留 API 的 C++ 应用程序。有关详细信息,请参阅MySQL 连接器/C++ 8.0 开发人员指南

另见客户端连接器JDBC

接头/J

为使用Java编程语言开发的客户端 应用程序 提供连接 的JDBC驱动程序。提供了与 JDBC 3.0 和 JDBC 4.0 规范兼容的不同版本。MySQL Connector/J 是一个 JDBC Type 4 驱动程序:MySQL 协议的纯 Java 实现,不依赖于 MySQL 客户端库。有关完整详细信息,请参阅MySQL Connector/J 8.0 开发人员指南

另请参见客户端客户端库连接器JavaJDBC

连接器/网络

一个 MySQL连接器,供开发人员使用C#、. NETMonoVisual StudioASP.netADO.net等语言、技术和框架编写应用程序。

另请参阅ADO.NETASP.net连接器C#MonoVisual Studio

连接器/ODBC

MySQL ODBC 驱动程序系列,使用行业标准开放式数据库连接 ( ODBC ) API 提供对 MySQL 数据库的访问。以前称为 MyODBC 驱动程序。有关完整详细信息,请参阅 MySQL 连接器/ODBC 开发人员指南

另请参见连接器ODBC

连接器/PHP

针对Windows 操作系统优化的 mysqlPHP APImysqli 版本

另请参见连接器PHPPHP API

一致性读取

一种读取操作,它使用 快照信息根据时间点呈现查询结果,而不管同时运行的其他事务执行的更改。如果查询到的数据已经被另一个事务更改,则根据 undo log的内容重建原始数据。这种技术通过强制事务等待其他事务完成来 避免一些可能会降低并发性的锁定问题。

使用REPEATABLE READ 隔离级别,快照基于执行第一次读取操作的时间。使用READ COMMITTED隔离级别,快照将重置为每个一致读取操作的时间。

一致读取是默认模式,在该模式下 InnoDB处理处于READ COMMITTEDREPEATABLE READ隔离级别SELECT 的语句。因为一致读取不会在它访问的表上设置任何锁,所以其他会话可以在对表执行一致读取时自由修改这些表。

有关适用的隔离级别的技术细节,请参阅 第 14.7.2.3 节,“一致的非锁定读取”

另请参见并发性隔离级别锁定、已提交可重复读快照事务撤消日志

约束

一种可以阻止数据库更改以防止数据变得不一致的自动测试。(在计算机科学术语中,一种与不变条件相关的断言。)约束是 ACID哲学的重要组成部分,用于保持数据一致性。MySQL 支持的约束包括 FOREIGN KEY 约束唯一约束

另见ACID外键唯一约束

柜台

由特定类型的 InnoDB操作递增的值。对于测量服务器的繁忙程度、排除性能问题的根源以及测试更改(例如,对查询使用的配置设置或索引)是否具有所需的低级效果很有用。通过Performance Schema表和 INFORMATION_SCHEMA表可以使用不同种类的计数器,尤其是 INFORMATION_SCHEMA.INNODB_METRICS.

另请参见INFORMATION_SCHEMA指标计数器性能模式

覆盖指数

包含查询检索到的所有列 的索引。查询不使用索引值作为指针来查找完整的表行,而是从索引结构返回值,从而节省磁盘 I/O。 InnoDB可以将此优化技术应用于比 MyISAM 更多的索引,因为 InnoDB 二级索引还包括 主键列。 InnoDB在该事务结束之前,不能将此技术应用于对事务修改的表的查询。

如果查询正确,任何列索引复合索引都可以充当覆盖索引。设计索引和查询以尽可能利用此优化技术。

另见列索引复合索引索引主键二级索引

受CPU限制

一种主要瓶颈是内存中的 CPU 操作的工作负载。通常涉及读取密集型操作,其中结果可以全部缓存在 缓冲池中

另见瓶颈缓冲池工作量

碰撞

MySQL 使用术语崩溃来泛指 服务器无法进行正常清理的任何意外关闭操作。例如,数据库服务器机器或存储设备上的硬件故障可能会导致崩溃;电源故障;导致 MySQL 服务器停止的潜在数据不匹配;由 DBA 启动的 快速关闭;或许多其他原因。InnoDB表的强大、自动 崩溃恢复可 确保在服务器重新启动时数据保持一致,而无需 DBA 进行任何额外工作。

另见崩溃恢复快速关机InnoDB关机

崩溃恢复

MySQL 在崩溃 后再次启动时发生的清理活动。对于 InnoDB表,使用重做日志中的数据重放来自未完成事务的更改 。崩溃前提交但尚未写入数据文件的更改 将从双写缓冲区重建 。当数据库正常关闭时,这种类型的活动在关闭期间由 清除操作执行。

在正常操作期间,提交的数据可以在写入数据文件之前在 更改缓冲区中存储一段时间。在保持数据文件最新和缓冲数据之间始终存在权衡,前者在正常操作期间引入了性能开销,后者可能使关机和崩溃恢复需要更长的时间。

另见更改缓冲区提交崩溃数据文件双写缓冲区InnoDB清除重做日志

增删改查

创建、读取、更新、删除的 首字母缩写词,是数据库应用程序中的常见操作序列。通常表示一类数据库使用相对简单(基本的DDLDMLSQL中的查询语句 ),可以用任何语言快速实现的一类应用程序。

另请参见DDLDML查询SQL

光标

表示 SQL 语句结果集的内部 MySQL 数据结构。通常与 准备好的语句动态 SQL一起使用。它的工作方式类似于其他高级语言中的迭代器,根据请求从结果集中生成每个值。

虽然 SQL 通常会为您处理游标,但在处理性能关键代码时您可能会深入研究其内部工作原理。

另见动态 SQL准备好的语句查询

数据定义语言

请参阅DDL

数据字典

跟踪 InnoDB 相关对象(如 索引和表 )的元数据。此元数据物理上位于InnoDB 系统表空间中。由于历史原因,它在某种程度上与.frm 文件中存储的信息重叠。

因为MySQL Enterprise Backup产品总是备份系统表空间,所以所有备份都包括数据字典的内容。

另请参见每个表的文件、.frm 文件索引MySQL 企业备份系统表空间

数据目录

每个 MySQL 实例保存 数据文件InnoDB目录和代表各个数据库的目录。由 datadir配置选项控制。

另见数据文件实例

数据文件

物理上包含 索引数据的文件。

系统InnoDB 表空间,存放InnoDB 数据字典,能够存放多InnoDB张表的数据,用一个或多个.ibdata数据文件表示。

File-per-table 表空间保存单个 InnoDB表的数据,由 .ibd数据文件表示。

通用表空间(MySQL 5.7.6 引入),可以存放多个InnoDB表的数据,也用一个.ibd数据文件来表示。

另请参见数据字典每个表的文件、通用表空间.ibd 文件ibdata 文件索引系统表空间表空间

数据操作语言

请参阅DML

数据仓库

主要运行大型 查询的数据库系统或应用程序。为了查询效率,可以以非规范化形式组织只读或主要读取数据 。可以受益 于 MySQL 5.6 及更高版本中对只读事务的优化。与OLTP对比 。

另请参见非规范化OLTP查询只读事务

数据库

在 MySQL数据目录中,每个数据库都由一个单独的目录表示。InnoDB系统表空间可以在一个 MySQL 实例中保存来自多个数据库的表数据,它保存在 驻留在各个数据库目录之外的数据文件中。当 启用file-per-table模式时,表示单个 InnoDB 表的.ibd 文件存储在数据库目录中,除非使用该DATA DIRECTORY子句在其他地方创建。MySQL 5.7.6 中引入的通用表空间也将表数据保存在.ibd 文件中. 与 file-per-table .ibd 文件不同,通用表空间 .ibd 文件可以在一个 MySQL 实例中保存来自多个数据库的表数据,并且可以分配给相对于或独立于 MySQL 数据目录的目录。

对于长期使用 MySQL 的用户来说,数据库是一个熟悉的概念。具有 Oracle 数据库背景的用户可能会发现数据库的 MySQL 含义更接近于 Oracle 数据库所说的架构

另请参见数据文件每个表的文件、.ibd 文件实例模式系统表空间

直流电

数据控制语言,一组 用于管理权限的SQL语句。在 MySQL 中,由 GRANTand REVOKE语句组成。与DDLDML对比 。

另请参见DDLDMLSQL

DDEX提供商

一种功能,可让您使用 Visual Studio中的数据设计工具来操作 MySQL 数据库中的架构和对象。对于使用Connector/NET的 MySQL 应用程序,MySQL Visual Studio 插件充当 MySQL 5.0 及更高版本的 DDEX 提供程序。

另请参阅Visual Studio

DDL

数据定义语言,一组用于操作数据库本身而不是单个表行的 SQL语句。包括所有形式的CREATEALTERDROP 语句。还包括TRUNCATE 声明,因为它与声明的工作方式不同,即使最终效果相似。 DELETE FROM table_name

DDL语句自动 提交当前 事务;它们无法 回滚

InnoDB 在线 DDL功能增强了CREATE INDEXDROP INDEX和许多类型ALTER TABLE 操作 的性能。有关更多信息,请参阅第 14.13 节,“InnoDB 和在线 DDL”。此外,InnoDB file-per-table 设置会影响DROP TABLETRUNCATE TABLE操作的行为。

与DMLDCL 对比。

另见commitDCLDMLfile-per-tablerollbackSQLtransaction

僵局

不同 事务无法进行的情况,因为每个事务都持有 另一个需要的锁。因为两个事务都在等待资源变得可用,所以没有一个事务释放它持有的锁。

当事务锁定多个表中的行(通过UPDATEor 之类的语句SELECT ... FOR UPDATE)但顺序相反时,可能会发生死锁。当这样的语句锁定索引记录和间隙的范围时,也会发生死锁 ,由于时间问题,每个事务都会获取一些锁而不是其他锁。

有关如何自动检测和处理死锁的背景信息,请参阅 第 14.7.5.2 节,“死锁检测”。有关避免死锁情况和从死锁情况中恢复的提示,请参阅 第 14.7.5.3 节,“如何最小化和处理死锁”

另见间隙事务

死锁检测

一种自动检测何时发生 死锁并自动回滚所涉及事务之一( 受害者)的机制。可以使用 innodb_deadlock_detect 配置选项禁用死锁检测。

另见死锁回滚事务受害者

删除

InnoDB处理 语句 时DELETE,行会立即标记为删除,并且不再由查询返回。稍后在称为清除 操作的定期垃圾收集期间回收存储。对于删除大量数据,具有自身性能特征的相关操作是 TRUNCATEDROP

另请参见删除清除截断

删除缓冲

将操作产生的对二级索引页面的更改存储DELETE更改缓冲区中而不是立即写入更改的技术,以便可以执行物理写入以最大限度地减少随机 I/O。(因为删除操作是一个两步过程,所以这个操作缓冲了通常标记删除索引记录的写入。)它是更改缓冲的类型之一;其他的是insert bufferingpurge buffering

另请参见更改缓冲区更改缓冲区插入缓冲区插入缓冲区清除缓冲区

去规格化

跨不同表复制数据的数据存储策略,而不是使用 外键连接查询链接表。通常用于 数据仓库应用程序,其中数据在加载后不会更新。在此类应用程序中,查询性能比在更新期间轻松维护一致数据更为重要。与归一化对比 。

另见数据仓库外键连接规范化

递减指数

某些数据库系统可用的一种索引,其中索引存储针对处理子句进行了优化。目前,虽然 MySQL 允许 在语句中使用关键字 ,但它并没有为结果索引使用任何特殊的存储布局。 ORDER BY column DESCDESCCREATE TABLE

另见索引

脏页

缓冲池中已在内存中更新的页面,其中更改尚未写入(刷新 )数据文件 与干净页面相反 。 InnoDB

另请参阅缓冲池清洁页面数据文件刷新页面

脏读

检索不可靠数据的操作,数据已被另一个事务更新但尚未 提交。只有在称为read uncommitted的隔离级别才有可能。

这种操作不符合数据库设计的 ACID原则。它被认为是非常危险的,因为数据可以 回滚,或者在提交之前进一步更新;那么,执行脏读的事务将使用从未被确认为准确的数据。

它的对立面是一致性读取,它InnoDB确保一个事务不会读取另一个事务更新的信息,即使另一个事务同时提交也是如此。

另请参见ACID提交一致读取隔离级别、未提交的读取回滚

基于磁盘

一种主要在磁盘存储(硬盘驱动器或等效设备)上组织数据的数据库。数据在磁盘和内存之间来回传输以进行操作。它与内存数据库相反。虽然InnoDB是基于磁盘的,但它还包含缓冲池、多个缓冲池实例和 自适应哈希索引等功能,这些功能允许某些类型的工作负载主要从内存中工作。

另见自适应散列索引缓冲池内存数据库

磁盘绑定

一种主要瓶颈是磁盘 I/O的工作负载。(也称为I/O-bound。)通常涉及频繁写入磁盘,或随机读取超出缓冲池容量的更多数据。

另见瓶颈缓冲池工作量

动态语言

数据操作语言,一组 用于执行 、 和 操作的SQL语句。该 语句有时被视为 DML 语句,因为该窗体与、 和 一样 需要遵守相同的锁定注意事项。 INSERTUPDATEDELETESELECTSELECT ... FOR UPDATEINSERTUPDATEDELETE

表的 DML 语句在事务InnoDB的上下文中运行,因此它们的效果可以 作为一个单元 提交回滚。

与DDLDCL 对比。

另请参见提交DCLDDL锁定回滚SQL事务

文档编号

InnoDB 全文搜索功能中,表中包含FULLTEXT 索引的特殊列,用于唯一标识与每个 ilist值关联的文档。它的名字是 FTS_DOC_ID(需要大写)。列本身必须是BIGINT UNSIGNED NOT NULL 类型,具有名为 的唯一索引 FTS_DOC_ID_INDEX。最好在创建表时定义此列。如果InnoDB 在创建 FULLTEXT索引时必须将列添加到表中,则索引操作的开销要大得多。

另请参见全文搜索FULLTEXT 索引ilist

双写缓冲区

InnoDB使用称为 doublewrite 的文件刷新技术。在将 页面写入 数据文件之前, InnoDB首先将它们写入一个称为双写缓冲区的存储区域。只有在对双写缓冲区的写入和刷新完成后,才会 InnoDB将页面写入数据文件中的正确位置。如果操作系统、存储子系统或mysqld进程在页面写入过程中崩溃,可以在崩溃恢复InnoDB期间从 doublewrite 缓冲区中找到一份完好的页面副本 。

尽管数据总是被写入两次,但双写缓冲区不需要两倍的 I/O 开销或两倍的 I/O 操作。数据作为一个大的顺序块写入缓冲区本身,只需fsync()调用一次操作系统。

另见崩溃恢复数据文件页面清除

降低

一种通过诸如 or 之类的语句删除架构对象的DDL操作。它在内部映射到一个语句。从一个 角度来看,此类操作的性能考虑涉及 数据字典被锁定以确保相互关联的对象全部更新的时间,以及更新 缓冲池等内存结构的时间。对于 表,删除操作与截断操作(语句) 具有一些不同的特征 。DROP TABLEDROP INDEXALTER TABLEInnoDBTRUNCATE TABLE

另见缓冲池数据字典DDL截断

数据存储网

数据库源名称 的缩写。它是Connector/ODBC中连接 信息 的编码。有关完整详细信息,请参阅 在 Windows 上配置连接器/ODBC DSN 。它等效于 Connector/NET使用 的连接字符串

另见connectionconnection stringConnector/NETConnector/ODBC

动态游标

ODBC支持的 一种游标,可以在再次读取行时获取新的和更改的结果。游标是否可见更改以及更改的速度取决于所涉及的表类型(事务性或非事务性)以及事务性表的隔离级别。必须显式启用对动态游标的支持。

另请参见游标ODBC

动态行格式

插件中引入的行格式InnoDB,作为 梭子鱼 文件格式的一部分提供。因为长的可变长度列值存储在保存行数据的页面之外,所以它对于包含大对象的行非常有效。由于通常不会访问大字段来评估查询条件,因此不会经常将它们带入缓冲池,从而减少 I/O 操作并更好地利用缓存内存。

从 MySQL 5.7.9 开始,默认行格式由 定义 innodb_default_row_format,默认值为DYNAMIC.

有关InnoDB DYNAMIC行格式的其他信息,请参阅 动态行格式

另见Barracuda缓冲池文件格式行格式

动态SQL

与将语句的各个部分连接成字符串变量的幼稚技术相比, 该功能允许您使用更健壮、安全和高效的方法来创建和执行 准备好的语句来替换参数值。

另见准备好的声明

动态语句

通过动态 SQL创建和执行 的准备好的语句

另见动态 SQL准备好的语句

尝鲜者

类似于beta的阶段,通常在非关键任务环境中评估软件产品的性能、功能和兼容性。

另见测试版

埃菲尔铁塔

一种包括许多面向对象特性的编程语言。它的一些概念为 JavaC#开发人员所熟悉。对于 MySQL 的开源 Eiffel API,请参阅第 27.13 节,“MySQL Eiffel Wrapper”

另请参阅APIC#Java

嵌入式

嵌入式 MySQL 服务器库 ( libmysqld ) 使得在 客户端应用程序中运行功能齐全的 MySQL 服务器成为可能。主要的好处是提高了嵌入式应用程序的速度和更简单的管理。

另见客户端libmysqld

错误日志

一种显示有关 MySQL 启动和关键运行时错误和 崩溃信息的日志。有关详细信息,请参阅第 5.4.2 节,“错误日志”

另请参见崩溃日志

驱逐

从缓存或其他临时存储区域(例如InnoDB 缓冲池)中删除项目的过程。通常(但并非总是)使用LRU算法来确定要删除的项目。当一个 脏页被逐出时,它的内容被刷新到磁盘,并且任何脏的相邻页面 也可能被刷新。

另见缓冲池脏页刷新LRU邻居页

异常拦截器

一种用于跟踪、调试或增加数据库应用程序遇到的 SQL 错误的拦截器。例如,拦截器代码可以发出一条SHOW WARNINGS语句来检索附加信息,并添加描述性文本,甚至更改返回给应用程序的异常类型。因为拦截器代码仅在 SQL 语句返回错误时调用,所以在正常(无错误)操作期间不会对应用程序造成任何性能损失。

在使用Connector/J的Java应用程序中 ,设置此类拦截器涉及实现 接口,以及向连接字符串添加 属性。 com.mysql.jdbc.ExceptionInterceptorexceptionInterceptors

在使用Connector/NET的Visual Studio应用程序中,设置此类拦截器涉及定义一个从该类继承的类并将该类名称指定为连接字符串的一部分。 BaseExceptionInterceptor

另请参见Connector/JConnector/NETinterceptorJavaVisual Studio

独占锁

一种防止任何其他事务锁定同一行的锁。根据事务 隔离级别,这种锁可能会阻止其他事务写入同一行,也可能会阻止其他事务读取同一行。默认隔离级别 REPEATABLE READ通过允许事务读取具有独占锁的行来实现更高 的并发性,这种技术称为一致性读取InnoDB

另请参见并发一致读取隔离级别可重复读取共享锁事务

程度

表空间中的一 组页面。对于 16KB 的默认 页面大小,一个范围包含 64 个页面。在 MySQL 5.6 中, 实例的页面大小可以是 4KB、8KB 或 16KB,由 配置选项控制。对于 4KB、8KB 和 16KB 页面大小,范围大小始终为 1MB(或 1048576 字节)。 InnoDBinnodb_page_size

InnoDBMySQL 5.7.6 中添加了 对 32KB 和 64KB 页面大小的支持。对于 32KB 页面大小,范围大小为 2MB。对于 64KB 页面大小,extent 大小为 4MB。

InnoDB预读请求和 双写缓冲区等功能 使用一次读取、写入、分配或释放数据的 I/O 操作。

另见双写缓冲区页面页面大小预读表空间

F

.frm 文件

包含元数据的文件,例如 MySQL 表的表定义。

对于备份,您必须始终保留完整的 .frm文件集以及备份数据,以便能够恢复备份后更改或删除的表。

虽然每个InnoDB表都有一个 .frm文件,但在系统表空间InnoDB 中维护着自己的表元数据 。

.frm文件由 MySQL Enterprise Backup 产品备份。在进行备份时,不得通过 ALTER TABLE操作修改这些文件,这就是为什么包含非InnoDB​​表的备份在备份文件时执行 FLUSH TABLES WITH READ LOCK 操作以冻结此类活动的 原因.frm。还原备份可能会导致.frm创建、更改或删除文件以匹配备份时数据库的状态。

另见数据字典MySQL Enterprise Backup系统表空间

故障转移

在发生故障时自动切换到备用服务器的能力。在 MySQL 上下文中,故障转移涉及备用数据库服务器。通常在 J2EE环境中由应用程序服务器或框架支持。

另请参阅连接器/JJ2EE

快速创建索引

InnoDB 插件中首次引入的功能,现在是 MySQL 5.5 及更高版本的一部分,通过避免完全重写关联表来 加速 InnoDB 二级索引的创建。加速也适用于删除二级索引。

由于索引维护会增加许多数据传输操作的性能开销,因此请考虑执行诸如有 ALTER TABLE ... ENGINE=INNODBINSERT INTO ... SELECT * FROM ...没有任何二级索引的操作,然后再创建索引。

在 MySQL 5.6 中,此功能变得更加通用。ALTER TABLE 您可以在创建索引时读取和写入表,并且可以在不复制表、不阻塞DML操作或两者的情况下执行更多类型的操作。因此在 MySQL 5.6 及更高版本中,这组功能被称为在线 DDL 而不是快速创建索引。

有关相关信息,请参阅 第 14.13 节,“InnoDB 和在线 DDL”

另请参见DML索引在线 DDL二级索引

快速关机

默认关机程序InnoDB,基于配置设置innodb_fast_shutdown=1。为了节省时间,跳过了某些刷新 操作。这种类型的关闭在正常使用期间是安全的,因为刷新操作是在下次启动期间执行的,使用与崩溃恢复中相同的机制 。在数据库因升级或降级而关闭的情况下,执行慢速关闭以确保在关闭期间将所有相关更改应用于 数据文件

另见崩溃恢复数据文件刷新关机缓慢关机

文件格式

表的文件格式,使用 配置选项InnoDB启用。innodb_file_format支持的文件格式是 AntelopeBarracuda。Antelope 是原始InnoDB文件格式,支持 REDUNDANTCOMPACT行格式。Barracuda 是较新的InnoDB文件格式,支持COMPRESSEDDYNAMIC行格式。

另见AntelopeBarracudafile-per-table.ibd 文件ibdata 文件行格式

每表文件

innodb_file_per_table选项控制的设置的通用名称,这是影响InnoDB文件存储、功能可用性和 I/O 特性等方面的重要配置选项。从 MySQL 5.6.7 开始, innodb_file_per_table默认启用。

启用该选项后,您可以在其自己的.ibd 文件innodb_file_per_table 中创建表, 而不是在系统表空间的共享ibdata 文件中 创建表。当表数据存储在单独的.ibd 文件中时,您可以更灵活地选择 数据压缩等功能所需的 行格式。操作也更快,回收的 空间可以被操作系统使用,而不是保留给. TRUNCATE TABLEInnoDB

MySQL Enterprise Backup产品 对于 在其自己的文件中的表更加灵活。例如,表可以从备份中排除,但前提是它们位于单独的文件中。因此,此设置适用于备份频率较低或按不同计划备份的表。

另见压缩行格式压缩文件格式.ibd 文件ibdata 文件innodb_file_per_tableMySQL 企业备份行格式系统表空间

填充因子

InnoDB 索引中,在页面被拆分之前索引数据所占 页面的比例。索引数据首先在页面之间划分时未使用的空间允许使用更长的字符串值更新行,而无需昂贵的索引维护操作。如果填充因子太低,索引会占用比需要更多的空间,从而在读取索引时导致额外的 I/O 开销。如果填充因子太高,任何增加列值长度的更新都可能导致索引维护的额外 I/O 开销。有关更多信息,请参阅 第 14.6.2.2 节,“InnoDB 索引的物理结构”

另见索引页面

固定行格式

此行格式由MyISAM存储引擎使用,而不是由InnoDB. 如果您在 MySQL 5.7.6 或更早版本中 使用InnoDB该选项 创建 表,请改用紧凑行格式,尽管该 值可能仍会显示在报告等输出中。从 MySQL 5.7.7 开始,如果指定则返回错误 。 ROW_FORMAT=FIXEDInnoDBFIXEDSHOW TABLE STATUSInnoDBROW_FORMAT=FIXED

另请参见紧凑行格式行格式

齐平

将更改写入已缓存在内存区域或临时磁盘存储区域中的数据库文件。定期刷新的 InnoDB存储结构包括重做日志撤销日志缓冲池

刷新可能发生是因为内存区域已满并且系统需要释放一些空间,因为 提交操作意味着事务的更改可以完成,或者因为 缓慢的关闭操作意味着所有未完成的工作都应该完成。当一次刷新所有缓冲数据并不重要时, InnoDB可以使用一种称为 模糊检查点的技术来刷新小批量页面以分散 I/O 开销。

另见缓冲池提交模糊检查点重做日志慢速关机撤消日志

刷新列表

InnoDB跟踪 缓冲池中脏页的 内部数据结构: 即已更改且需要写回磁盘的页面。此数据结构由内部 微型交易频繁更新,因此由其自己的互斥锁保护以允许并发访问缓冲池。 InnoDB

另见缓冲池脏页LRU迷你事务互斥锁页面页面清理器

外键

一种指针关系,位于单独 InnoDB表中的行之间。外键关系在父表子表的一列上定义 。

除了能够快速查找相关信息外,外键还有助于通过防止任何这些指针在插入、更新和删除数据时变得无效来帮助实施参照完整性。这种强制机制是一种 约束。如果关联的外键值在另一个表中不存在,则无法插入指向另一个表的行。如果某行被删除或外键值改变,而另一个表中的行指向该外键值,可以设置外键防止删除,导致其他表中对应的列值变为 null, 或自动删除其他表中的相应行。

设计 规范化数据库的一个阶段是识别重复数据,将数据分离到新表中,并设置外键关系,以便使用 连接操作可以像查询单个表一样查询多个表。

另请参见子表FOREIGN KEY 约束连接规范化NULL父表参照完整性关系

FOREIGN KEY 约束

通过外键关系维护数据库一致性 的约束 类型。与其他类型的约束一样,如果数据变得不一致,它可以防止数据被插入或更新;在这种情况下,要防止的不一致发生在多个表中的数据之间。或者,当执行 DML操作 时,根据创建外键时指定的选项 ,约束可以导致 子行中的数据被删除、更改为不同的值或设置为 null 。FOREIGN KEYON CASCADE

另见子表约束DML外键NULL

费托斯

在大多数情况下,全文搜索的首字母缩写词。有时在性能讨论中,全表扫描的首字母缩写词。

另见全表扫描全文搜索

完整备份

备份包括 每个 MySQL 数据库中 的所有,以及 MySQL实例中的所有数据库。与部分备份对比。

另见备份数据库实例部分备份

全表扫描

需要读取表的全部内容的操作,而不是仅使用 索引选择的部分。通常使用小型查找表执行,或者在使用大型表的数据仓库情况下执行,其中所有可用数据都被聚合和分析。这些操作发生的频率以及表相对于可用内存的大小,对查询优化和管理缓冲池中使用的算法有影响。

索引的目的是允许在大表中查找特定值或值范围,从而在可行时避免全表扫描。

另请参见缓冲池索引

全文搜索

LIKE与使用 SQL运算符或编写您自己的应用程序级搜索算法 相比,MySQL 功能可在表数据中以更快、更方便、更灵活的方式查找单词、短语、单词的布尔组合等 。它使用 SQL 函数 MATCH()FULLTEXT 索引

另见全文索引

全文索引

MySQL全文搜索 机制中保存搜索索引 的一种特殊索引。表示列值中的单词,省略任何指定为 stopwords的单词。最初,仅适用于表格。从 MySQL 5.6.4 开始,它也可用于 InnoDB表。 MyISAM

另见全文搜索索引InnoDB搜索索引停用词

模糊检查点

一种从 缓冲池中刷新小批量脏页的技术,而不是一次刷新所有脏页,否则会中断数据库处理。

另见缓冲池脏页刷新

G

遗传算法

普遍可用,软件产品离开测试版并可供销售、官方支持和生产使用的阶段。

另见测试版

广汽集团

全局程序集缓存 的缩写。.NET系统上用于存储库(程序集) 的中心区域。物理上由嵌套文件夹组成,被.NET CLR 视为单个虚拟文件夹。

另请参见.NET程序集

差距

InnoDB 索引数据结构中可以插入新值 的位置。当您使用诸如 之类的语句锁定一组行时SELECT ... FOR UPDATEInnoDB可以创建适用于间隙以及索引中的实际值的锁。例如,如果您选择所有大于 10 的值进行更新,间隙锁会阻止另一个事务插入大于 10 的新值。supremum 记录infimum 记录表示包含大于或小于所有值的间隙当前指数值。

另见并发间隙锁索引infimum 记录隔离级别supremum 记录

间隙锁

锁定索引记录之间的 间隙或锁定第一个或最后一个索引记录之前的间隙。例如,SELECT c1 FROM t WHERE c1 BETWEEN 10 and 20 FOR UPDATE;阻止其他事务将值 15 插入到列t.c1中,无论该列中是否已经存在任何此类值,因为范围内所有现有值之间的间隙都已锁定。与record locknext-key lock对比。

间隙锁是性能和 并发性之间权衡的一部分,并且用于某些事务隔离级别而不是其他事务隔离级别。

另见gapinfimum recordlocknext-key lockrecord locksupremum record

一般日志

请参阅一般查询日志

一般查询日志

一种用于对MySQL服务器处理的SQL语句进行诊断和故障排除的日志。可以存储在文件中或数据库表中。您必须通过配置选项启用此功能 general_log才能使用它。sql_log_off 您可以通过配置选项 为特定连接禁用它。

记录比慢查询日志 范围更广的查询 。与 用于复制 的二进制日志SELECT不同,一般查询日志包含语句并且不保持严格的顺序。有关详细信息,请参阅 第 5.4.3 节,“一般查询日志”

See Also二进制日志日志慢查询日志

通用表空间

使用语法创建 的共享InnoDB 表空间。CREATE TABLESPACE通用表空间可以在MySQL数据目录之外创建,能够容纳多个 ,支持所有行格式的表。MySQL 5.7.6 中引入了通用表空间。

使用或 语法 将表添加到通用表空间 。CREATE TABLE tbl_name ... TABLESPACE [=] tablespace_nameALTER TABLE tbl_name TABLESPACE [=] tablespace_name

对比系统表空间file-per-table 表空间。

有关详细信息,请参阅第 14.6.3.3 节,“通用表空间”

另见file-per-tablesystem tablespacetabletablespace

生成列

其值是根据列定义中包含的表达式计算的列。生成的列可以是 虚拟的或 存储的。

另见基列存储生成列虚拟生成列

生成的存储列

请参见存储的生成列

生成的虚拟列

请参阅虚拟生成列

玻璃鱼

另请参阅J2EE

全球交易

XA操作中涉及的 一种事务。它由几个本身是事务性的操作组成,但所有操作都必须作为一个组成功完成,或者全部作为一个组回滚。从本质上讲,这将 ACID属性向上扩展了一个级别,以便多个 ACID 事务可以作为也具有 ACID 属性的全局操作的组件一起执行。

另请参见ACID事务XA

小组提交

为一组提交InnoDB操作执行一次一些低级 I/O 操作(日志写入) 的优化,而不是为每个提交单独刷新和同步。

另见二进制日志提交

GUID

global unique identifier的 缩写,一个ID值,可用于跨不同数据库、语言、操作系统等关联数据。(作为使用顺序整数的替代方法,相同的值可能出现在不同的表、数据库等中,引用不同的数据。)较旧的 MySQL 版本将其表示为 BINARY(16). 目前,它表示为 CHAR(36). MySQL 有一个 UUID()以字符格式返回 GUID 值的函数,以及一个UUID_SHORT()以整数格式返回 GUID 值的函数。因为连续的 GUID 值不一定按升序排序,所以它不是用作大型 InnoDB 表的主键的有效值。

H

哈希索引

一种索引,用于使用相等运算符而不是范围运算符(如大于或)的查询BETWEEN。它可用于MEMORY表格。尽管出于历史原因哈希索引是 MEMORY表的默认索引,但该存储引擎还支持 B 树索引,这通常是通用查询的更好选择。

MySQL 包含此索引类型的变体,即 自适应哈希索引InnoDB,如果需要,它会根据运行时条件 自动为表构建 。

另请参见自适应哈希索引B 树索引InnoDB

硬盘

硬盘驱动器 的缩写。指使用旋转盘片的存储介质,通常在与SSD进行比较对比时。它的性能特征会影响 基于磁盘的工作负载的吞吐量。

另请参见基于磁盘SSD

心跳

发送以指示系统正常运行的定期消息。在 复制上下文中,如果 停止发送此类消息,则其中一个副本 可以取而代之。可以在集群环境中的服务器之间使用类似的技术,以确认所有服务器都在正常运行。

另见复制来源

高水位线

表示上限的值,可以是运行时不应超过的硬限制,也可以是实际达到的最大值的记录。与low-water mark对比 。

另见低水位线

历史清单

计划由 清除 操作处理的带有删除标记记录的事务 列表。记录在撤销日志中。历史列表的长度由命令报告。如果历史列表增长到超过 配置选项的值,每个DML 操作都会稍微延迟,以允许清除操作完成刷新已删除的记录。 InnoDB SHOW ENGINE INNODB STATUSinnodb_max_purge_lag

也称为清除滞后

另请参阅DML刷新清除清除滞后回滚段事务撤消日志

打孔

从页面释放空块。InnoDB 透明页面压缩功能依赖于 打孔支持。有关更多信息,请参阅 第 14.9.2 节,“InnoDB 页面压缩”

另见稀疏文件透明页面压缩

主持人

数据库服务器的网络名称,用于建立 连接。通常与端口一起指定。在某些情况下,IP 地址127.0.0.1比特殊名称更localhost适合访问与应用程序位于同一服务器上的数据库。

另见连接本地主机端口

热的

行、表或内部数据结构被频繁访问的情况,需要某种形式的锁定或互斥,从而导致性能或可伸缩性问题。

尽管通常表示不希望出现的情况,但热备份是首选的备份类型。

另见热备份

热备份

在数据库运行且应用程序读取和写入数据库时​​进行的备份。备份涉及的不仅仅是复制数据文件:它必须包括在备份过程中插入或更新的任何数据;它必须排除在备份过程中删除的任何数据;并且它必须忽略任何未提交的更改。

执行热备份的 Oracle 产品, InnoDB尤其是表 MyISAM以及来自其他存储引擎的表,被称为 MySQL Enterprise Backup

热备份过程包括两个阶段。数据文件的初始复制会产生一个原始备份应用 步骤合并了备份运行时对数据库所做的任何更改。应用更改会生成 准备好的备份;这些文件随时可以在需要时恢复。

另请参阅应用MySQL 企业备份准备好的备份原始备份

.ibd 文件

file-per-table 表空间和通用表空间 的数据文件 。File-per-table 表空间 .ibd文件包含单个表和关联的索引数据。一般表空间 .ibd文件可能包含多个表的表和索引数据。MySQL 5.7.6 中引入了通用表空间。

.ibd文件扩展名不适用于 由一个或多个ibdata 文件组成 的系统表空间

DATA DIRECTORY =如果使用该子句 创建 file-per-table 表空间或通用表空间,则.ibd文件位于指定路径,正常数据目录之外,并由 .isl 文件指向。

当一个.ibd文件包含在MySQL Enterprise Backup产品的压缩备份中时,压缩的等价物是一个 .ibz文件。

另见数据库每表文件、通用表空间ibdata 文件.ibz 文件innodb_file_per_table.isl 文件MySQL 企业备份系统表空间

.ibz 文件

MySQL Enterprise Backup产品执行 压缩备份时,它会将使用file-per-table设置 创建的 每个表空间文件从扩展名转换为 扩展名。 .ibd.ibz

备份期间应用的压缩不同于 在正常操作期间保持表数据压缩的压缩行格式。压缩备份操作会跳过已经采用压缩行格式的表空间的压缩步骤,因为第二次压缩会减慢备份速度,但产生的空间节省很少或没有。

另请参见压缩备份压缩行格式每个表的文件、.ibd 文件MySQL 企业备份表空间

.isl文件

在 MySQL 5.6 及更高版本中使用子句或在 MySQL 5.7 及更高版本中使用子句创建的 表 指定 .ibd 文件位置的文件。它的功能类似于符号链接,不受实际符号链接机制的平台限制。您可以将表空间存储在 数据库目录之外,例如,根据表的用途,存储在特别大或快速的存储设备上。有关详细信息,请参阅 第 14.6.1.2 节,“在外部创建表”第 14.6.3.3 节,“常规表空间”InnoDBDATA DIRECTORY =CREATE TABLESPACE ... ADD DATAFILEInnoDB

另见数据库.ibd 文件表空间

I/O 绑定

请参阅磁盘绑定

ib文件集

InnoDBMySQL 数据库 中管理的一组文件:系统表空间file-per-table 表空间文件和重做日志文件。根据 MySQL 版本和InnoDB 配置,还可能包括通用表空间临时表空间撤消表空间文件。该术语有时用于InnoDB文件结构和格式的详细讨论,以指代由 InnoDBMySQL 数据库管理的一组文件。

另请参见数据库每个表的文件通用表空间重做日志系统表空间临时表空间撤消表空间

ibbackup_logfile

MySQL Enterprise Backup产品在热备份操作期间 创建的补充备份文件 。它包含有关备份运行时发生的任何数据更改的信息。初始备份文件(包括ibbackup_logfile)称为 原始备份,因为备份操作期间发生的更改尚未合并。在对原始备份文件执行 应用步骤后,生成的文件确实包含那些最终数据更改,称为准备好的备份。在此阶段, ibbackup_logfile不再需要该文件。

另请参阅应用热备份MySQL Enterprise Backup准备好的备份原始备份

数据文件

一组名称如ibdata1、 等的文件ibdata2组成 InnoDB 系统表空间。有关驻留在系统表空间 ibdata文件中的结构和数据的信息,请参阅 第 14.6.3.1 节,“系统表空间”

文件的增长ibdatainnodb_autoextend_increment 配置选项的影响。

另见更改缓冲区数据字典双写缓冲区每个表的文件、.ibd 文件innodb_file_per_table系统表空间撤消日志

文件

非压缩临时表和相关对象 的InnoDB 临时表空间 数据文件。配置文件选项, 允许用户定义临时表空间数据文件的相对路径。如果 未指定,默认行为是 在数据目录中创建一个自动扩展的 12MB 数据文件,旁边是. InnoDB innodb_temp_data_file_pathinnodb_temp_data_file_pathibtmp1ibdata1

另见数据文件临时表临时表空间

ib_log文件

一组文件,通常命名为ib_logfile0ib_logfile1,它们构成了 重做日志。有时也称为日志组。这些文件记录了试图改变 InnoDB表中数据的语句。在崩溃后启动时,这些语句会自动重放以更正由不完整事务写入的数据。

此数据不能用于手动恢复;对于这种类型的操作,请使用二进制日志

另见二进制日志日志组重做日志

清单

InnoDB FULLTEXT 索引中,数据结构由文档 ID 和标记(即特定单词)的位置信息组成。

另见全文索引

隐式行锁

InnoDB无需您特别请求即可获取以确保一致性 的行锁。

另见行锁

内存数据库

一种将数据保存在内存中的数据库系统,以避免由于磁盘 I/O 以及磁盘块和内存区域之间的转换而产生的开销。一些内存数据库牺牲了持久性(ACID设计理念中 的D)并且容易受到硬件、电源和其他类型故障的影响,使它们更适合只读操作。其他内存数据库确实使用持久性机制,例如将更改记录到磁盘或使用非易失性内存。

解决同类内存密集型处理的 MySQL 功能包括InnoDB 缓冲池自适应哈希索引只读事务 优化、MEMORY存储引擎、MyISAM键缓存和 MySQL 查询缓存。

另请参见ACID自适应哈希索引缓冲池基于磁盘的只读事务

增量备份

一种由MySQL Enterprise Backup产品执行的热备份, 它只保存自某个时间点以来更改的数据。拥有完整备份和连续的增量备份可以让您在很长一段时间内重建备份数据,而无需手头保留多个完整备份的存储开销。您可以还原完整备份,然后连续应用每个增量备份,或者您可以通过应用每个增量备份来使完整备份保持最新,然后执行单个还原操作。

更改数据的粒度在 页面级别。一页实际上可能覆盖不止一行。每个更改的页面都包含在备份中。

另请参阅热备份MySQL Enterprise Backup页面

指数

一种为 表的 提供快速查找功能的数据结构 ,通常通过形成 表示特定 或列集的 所有值的树结构( B 树)来实现。

InnoDB表总是有一个 代表主键的聚簇索引。它们还可以在一个或多个列上定义一个或多个二级索引。根据其结构,二级索引可以分为 部分索引、 索引或 复合索引。

索引是 查询性能的一个重要方面。数据库架构师设计表、查询和索引,以允许快速查找应用程序所需的数据。理想的数据库设计在可行的情况下使用覆盖索引 ;查询结果完全根据索引计算,而不读取实际的表数据。每个 外键约束还需要一个索引,以有效地检查表和 表中是否存在值。

虽然 B 树索引是最常见的,但哈希索引使用了不同类型的数据结构,如MEMORY存储引擎和InnoDB 自适应哈希索引R树索引用于多维信息的空间索引。

另请参见自适应哈希索引B 树子表聚集索引列索引复合索引覆盖索引外键哈希索引父表部分索引主键查询R 树二级索引桌子

索引缓存

保存 InnoDB 全文搜索令牌数据的内存区域。当在属于 FULLTEXT 索引的列中插入或更新数据时,它会缓冲数据以最大限度地减少磁盘 I/O 。当索引缓存变满时,令牌数据将写入磁盘。每个 InnoDB FULLTEXT索引都有自己独立的索引缓存,其大小由配置选项控制 innodb_ft_cache_size

另见全文搜索,全文索引

索引条件下推

索引条件下推 (ICP) 是一种优化,WHERE如果条件的一部分可以使用索引中的字段进行评估,则将条件的一部分下推到存储引擎。ICP可以减少存储引擎必须访问基表的次数和MySQL服务器必须访问存储引擎的次数。有关详细信息,请参阅 第 8.2.1.5 节,“索引条件下推优化”

另请参见索引存储引擎

索引提示

用于覆盖 优化器推荐的索引的扩展 SQL 语法。例如,the FORCE INDEX、、 USE INDEXIGNORE INDEX子句。通常在索引列的值分布不均匀时使用,从而导致 基数估计不准确。

另请参见基数索引

索引前缀

在应用于多列的索引(称为复合索引)中,索引的初始列或前导列。引用复合索引的前 1、2、3 等列的查询可以使用该索引,即使查询没有引用索引中的所有列。

另请参见复合索引索引

指标统计

查看统计数据

最小记录

索引中 的伪记录,表示 低于该索引中最小值的间隙。如果一个事务有一个语句,例如 ,并且该列中的最小值是 5,它是对 infimum 记录的锁定,可以防止其他事务插入更小的值,例如 0、-10 等。 SELECT ... FROM ... WHERE col < 10 FOR UPDATE;

另见gapindexpseudo-recordsupremum record

INFORMATION_SCHEMA

为 MySQL数据字典提供查询接口 的数据库 的名称。(此名称由 ANSI SQL 标准定义。)要检查有关数据库的信息(元数据),您可以查询诸如 和 之类的表,而不是使用 生成非结构化输出的命令。 INFORMATION_SCHEMA.TABLESINFORMATION_SCHEMA.COLUMNSSHOW

INFORMATION_SCHEMA数据库还包含特定于InnoDBInnoDB的表,这些表为数据字典提供查询接口。您使用这些表不是为了查看数据库的结构,而是为了获取有关表工作的实时信息,InnoDB以帮助进行性能监控、调整和故障排除。

另见数据字典数据库InnoDB

InnoDB

一个 MySQL 组件,它结合了高性能和 事务处理能力,以实现可靠性、健壮性和并发访问。它体现了 ACID的设计理念。表示为存储引擎;它处理使用该 ENGINE=INNODB子句创建或更改的表。有关体系结构详细信息和管理过程, 请参阅 第 14 章,InnoDB 存储引擎,有关性能建议,请参阅第 8.5 节,“优化 InnoDB 表”

在 MySQL 5.5 及更高版本中,InnoDB是新表的默认存储引擎, ENGINE=INNODB不需要该子句。

InnoDB表非常适合 热备份。 有关用于在不中断正常处理的情况下备份 MySQL 服务器 的MySQL Enterprise Backup产品的信息,请参阅 第 28.2 节,“MySQL Enterprise Backup Overview” 。

另见ACID热备份MySQL Enterprise Backup存储引擎事务

innodb_autoinc_lock_mode

innodb_autoinc_lock_mode 选项控制用于 自动增量锁定的算法。当你有一个自动递增的主键时,你只能使用基于语句的复制和设置 innodb_autoinc_lock_mode=1。此设置称为连续锁定模式,因为事务中的多行插入接收连续的自动增量值。如果您有 innodb_autoinc_lock_mode=2允许插入操作的更高并发性,请使用基于行的复制而不是基于语句的复制。此设置称为交错锁模式,因为同时运行的多个多行插入语句可以接收 交错的自增值。innodb_autoinc_lock_mode=0 除非出于兼容性目的,否则不应使用 该设置 。

连续锁模式 ( innodb_autoinc_lock_mode=1) 是 MySQL 8.0.3 之前的默认设置。从 MySQL 8.0.3 开始,交错锁模式 ( innodb_autoinc_lock_mode=2) 是默认的,这反映了从基于语句的复制到基于行的复制作为默认复制类型的变化。

另见auto-incrementauto-increment locking混合模式 insertprimary key

innodb_file_format

innodb_file_format选项定义了用于新的 file-per-table 表 空间的文件格式。目前,您可以指定AntelopeBarracuda文件格式。 InnoDB

另请参阅AntelopeBarracuda文件格式file-per-table通用表空间innodb_file_per_table系统表空间表空间

innodb_file_per_table

影响 InnoDB文件存储、功能可用性和 I/O 特性的许多方面的重要配置选项。在 MySQL 5.6.7 及更高版本中,它默认启用。该 innodb_file_per_table选项打开file-per-table模式。启用此模式后,新创建的 InnoDB表和关联的索引可以存储在系统表空间之外的file-per-table .ibd 文件中。

此选项会影响许多 SQL 语句的性能和存储注意事项,例如 DROP TABLETRUNCATE TABLE

启用该 innodb_file_per_table选项可以让您利用 MySQL Enterprise Backup中的表压缩和命名表备份等功能。

有关详细信息,请参阅 innodb_file_per_table第 14.6.3.2 节,“File-Per-Table 表空间”

另请参阅压缩每个表的文件、.ibd 文件MySQL 企业备份系统表空间

innodb_lock_wait_timeout

该选项在等待共享资源变为可用、放弃并处理错误、重试或在您的应用程序中进行替代处理innodb_lock_wait_timeout 之间设置平衡 。回滚等待超过指定时间获取 的任何事务。如果死锁是由不同存储引擎控制的多个表的更新引起的,则特别有用 ;不会自动检测到此类死锁 。 InnoDB

另见死锁死锁检测锁定等待

innodb_strict_mode

innodb_strict_mode选项控制是否InnoDB严格模式下运行,在这种模式下,通常被视为警告的条件会导致错误(并且底层语句失败)。

另见严格模式

插入

SQL 中的主要DML 操作之一。插入的性能是将数百万行加载到表 中的数据仓库系统和许多并发连接可能以任意顺序将行插入到同一个表中的OLTP系统的关键因素 。如果插入性能对您很重要,您应该了解InnoDB 特性,例如更改缓冲中使用的插入缓冲区自动递增列。

另请参见自动增量更改缓冲数据仓库DMLInnoDB插入缓冲区OLTPSQL

插入缓冲区

更改缓冲区 的旧名称。DELETE在 MySQL 5.5 中,添加了对缓冲和 UPDATE操作的二级索引页面更改的支持 。以前,只有 INSERT操作产生的变化才会被缓冲。首选术语现在是change buffer

另请参见更改缓冲区更改缓冲

插入缓冲

将操作产生的对二级索引页面的更改存储INSERT更改缓冲区中而不是立即写入更改的技术,以便可以执行物理写入以最大限度地减少随机 I/O。它是变化缓冲的一种;其他的是delete bufferingpurge buffering

如果二级索引是唯一的, 则不使用插入缓冲 ,因为在写出新条目之前无法验证新值的唯一性。其他类型的更改缓冲确实适用于唯一索引。

另请参阅更改缓冲区更改缓冲区删除缓冲区插入缓冲区清除缓冲区唯一索引

插入意向锁

一种间隙锁,由INSERT行插入之前的操作设置。这种类型的 表示插入的意图,这样插入到同一索引间隙的多个事务如果不在间隙内的同一位置插入,则无需等待彼此。有关详细信息,请参阅 第 14.7.1 节,“InnoDB 锁定”

另见gap locklocknext-key lock

实例

一个单独的mysqld守护进程管理一个数据目录,该目录代表一个或多个具有一组表的数据库。在开发、测试和一些 复制场景中,在同一 台服务器机器上有多个实例是很常见的,每个实例管理自己的数据目录并监听自己的端口或套接字。在一个实例运行 磁盘绑定工作负载的情况下,服务器可能仍有额外的 CPU 和内存容量来运行其他实例。

另见数据目录数据库磁盘绑定mysqld复制服务器

仪表

在源代码级别进行修改以收集性能数据以进行调整和调试。在 MySQL 中,检测收集的数据通过使用数据库的 SQL 接口 INFORMATION_SCHEMA公开 PERFORMANCE_SCHEMA

另见INFORMATION_SCHEMA性能模式

意向排他锁

意向锁

意向锁

一种应用于表 的锁,用于指示事务打算在表中的行上获取的锁的种类。不同的事务可以在同一个表上获取不同类型的意向锁,但是第一个在表上获取意向排他(IX) 锁的事务会阻止其他事务在表上获取任何 S 或 X 锁。反之,第一个获得 共享意向的交易表上的 (IS) 锁可防止其他事务获取表上的任何 X 锁。两阶段过程可以让锁请求按顺序解决,不会阻塞锁和相应的兼容操作。有关此锁定机制的更多信息,请参阅第 14.7.1 节,“InnoDB 锁定”

另见锁定锁定模式锁定事务

意向共享锁

意向锁

拦截器

用于检测或调试应用程序某些方面的代码,无需重新编译或更改应用程序本身的源代码即可启用。

另见命令拦截器连接器/J连接器/NET异常拦截器

内部临时表

优化器使用的优化 内部InnoDB临时表。

另见优化器

倒排索引

为文档检索系统优化的一种数据结构,用于实现InnoDB 全文搜索InnoDB FULLTEXT 索引作为 倒排索引实现,记录文档中每个单词的位置,而不是表行的位置。单个列值(存储为文本字符串的文档)由倒排索引中的许多条目表示。

另请参见全文搜索FULLTEXT 索引ilist

IOPS

每秒 I/O 操作 的缩写。繁忙系统的常见度量,尤其是OLTP应用程序。如果此值接近存储设备可以处理的最大值,则应用程序可能会 受磁盘限制,从而限制 可伸缩性

另见磁盘绑定OLTP可伸缩性

隔离级别

数据库处理的基础之一。隔离是 首字母缩略词 ACID中的I隔离级别是在多个事务同时进行更改和执行查询时 微调性能与结果的可靠性、一致性和可再现性之间的平衡的设置。

从最高程度的一致性和保护程度到最低程度,InnoDB 支持的隔离级别是: SERIALIZABLEREPEATABLE READREAD COMMITTEDREAD UNCOMMITTED

对于InnoDB表,许多用户可以为所有操作保留默认隔离级别 ( REPEATABLE READ )。专家用户可能会选择 READ COMMITTED级别,因为他们通过OLTP处理突破了可伸缩性的界限 ,或者在数据仓库操作期间,轻微的不一致不会影响大量数据的聚合结果。边缘级别(SERIALIZABLEREAD UNCOMMITTED)将处理行为更改到很少使用的程度。

另见ACIDOLTPREAD COMMITTEDREAD UNCOMMITTEDREPEATABLE READSERIALIZABLEtransaction

J2EE

Java Platform, Enterprise Edition:Oracle 的企业 Java 平台。它由用于企业级 Java 应用程序的 API 和运行时环境组成。有关完整详细信息,请参阅 http://www.oracle.com/technetwork/java/javaee/overview/index.html。对于 MySQL 应用程序,您通常使用 Connector/J进行数据库访问,使用TomcatJBoss等应用程序服务器 来处理中间层工作,还可以选择使用 Spring等框架。J2EE 堆栈中通常提供的与数据库相关的功能包括 连接池故障转移支持。

另见连接池连接器/J故障转移JavaJBossSpringTomcat

爪哇

一种结合了高性能、丰富的内置功能和数据类型、面向对象的机制、广泛的标准库和范围广泛的可重用第三方模块的编程语言。许多框架、应用程序服务器和其他技术支持企业开发。CC++开发人员熟悉它的大部分语法。要使用 MySQL 编写 Java 应用程序,您可以使用 称为 Connector/J的JDBC驱动程序。

另见C连接器/JC++JDBC

老板

另请参阅J2EE

JDBC

Java Database Connectivity的 缩写,一种 用于从Java应用程序访问数据库 的API 。编写 MySQL 应用程序的 Java 开发人员使用 Connector/J组件作为他们的 JDBC 驱动程序。

另请参阅API连接器/JJ2EEJava

JNDI

另见Java

加入

通过引用表中包含相同值的列从多个表中检索数据 的查询。理想情况下,这些列是InnoDB 外键关系的一部分,这可确保 引用完整性并为连接列建立索引通常用于在规范化数据设计 中通过用数字 ID 替换重复的字符串来节省空间和提高查询性能 。

另见外键索引规范化查询参照完整性

密钥库

另请参阅SSL

KEY_BLOCK_SIZE

在使用压缩行格式InnoDB的表中 指定数据页大小的选项 。默认值为 8 KB。较低的值有可能达到取决于行大小和压缩百分比组合的内部限制。

对于MyISAM表, KEY_BLOCK_SIZE可选择指定用于索引键块的大小(以字节为单位)。该值被视为提示;如有必要,可以使用不同的尺寸。为单个索引定义指定的 KEY_BLOCK_SIZE值会覆盖表级 KEY_BLOCK_SIZE值。

另见压缩行格式

大号

闩锁

一种轻量级结构,用于为其自己的内部内存结构InnoDB实现锁定,通常保持短暂的时间(以毫秒或微秒为单位)。一个通用术语,包括互斥锁(用于独占访问)和读写 (用于共享访问)。某些锁存器是 InnoDB性能调整的重点。有关闩锁使用和争用的统计信息可通过 性能模式界面获得。

另见locklockingmutexPerformance Schemarw-lock

libmysql

libmysqlclient库 的非正式名称 。

另见libmysqlclient

libmysql客户端

libmysqlclient.a名为或 的库文件,libmysqlclient.so通常链接到用C编写的客户端程序 。有时非正式地称为libmysqlmysqlclient库。

另见客户端libmysqlmysqlclient

libmysqld

这个嵌入式MySQL 服务器库使得在客户端应用程序中运行功能齐全的 MySQL 服务器成为可能。主要的好处是提高了嵌入式应用程序的速度和更简单的管理。您链接到 libmysqld库而不是 libmysqlclient。所有这三个库的 API 都是相同的。

另见客户端嵌入式libmysqllibmysqlclient

生命周期拦截器

Connector/J支持的 一种拦截器。它涉及实现接口 。 com.mysql.jdbc.ConnectionLifecycleInterceptor

另请参见连接器/J拦截器

列表

InnoDB 缓冲池表示为内存 列表 。当新页面被访问并进入缓冲池时,该列表会重新排序,因为缓冲池中的页面会再次被访问并被视为较新的页面,并且随着长时间未访问的页面 被从缓冲池中逐出。缓冲池分为 子列表,替换策略是熟悉的 LRU技术的变体。

另见缓冲池逐出LRU页面子列表

负载均衡

一种通过向复制或集群配置中的不同从属服务器发送查询请求来扩展只读连接的技术。使用 Connector/J,负载平衡通过 com.mysql.jdbc.ReplicationDriver类启用并由配置属性控制 loadBalanceStrategy

另请参阅连接器/JJ2EE

本地主机

另见连接

作为锁定策略 的一部分,控制对资源(例如表、行或内部数据结构)的访问的对象的高级概念。对于密集的性能调优,您可能会深入研究实现锁的实际结构,例如 mutexeslatches

另请参见闩锁锁定模式锁定互斥锁

锁定升级

一些数据库系统中使用的一种操作,将许多 行锁转换为单个 表锁,节省内存空间但减少对表的并发访问。 InnoDB对行锁使用节省空间的表示,因此 不需要 锁升级。

另见锁定行锁表锁

锁定模式

共享 (S)允许 事务读取一行。多个事务可以同时获取同一行上的 S 锁。

排他 (X) 锁允许事务更新或删除行。没有其他事务可以同时在同一行上获取任何类型的锁。

意向锁适用于表,用于指示事务打算在表中的行上获取什么样的锁。不同的事务可以在同一个表上获取不同类型的意向锁,但是第一个在表上获取意向排他 (IX) 锁的事务会阻止其他事务在表上获取任何 S 或 X 锁。相反,第一个获取表上意向共享 (IS) 锁的事务会阻止其他事务获取表上的任何 X 锁。两阶段过程可以让锁请求按顺序解决,不会阻塞锁和相应的兼容操作。

另见意向锁锁定锁定事务

锁定

保护 事务不被其他事务查询或更改的数据看到或更改的系统。锁定策略必须平衡数据库操作的 可靠性和一致性( ACID哲学的原则)与良好并发性所需的性能 。微调锁定策略通常涉及选择 隔离级别并确保所有数据库操作对于该隔离级别都是安全可靠的。

另见ACID并发隔离级别锁定事务

锁定读取

SELECT同时对表执行锁定操作 的语句InnoDB。要么SELECT ... FOR UPDATE要么SELECT ... LOCK IN SHARE MODE。它有可能产生 死锁,这取决于事务的 隔离级别。与非锁定读取相反。只读事务中的全局表不允许 。

SELECT ... FOR SHARESELECT ... LOCK IN SHARE MODE在 MySQL 8.0.1 中 替换,但LOCK IN SHARE MODE仍然可用于向后兼容。

请参阅第 14.7.2.4 节,“锁定读取”

另请参见死锁隔离级别锁定非锁定读取只读事务

日志

InnoDB上下文中,日志日志文件通常是指 由 ib_logfile 文件表示的重做日志。另一种类型的日志是 撤消日志,它是一个存储区域,用于保存活动事务修改的数据副本。 NInnoDB

MySQL 中其他重要的日志类型是 错误日志(用于诊断启动和运行时问题)、二进制日志(用于复制和执行时间点恢复)、一般查询日志(用于诊断应用程序问题)、和 慢速查询日志(用于诊断性能问题)。

另见二进制日志错误日志一般查询日志ib_logfile重做日志慢速查询日志撤消日志

日志缓冲区

保存要写入 构成 重做日志的日志文件的数据的内存区域。它由 配置选项控制。 innodb_log_buffer_size

另见日志文件重做日志

日志文件

构成重做日志ib_logfileN 文件之一。数据从日志缓冲区内存区域 写入这些文件 。

另见ib_logfile日志缓冲区重做日志

日志组

构成重做日志的一组文件,通常命名为ib_logfile0ib_logfile1。(因此,有时统称为 ib_logfile。)

另见ib_logfile重做日志

合乎逻辑的

一种涉及高级抽象方面的操作类型,例如表、查询、索引和其他 SQL 概念。通常,逻辑方面对于使数据库管理和应用程序开发方便和可用很重要。与物理对比。

另请参见逻辑备份物理备份。

逻辑备份

重现表结构和数据而不复制实际数据文件的备份。例如,该 mysqldump 命令会生成一个逻辑备份,因为它的输出包含诸如CREATE TABLE 和之类的语句INSERT,可以重新创建数据。与物理备份对比。逻辑备份提供了灵活性(例如,您可以在恢复之前编辑表定义或插入语句),但 恢复时间可能比物理备份长得多。

另见备份mysqldump物理备份恢复

松动的_

InnoDB服务器启动后 添加到配置选项的前缀,因此当前级别的 MySQL 无法识别的任何新配置选项都不会导致启动失败。MySQL 处理以此前缀开头的配置选项,但如果前缀后的部分不是可识别的选项,则给出警告而不是失败。

另见启动

低水位线

表示下限的值,通常是一些纠正措施开始或变得更积极的阈值。与high-water mark对比。

另见高水位线

LRU

最近最少使用 的首字母缩写词,一种管理存储区域的常用方法。当需要空间来缓存较新的项目时,最近未使用的项目将被逐出。InnoDB 默认情况下使用 LRU 机制来管理 缓冲池中的页面,但在 页面可能只被读取一次的情况下会出现异常,例如在全表扫描期间。LRU 算法的这种变体称为中点插入策略。有关详细信息,请参阅 第 14.5.1 节,“缓冲池”

另见缓冲池逐出全表扫描中点插入策略页面

LSN

日志序列号 的缩写。这个任意的、不断增加的值表示对应于重做日志中记录的操作的时间点。(这个时间点与 事务边界无关;它可以落在一个或多个事务的中间。)它在崩溃恢复和管理缓冲池InnoDB期间在 内部使用。

在 MySQL 5.6.3 之前,LSN 是一个 4 字节的无符号整数。当重做日志文件大小限制从 4GB 增加到 512GB 时,LSN 在 MySQL 5.6.3 中变为 8 字节无符号整数,因为需要额外的字节来存储额外的大小信息。基于 MySQL 5.6.3 或更高版本构建的使用 LSN 值的应用程序应使用 64 位而不是 32 位变量来存储和比较 LSN 值。

MySQL Enterprise Backup 产品中,您可以指定一个 LSN 来表示进行增量备份的时间点。相关的 LSN 由mysqlbackup命令的输出显示。一旦有了与完整备份时间相对应的 LSN,就可以指定该值以进行后续增量备份,其输出包含下一次增量备份的另一个 LSN。

另见缓冲池崩溃恢复增量备份MySQL 企业备份重做日志事务

.MRG文件

包含对其他表的引用的文件,由 MERGE存储引擎使用。具有此扩展名的文件始终包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

另见MySQL 企业备份mysqlbackup 命令

.MYD文件

MySQL 用来存储 MyISAM表数据的文件。

另见.MYI 文件MySQL Enterprise Backupmysqlbackup 命令

.MYI文件

MySQL 用来存储 MyISAM表索引的文件。

另见.MYD 文件MySQL Enterprise Backupmysqlbackup 命令

掌握

来源

主线程

在后台执行各种任务的InnoDB 线程。大多数这些任务都与 I/O 相关,例如将更改从更改缓冲区写入适当的二级索引。

为了提高并发性,有时会将操作从主线程移至单独的后台线程。例如,在 MySQL 5.6 及更高版本中, 脏页页面清理器线程 而不是主线程 从 缓冲池中清除。

另见缓冲池更改缓冲区并发脏页刷新页面清理器线程

MDL

元数据锁 的缩写。

另见元数据锁

中度信任

部分信任 的同义词。由于信任设置的范围如此广泛,部分信任是首选,以避免暗示只有三个级别(低、中和完全)。

另见连接器/NET部分信任

内存缓存

许多 MySQL 和 NoSQL软件栈的一个流行组件,允许快速读取和写入单个值并将结果完全缓存在内存中。传统上,应用程序需要额外的逻辑来将相同的数据写入 MySQL 数据库以进行永久存储,或者在数据尚未缓存在内存中时从 MySQL 数据库读取数据。现在,应用程序可以使用简单的 memcached协议,由多种语言的客户端库支持,使用InnoDB或 直接与 MySQL 服务器通信NDB表。这些 MySQL 表的 NoSQL 接口允许应用程序实现比直接发出 SQL 语句更高的读写性能,并且可以简化已经包含内存缓存的memcached系统的应用程序逻辑和部署配置 。

表的memcached接口 InnoDB在 MySQL 5.6 及更高版本中可用;有关详细信息,请参阅第 14.21 节,“InnoDB memcached 插件”。表的 memcached接口NDB 在 NDB Cluster 7.2 及更高版本中可用;有关详细信息,请参阅 http://dev.mysql.com/doc/ndbapi/en/ndbmemcache.html

另见InnoDBNoSQL

合并

将更改应用于缓存在内存中的数据,例如当页面被带入缓冲池时,更改缓冲区中记录的任何适用更改 都将合并到缓冲池中的页面中。更新后的数据最终通过flush机制 写入表空间。

另见缓冲池更改缓冲区刷新表空间

元数据锁

一种,可防止 对另一个事务同时使用的表进行 DDL操作。有关详细信息,请参阅 第 8.11.4 节,“元数据锁定”

对联机操作的 增强 ,特别是在 MySQL 5.6 及更高版本中,重点在于减少元数据锁定的数量。目标是在 表被其他事务查询、更新等操作时,不更改表结构(例如表)的 DDL 操作继续 CREATE INDEX进行 。 DROP INDEXInnoDB

另见DDL在线事务

指标计数器

在 MySQL 5.6 及更高版本中,由INFORMATION_SCHEMAINNODB_METRICS中的表 实现的功能 。您可以查询 低级操作的 计数和总数,并将结果与 ​​性能模式中的数据结合使用以进行性能调整。 InnoDB

另见counterINFORMATION_SCHEMAPerformance Schema

中点插入策略

最初将 页面放入 InnoDB 缓冲池的技术不是在列表的最新端,而是在中间的某个位置。innodb_old_blocks_pct根据选项的设置,该点的确切位置可能会有所不同 。目的是只读取一次的页面,例如在全表扫描期间,可以比使用严格的 LRU算法更快地从缓冲池中老化。有关详细信息,请参阅第 14.5.1 节,“缓冲池”

另见缓冲池全表扫描LRU页面

小额交易

处理的内部阶段,在DML操作期间在物理 级别对内部数据结构 InnoDB进行更改时。迷你交易 (mtr) 没有 回滚的概念;多个小交易可以在单个 交易中发生。小型事务将信息写入崩溃恢复期间使用的重做日志。迷你事务也可以在常规事务的上下文之外发生,例如在 后台线程的 清除处理期间。

另请参见提交崩溃恢复DML物理清除重做日志回滚事务

混合模式插入

为一些但不是所有新行指定自动增量值 的INSERT语句 。例如,多值可以在某些情况下和其他情况下 为自动增量列指定一个值 。为列值指定为 的行生成自动增量值 。另一个示例是一条 语句,其中可能会生成但不使用自动增量值,用于处理作为 而不是语句处理的任何重复行。 INSERTNULLInnoDBNULLINSERT ... ON DUPLICATE KEY UPDATEUPDATEINSERT

可能导致 复制配置中的服务器和 副本服务器 之间出现一致性问题。可能需要调整 innodb_autoinc_lock_mode 配置选项的值。

另见auto-incrementinnodb_autoinc_lock_modereplicareplicationsource

MM.MySQL

用于 MySQL 的较旧的 JDBC 驱动程序在与 MySQL 产品集成时 演变为 Connector/J 。

另见连接器/J

单核细胞增多症

由 Novell 开发的开源框架, 适用于 Linux 平台上 的Connector/NETC#应用程序。

另请参见连接器/NETC#

地铁

请参阅迷你交易

多核

一种可以利用多线程程序的处理器,例如 MySQL 服务器。

多版本并发控制

请参阅MVCC

互斥量

互斥变量 的非正式缩写。(Mutex 本身是互斥的缩写。)用于表示和强制执行对内部内存数据结构的InnoDB独占访问 的低级对象。一旦获得锁,任何其他进程、线程等都无法获得相同的锁。与rw-locks对比,后者 InnoDB用于表示和强制执行对内部内存数据结构的共享访问锁。Mutexes 和 rw-locks 统称为latches

另见latchlockPerformance SchemaPthreadsrw-lock

MVCC

多版本并发控制 的缩写。这种技术让具有特定 隔离级别的InnoDB 事务执行 一致的读取操作;也就是说,查询正在被其他事务更新的行,并查看这些更新发生之前的值。这是一种提高 并发性的强大技术,它允许查询继续进行而无需等待 其他事务持有的 锁。

这种技术在数据库世界中并不普遍。其他一些数据库产品和其他一些 MySQL 存储引擎不支持它。

另请参见ACID并发一致读取隔离级别事务

我的.cnf

MySQL选项文件 在 Unix 或 Linux 系统上的名称 。

另见my.ini选项文件

我的配置文件

在 Windows 系统上,MySQL 选项文件的名称。

另见my.cnf选项文件

MyODBC 驱动程序

Connector/ODBC 的过时名称 。

另请参阅连接器/ODBC

数据库

mysql程序是 MySQL 数据库的命令行解释器 。它 通过将请求传递给 mysqld守护进程 来处理SQL语句以及 MySQL 特定的命令,例如。SHOW TABLES

另见mysqldSQL

MySQL 企业备份

执行MySQL 数据库热备份的许可产品。它在备份 InnoDB表时提供最高的效率和灵活性,但也可以备份 MyISAM其他类型的表。

另见热备份InnoDB

mysql备份命令

MySQL Enterprise Backup产品 的命令行工具。它对表 进行 热备份操作, 对 其他类型的表进行热备份。有关此命令的更多信息,请参阅第 28.2 节,“MySQL 企业备份概述”InnoDBMyISAM

另见热备份MySQL 企业备份热备份

mysql客户端

由文件libmysqlclient 实现的库的非正式名称,扩展名为.aor .so

另见libmysqlclient

mysqld

mysqld也称为 MySQL 服务器,是一个单一的多线程程序,它完成 MySQL 安装中的大部分工作。它不会产生额外的进程。MySQL 服务器管理对包含数据库、表和其他信息(如日志文件和状态文件)的 MySQL 数据目录的访问。

mysqld作为 Unix 守护进程或 Windows 服务运行,不断等待请求并在后台执行维护工作。

另见实例mysql

MySQL数据库

构成 MySQL Python API基础的 开源 Python模块的名称。

另见PythonPython API

mysql转储

对数据库、表和表数据的某种组合 执行逻辑备份的命令。结果是再现原始模式对象、数据或两者的 SQL 语句。对于大量数据,MySQL Enterprise Backup物理备份解决方案速度更快,特别是对于 恢复操作。

另见逻辑备份MySQL 企业备份物理备份恢复

。网

另请参见ADO.NETASP.netConnector/NETMonoVisual Studio

本机 C API

libmysqlclient 的同义词。

另见libmysql

自然键

索引列,通常是主键,其中的值具有一定的现实意义。通常不建议这样做,因为:

  • 如果该值应该发生变化,则可能需要进行大量索引维护以重新排序 聚集索引并更新在每个二级索引中重复的主键值副本。

  • 即使看似稳定的值也可能以难以在数据库中正确表示的不可预知的方式发生变化。例如,一个国家可以变成两个或几个,使原来的国家代码作废。或者,关于唯一值的规则可能有例外。例如,即使纳税人 ID 对于一个人来说是唯一的,数据库也可能不得不处理违反该规则的记录,例如身份盗用的情况。纳税人 ID 和其他敏感的 ID 号也是不好的主键,因为它们可能需要保护、加密,并且在其他方​​面不同于其他列。

因此,通常最好使用任意数值来形成合成键,例如使用自动增量 列。

See Also auto-increment , clustered index , primary key , secondary index , synthetic key

邻居页面

与特定页面具有相同 范围的 任何页面。当一个页面被选择 刷新时,任何相邻的页面通常也会被刷新,作为传统硬盘的 I/O 优化。在 MySQL 5.6 及更高版本中,此行为可以由配置变量控制 ;您可能会为 SSD 驱动器关闭该设置,SSD 驱动器在随机位置写入小批量数据时没有相同的开销。 innodb_flush_neighbors

另见脏页范围刷新页面

下一键锁

索引记录上的记录锁和索引记录之前的间隙上的间隙锁 的组合。

另见间隙锁锁定记录锁

非锁定读

不使用 or子句 的查询。只读事务中全局表允许的唯一查询。与锁定读取相反 。请参阅 第 14.7.2.3 节,“一致的非锁定读取”SELECT ... FOR UPDATESELECT ... LOCK IN SHARE MODE

SELECT ... FOR SHARESELECT ... LOCK IN SHARE MODE在 MySQL 8.0.1 中 替换,但LOCK IN SHARE MODE仍然可用于向后兼容。

另请参见锁定读取查询只读事务

不可重复读

查询检索数据的情况,同一事务中的后续查询 检索应该是相同数据的内容,但查询返回不同的结果(同时被另一个事务提交更改)。

这种操作违背了 数据库设计的ACID原则。在事务中,数据应该是一致的,具有可预测和稳定的关系。

在不同的隔离级别中,不可重复读被 序列化读可重复读级别阻止,而一致读未提交读级别允许。

另请参见ACID一致读取隔离级别未提交读取、可重复读取可序列化事务

非阻塞 I/O

与异步 I/O 含义相同的行业术语 。

另请参阅异步 I/O

归一化

一种数据库设计策略,将数据拆分到多个表中,并将重复值压缩到由一个 ID 表示的单行中,以避免存储、查询和更新冗余或冗长的值。它通常用于 OLTP应用程序。

例如,一个地址可能被赋予一个唯一的 ID,这样人口普查数据库就可以通过将该 ID 与每个家庭成员相关联来表示 居住在该地址的关系,而不是存储复杂值的多个副本,例如 123 Main Street ,任何城镇,美国

再举一个例子,虽然一个简单的地址簿应用程序可能将每个电话号码与一个人的姓名和地址存储在同一个表中,但电话公司数据库可能会为每个电话号码分配一个特殊的 ID,并将号码和 ID 存储在一个单独的表中。当区域代码分开时,这种标准化表示可以简化大规模更新。

并不总是推荐规范化。主要查询且仅通过完全删除和重新加载来更新的数据通常保存在更少、更大的表中,其中包含重复值的冗余副本。这种数据表示被称为 非规范化,经常出现在数据仓库应用程序中。

另请参阅非规范化外键OLTP关系

无SQL

不使用SQL语言作为读取和写入数据的主要机制的一组数据访问技术的广义术语。一些NoSQL技术作为key-value存储,只接受单值读写;一些放宽了ACID方法论的限制;还有一些不需要预先计划的 架构MySQL 用户可以通过使用memcached API 直接访问某些类型的 MySQL 表,将 NoSQL 风格的处理与 SQL 操作结合起来以提高速度和简单性,以提高灵活性和方便性 。memcached接口 _ InnoDB表在 MySQL 5.6 及更高版本中可用;有关详细信息,请参阅第 14.21 节,“InnoDB memcached 插件”。表的 memcached接口NDB 在 NDB Cluster 7.2 及更高版本中可用;请参阅 ndbmemcache—NDB Cluster 的 Memcache API(不再支持)

另见ACIDInnoDBmemcached模式SQL

NOT NULL 约束

一种约束类型,指定不能包含任何NULL值。它有助于保持参照完整性,因为数据库服务器可以识别具有错误缺失值的数据。它还有助于查询优化中涉及的算法,允许优化器预测该列索引中的条目数。

另见约束NULL主键参照完整性

无效的

SQL中 的一个特殊值,表示缺少数据。涉及NULL值的任何算术运算或相等性测试依次产生NULL结果。(因此它类似于 NaN 的 IEEE 浮点概念,不是数字 。)在确定要除以多少行时,任何聚合计算(例如 AVG()忽略具有 值的行)。NULL唯一适用于 NULL值的测试使用 SQL 习语IS NULLIS NOT NULL.

NULL值在索引操作中发挥作用 ,因为为了提高性能,数据库必须尽量减少跟踪缺失数据值的开销。通常,NULL 值不存储在索引中,因为使用标准比较运算符测试索引列的查询永远无法将行与NULL该列的值相匹配。出于同样的原因,唯一索引不会阻止 NULL值;这些值根本没有在索引中表示。在列上声明NOT NULL约束可以确保没有行遗漏在索引之外,从而实现更好的查询优化(准确的行计数和估计是否使用索引)。

因为主键必须能够唯一标识表中的每一行,所以单列主键不能包含任何 NULL值,多列主键不能包含所有列都有NULL值的行。

虽然 Oracle 数据库允许将NULL 值与字符串连接,但 InnoDB将此类操作的结果视为NULL.

另见索引主键SQL

.OPT文件

包含数据库配置信息的文件。具有此扩展名的文件包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

另见MySQL 企业备份mysqlbackup 命令

ODBC

Open Database Connectivity 的首字母缩写词,一种行业标准 API。通常与基于 Windows 的服务器或需要 ODBC 与 MySQL 通信的应用程序一起使用。MySQL ODBC 驱动程序称为 Connector/ODBC

另请参阅连接器/ODBC

离页栏

包含可变长度数据(例如 BLOBVARCHAR)的列太长而无法放入B 树页面。数据存储在溢出页中。对于 此类存储, DYNAMIC行格式比旧的 COMPACT行格式更有效。

另请参阅B 树紧凑行格式动态行格式溢出页

联机事务处理

在线交易处理 的缩写。一种数据库系统或数据库应用程序,它运行具有许多事务的工作负载,具有频繁的写入和读取,通常一次影响少量数据。例如,航班预订系统或处理银行存款的应用程序。数据可能以 规范化形式组织,以在DML (插入/更新/删除)效率和 查询效率之间取得平衡。与数据仓库对比 。

凭借其行级锁定事务功能, InnoDB是 OLTP 应用程序中使用的 MySQL 表的理想存储引擎。

另见数据仓库DMLInnoDB查询行锁事务

在线的

一种不涉及数据库停机、阻塞或受限操作的操作。通常应用于 DDL。缩短受限操作周期的操作,例如 快速创建索引,在 MySQL 5.6 中 已经演变成更广泛的在线 DDL操作集。

在备份的上下文中,热备份是在线操作,而 热备份是部分在线操作。

另见DDL快速创建索引热备份在线 DDL热备份

在线DDL

一种在DDL(主要 )操作InnoDB期间 提高表的性能、并发性和可用性的功能。有关详细信息,请参阅 第 14.13 节,“InnoDB 和在线 DDL”ALTER TABLE

详细信息因操作类型而异。在某些情况下,可以在进行过程中同时修改表 ALTER TABLE。可以在没有表副本或使用特别优化的表副本类型的情况下执行该操作。就地操作的 DML 日志空间使用由 innodb_online_alter_log_max_size 配置选项控制。

此功能是MySQL 5.5 中 Fast Index Creation功能 的增强。

另见DDL快速创建索引在线

乐观的

指导关系数据库系统的低级实施决策的方法。关系数据库中的性能和并发性要求意味着必须快速启动或调度操作。一致性和 参照完整性的要求意味着任何操作都可能失败:一个事务可能被回滚,一个 DML操作可能违反约束,锁请求可能导致死锁,网络错误可能导致超时。乐观策略假设大多数请求或尝试都成功,因此为失败情况做准备的工作相对较少。当这个假设成立时,数据库几乎不会做不必要的工作;当请求确实失败时,必须做额外的工作来清理和撤消更改。

InnoDB对锁定提交等操作使用乐观策略。例如,事务更改的数据可以在提交发生之前写入数据文件,从而使提交本身非常快,但是如果事务回滚则需要更多的工作来撤消更改。

乐观策略的对立面是 悲观策略,系统经过优化以处理不可靠且经常失败的操作。这种方法在数据库系统中很少见,因为在选择可靠的硬件、网络和算法时非常谨慎。

另请参见提交并发DML锁定悲观参照完整性

优化器

MySQL 组件 根据相关的特征和数据分布 确定用于 查询的最佳索引连接顺序。

另见索引连接查询

选项

MySQL 的配置参数,存储在 选项文件中或通过命令行传递。

对于适用于 InnoDB表的选项,每个选项名称都以前缀开头。 innodb_

另请参见InnoDB选项选项文件

选项文件

包含MySQL 实例 配置 选项的文件。传统上,在 Linux 和 Unix 上这个文件被命名为 my.cnf,而在 Windows 上它被命名为 my.ini.

另见配置文件my.cnfmy.ini选项

溢出页

单独分配的磁盘页面 包含变长列(例如 BLOBVARCHAR),这些列太长而无法放在B 树 页面上。关联的列称为 离页列

另见B 树页外列

P

.par 文件

包含分区定义的文件。具有此扩展名的文件包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

InnoDB随着MySQL 5.7.6 中 对表的本机分区支持的引入, .par不再为分区InnoDB表创建文件。分区 MyISAM表继续使用 .parMySQL 5.7 中的文件。在 MySQL 8.0 中,分区支持仅由 InnoDB存储引擎提供。因此, .par从 MySQL 8.0 开始不再使用文件。

另见MySQL 企业备份mysqlbackup 命令

一个单位,表示在磁盘(数据文件)和内存( 缓冲池InnoDB) 之间的任一时刻有 多少数据传输。一页可以包含一行或多,具体取决于每行中的数据量。如果一行不能完全放入一页,则设置额外的指针式数据结构,以便可以将有关该行的信息存储在一页中。 InnoDB

在每页中容纳更多数据的一种方法是使用 压缩行格式。对于使用 BLOB 或大文本字段的表, 紧凑行格式允许将这些大列与行的其余部分分开存储,从而减少不引用这些列的查询的 I/O 开销和内存使用量。

InnoDB批量读取或写入页面集以增加 I/O 吞吐量时,它会一次读取或写入一个 范围

MySQL 实例中的所有InnoDB磁盘数据结构共享相同的页面大小

另请参见缓冲池紧凑行格式压缩行格式数据文件范围页面大小

页面清洁器

缓冲池中清除 InnoDB后台 线程。在 MySQL 5.6 之前,此活动由 主线程执行。页面清理器线程的数量由 MySQL 5.7.4 中引入的配置选项控制。 innodb_page_cleaners

另见缓冲池脏页刷新主线程线程

页面大小

对于 MySQL 5.5 及之前的版本,每个 InnoDB 页面的大小 固定为 16 KB。此值代表一种平衡:足够大以容纳大多数行的数据,但又足够小以最小化将不需要的数据传输到内存的性能开销。其他值未经测试或不支持。

从 MySQL 5.6 开始, InnoDB 实例的页面大小可以是 4KB、8KB 或 16KB,由 innodb_page_size配置选项控制。从 MySQL 5.7.6 开始,InnoDB还支持 32KB 和 64KB 页面大小。对于 32KB 和 64KB 页面大小, ROW_FORMAT=COMPRESSED不支持,最大记录大小为 16KB。

页面大小在创建 MySQL 实例时设置,之后保持不变。相同的页面大小适用于所有 InnoDB 表空间,包括 系统表空间file-per-table 表空间和 通用表空间

较小的页面大小有助于提高使用小块大小的存储设备的性能,特别是对于 磁盘绑定工作负载(例如OLTP应用程序)中的SSD设备 。随着个别行的更新,更少的数据被复制到内存、写入磁盘、重组、锁定等。

另见disk-boundfile-per-tablegeneral tablespaceinstanceOLTPpageSSDsystem tablespacetablespace

父表

外键关系中 的表,它保存从子表 指向的初始列值。删除或更新父表中的行的结果取决于外键定义中的ON UPDATEON DELETE子句。可以依次自动删除或更新子表中具有相应值的行,或者将这些列设置为NULL,或者阻止操作。

另见子表外键

部分备份

包含MySQL 数据库中的某些或 MySQL 实例中的某些数据库 的备份。与完整备份对比 。

另请参见备份完整备份

部分索引

仅表示列值的一部分的 索引通常是 long 值 的前 N ​​个字符(前缀)。VARCHAR

另见索引索引前缀

部分信任

托管提供商通常使用的执行环境,其中应用程序具有某些权限但没有其他权限。例如,应用程序可能能够通过网络访问数据库服务器,但在读取和写入本地文件方面 处于沙盒”状态。

另见连接器/NET

性能模式

performance_schemaMySQL 5.5 及更高版本中,模式提供了一组表,您可以查询这些表以获取有关 MySQL 服务器许多内部部分的性能特征的详细信息。请参阅 第 25 章,MySQL 性能模式

另请参见INFORMATION_SCHEMAlatchmutexrw-lock

Perl

一种起源于 Unix 脚本和报告生成的编程语言。结合了高性能正则表达式和文件 I/O。通过 CPAN 等存储库提供大量可重用模块。

另请参阅Perl API

接口

用Perl语言编写的 MySQL 应用程序 的开源API 。通过和 模块实现。有关详细信息,请参阅 第 27.9 节,“MySQL Perl API”DBIDBD::mysql

另见APIPerl

持久统计

一种将表的索引 统计信息存储在磁盘上的功能,可为 查询提供更好的计划稳定性。有关详细信息,请参阅第 14.8.11.1 节,“配置持久优化器统计参数”InnoDB

另见索引优化器计划稳定性查询

悲观

一种为了安全而牺牲性能或并发性的方法。如果很大比例的请求或尝试可能会失败,或者如果失败请求的后果很严重,那么它是合适的。InnoDB使用所谓的悲观 锁定策略,以尽量减少死锁的机会。在应用程序级别,您可以通过在一开始就获取事务所需的所有锁的悲观策略来避免死锁。

许多内置数据库机制使用相反的 乐观方法。

另见死锁锁定乐观

幻影

出现在查询结果集中但不出现在较早查询的结果集中的行。例如,如果一个查询在一个事务中运行两次,与此同时,另一个事务在插入新行或更新行后提交,以便它与 WHERE查询的子句匹配。

这种情况称为幻读。它比不可重复读取更难防范,因为锁定第一个查询结果集中的所有行并不能阻止导致幻像出现的更改。

在不同的隔离级别中,幻读被 序列化读级别阻止,而被可重复读一致读读未提交级别允许。

另请参见一致读取隔离级别不可重复读取未提交读取、可重复读取可序列化事务

PHP

一种起源于 Web 应用程序的编程语言。代码通常作为块嵌入到网页的源代码中,输出由 Web 服务器传输时替换到页面中。这与 CGI 脚本等以整个网页形式打印输出的应用程序形成对比。PHP 编码风格用于高度交互和动态的网页。现代 PHP 程序也可以作为命令行或 GUI 应用程序运行。

MySQL 应用程序是使用一种 PHP API 编写的。可重用模块可以用C编写并从 PHP 调用。

另一种用 MySQL 编写服务器端网页的技术是ASP.net

另请参见ASP.netCPHP API

PHP API

有几个API可用于用 PHP语言编写 MySQL 应用程序:原始 MySQL API ( Mysql) MySQL 改进扩展 ( Mysqli) MySQL 本机驱动程序 ( Mysqlnd) MySQL 函数 ( PDO_MYSQL) 和连接器/PHP。有关详细信息,请参阅MySQL 和 PHP

另请参见APIPHP

身体的

一种涉及硬件相关方面的操作类型,例如磁盘块、内存页、文件、位、磁盘读取等。通常,物理方面在专家级性能调整和问题诊断期间很重要。与逻辑对比。

另见逻辑物理备份

物理备份

复制实际数据文件的备份。例如, MySQL Enterprise Backupmysqlbackup产品的 命令产生物理备份,因为它的输出包含服务器可以直接使用的数据文件 ,从而使恢复操作更快 。与逻辑备份对比。 mysqld

另见备份逻辑备份MySQL 企业备份恢复

PITR

时间点恢复的 缩写。

另请参阅时间点恢复

计划稳定性

查询执行计划 的一个属性,其中优化器每次对给定查询做出相同的选择,因此性能是一致且可预测的。

另见查询查询执行计划

时间点恢复

还原 备份以在特定日期和时间重新创建数据库状态的过程。通常缩写为 PITR。因为指定时间不太可能与备份时间完全对应,所以这种技术通常需要 物理备份逻辑备份相结合。例如,使用MySQL Enterprise Backup产品,您可以恢复在指定时间点之前进行的最后一次备份,然后从备份时间到 PITR 时间之间的 二进制日志中重放更改。

另见备份二进制日志逻辑备份MySQL 企业备份物理备份

港口

数据库服务器侦听的 TCP/IP 套接字数,用于建立连接。通常与 主机一起指定。根据您对网络加密的使用,可能有一个端口用于未加密的流量,另一个端口用于 SSL连接。

另见连接主机SSL

字首

请参阅索引前缀

准备好的备份

MySQL Enterprise Backup 产品在应用 二进制日志增量备份的所有阶段完成后 生成的一组备份文件 。生成的文件已准备好 恢复。在应用步骤之前,这些文件被称为原始备份

另见二进制日志热备份增量备份MySQL 企业备份原始备份还原

准备好的声明

预先分析以确定高效执行计划的 SQL 语句。可以多次执行,没有每次解析分析的开销。WHERE通过使用占位符,每次都可以用不同的值替换子句中的文字 。这种替换技术提高了安全性,防止某些类型的 SQL 注入攻击。您还可以减少将返回值转换和复制到程序变量的开销。

虽然您可以直接通过 SQL 语法使用准备好的语句,但是各种连接器 都有用于操作准备好的语句的编程接口,并且这些 API 比通过 SQL 更有效。

另请参见客户端准备语句连接器服务器端准备语句

首要的关键

一组列——暗示,基于这组列的索引——可以唯一标识表中的每一行。因此,它必须是不包含任何NULL值的唯一索引。

InnoDB要求每张表都有这样的索引(也叫聚簇索引或聚簇索引),根据主键的列值来组织表存储。

选择主键值时,请考虑使用任意值(合成键),而不是依赖从其他来源派生的值( 自然键)。

另见聚集索引索引自然键合成键

过程

正在执行的程序的实例。操作系统在多个运行进程之间切换,允许一定程度的并发。在大多数操作系统上,进程可以包含共享资源的多个 执行线程。线程之间的上下文切换比进程之间的等效切换更快。

另见并发线程

伪记录

索引中的人工记录,用于 锁定当前不存在的键值或范围。

See Also infimum record , locking , supremum record

线程

POSIX 线程标准,它定义了用于 Unix 和 Linux 系统上的线程和锁定操作的 API。在 Unix 和 Linux 系统上,InnoDB将此实现用于mutexes

另见互斥体

清除

一种由一个或多个单独的后台线程(由 控制 innodb_purge_threads)执行的垃圾收集,该线程按定期计划运行。清除从 历史列表中解析和处理 撤消日志页,目的是删除标记为删除(由先前的 语句)并且不再需要 MVCC回滚的聚簇和二级索引记录。清除处理后从历史列表中释放撤消日志页面。 DELETE

另请参阅历史列表MVCC回滚撤消日志

清除缓冲

将操作产生的对二级索引页面的更改存储DELETE更改缓冲区中而不是立即写入更改的技术,以便可以执行物理写入以最大限度地减少随机 I/O。(因为删除操作是一个两步过程,此操作缓冲通常清除先前标记为删除的索引记录的写入。)它是 更改缓冲的一种类型;其他的是插入缓冲删除缓冲

另请参阅更改缓冲区更改缓冲区删除缓冲区插入缓冲区插入缓冲区

清除滞后

InnoDB 历史列表 的别称。与 innodb_max_purge_lag 配置选项相关。

另见历史列表清除

清除线程

进程中专用于执行定期清除 操作 的 线程 在 MySQL 5.6 及更高版本中,配置选项 启用了多个清除线程 。InnoDBinnodb_purge_threads

另请参见清除线程

Python

一种用于广泛领域的编程语言,从 Unix 脚本到大型应用程序。包括运行时类型、内置高级数据类型、面向对象的特性和广泛的标准库。通常用作其他语言编写的组件之间的 胶水语言。MySQL Python API 是开源的MySQLdb 模块。

另请参阅MySQLdbPython API

Python API

另请参见APIPython

询问

SQL中,从一个或多个 中读取信息的操作。根据数据的组织和查询的参数,可以通过查询 索引来优化查找。如果涉及多个表,则查询称为 join

由于历史原因,有时在讨论语句的内部处理时会使用广义上的 查询” ,包括其他类型的 MySQL 语句,如DDLDML语句。

另见DDLDML索引连接SQL

查询执行计划

优化器做出的关于如何最有效地执行查询的一组决策,包括使用哪个或哪些索引,以及连接表 的顺序 。计划稳定性涉及对给定查询始终如一地做出相同的选择。

另见索引连接计划稳定性查询

查询日志

请参阅一般查询日志

停顿

为了减少数据库活动量,通常是在准备操作,例如 an ALTER TABLEbackupshutdown。可能涉及也可能不涉及尽可能多的刷新 ,以便InnoDB 不会继续执行后台 I/O。

在 MySQL 5.6 及更高版本中,该语法FLUSH TABLES ... FOR EXPORT将一些数据写入磁盘以用于 InnoDB表,这使得通过复制数据文件来备份这些表变得更加简单。

另见备份刷新InnoDB关机

R

R树

用于多维数据(例如地理坐标、矩形或多边形)的空间索引的树数据结构。

另见B 树

袭击

廉价驱动器冗余阵列的 缩写。将 I/O 操作分散到多个驱动器可在硬件级别实现更高的并发性,并提高低级别写入操作的效率,否则这些操作将按顺序执行。

另见并发

随机潜水

一种快速估计列中不同值的数量(列的 基数)的技术。 InnoDB从索引中随机抽样页面并使用该数据来估计不同值的数量。

另见基数

原始备份

MySQL Enterprise Backup产品 生成的初始备份文件集, 在 二进制日志中反映的更改和应用任何 增量备份之前。在此阶段,文件尚未准备好 恢复。应用这些更改后,这些文件称为 准备好的备份

另见二进制日志热备份ibbackup_logfile增量备份MySQL 企业备份准备好的备份恢复

读已提交

为了提高性能,使用 锁定策略 的隔离级别放宽了 事务之间的一些保护。事务看不到其他事务未提交的数据,但可以看到当前事务启动后另一个事务提交的数据。因此,事务永远不会看到任何坏数据,但它确实看到的数据可能在某种程度上取决于其他事务的时间。

当具有此隔离级别的事务执行 UPDATE ... WHEREDELETE ... WHERE操作时,其他事务可能必须等待。该事务可以执行SELECT ... FOR UPDATE, 和LOCK IN SHARE MODE 操作而无需让其他事务等待。

SELECT ... FOR SHARESELECT ... LOCK IN SHARE MODE在 MySQL 8.0.1 中 替换,但LOCK IN SHARE MODE仍然可用于向后兼容。

另见ACID隔离级别锁定可重复读取可序列化事务

阅读现象

脏读不可重复读读 等现象,当一个事务读取到另一个事务修改过的数据时,就会出现这种现象。

另见脏读不可重复读幻像

读未提交

在事务之间提供最少保护 的隔离级别。查询采用锁定 策略,允许它们在通常等待另一个事务的情况下继续进行。然而,这种额外的性能是以不太可靠的结果为代价的,包括已被其他事务更改但尚未提交的数据(称为脏读)). 请谨慎使用此隔离级别,并注意结果可能不一致或不可重现,具体取决于其他事务同时在做什么。通常,具有此隔离级别的事务仅执行查询,而不执行插入、更新或删除操作。

另见ACID脏读隔离级别锁定事务

阅读视图

的MVCC机制 使用的内部快照 InnoDB。某些 事务,根据它们的隔离级别,会看到事务(或在某些情况下,语句)开始时的数据值。使用读取视图的隔离级别是可重复读取、 已提交读取未提交读取

另请参见隔离级别MVCCREAD COMMITTEDREAD UNCOMMITTEDREPEATABLE READ事务

预读

一种 I/O 请求类型,它异步地将一组 页面(整个 范围)预取到 缓冲池中,以防很快需要这些页面。线性预读技术根据前一范围内页面的访问模式预取一个范围内的所有页面。一旦缓冲池中有一定数量的来自同一范围的页面,随机预读技术就会预取该范围的所有页面。随机预读不是MySQL 5.5的一部分,而是在 innodb_random_read_ahead 配置选项的控制下在MySQL 5.6中重新引入。

另见缓冲池范围页面

只读事务

一种事务类型,可以通过消除为每个事务InnoDB创建 读取视图所涉及的一些簿记来针对表进行优化。只能执行非锁定读查询。它可以使用 syntax 显式启动START TRANSACTION READ ONLY,也可以在特定条件下自动启动。有关详细信息,请参阅第 8.5.3 节,“优化 InnoDB 只读事务”

另请参见非锁定读取读取视图事务

记录锁

索引记录上的 锁例如,SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE;防止任何其他事务插入、更新或删除值为 10 的行 。与gap locknext-key lockt.c1对比 。

另见gap locklocknext-key lock

重做

DML语句对表进行更改 时 ,记录在 重做日志中的数据,以记录为单位。它在 崩溃恢复期间用于纠正由不完整 事务写入的数据。不断增加的LSN值表示通过重做日志的重做数据的累积量。 InnoDB

另请参见崩溃恢复DMLLSN重做日志事务

重做日志

崩溃恢复 期间使用的基于磁盘的数据结构 ,用于更正由不完整 事务写入的数据。在正常操作期间,它对更改 InnoDB表数据的请求进行编码,这些请求是由 SQL 语句或低级 API 调用产生的。 在意外关闭之前未完成更新数据文件的修改将 自动重放。

重做日志在磁盘上物理表示为一组重做日志文件。重做日志数据根据受影响的记录进行编码;这些数据统称为 重做。通过重做日志的数据通道由不断增加的 LSN值表示。

有关详细信息,请参阅第 14.6.6 节,“重做日志”

另请参见崩溃恢复数据文件ib_logfile日志缓冲区LSN重做关闭事务

重做日志归档

启用后,按顺序将重做日志记录写入存档文件的InnoDB功能,以避免在备份操作正在进行时备份实用程序无法跟上重做日志生成的步伐时可能发生的潜在数据丢失。有关详细信息,请参阅 重做日志归档

另见重做日志

冗余行格式

最旧的InnoDB 行格式。在 MySQL 5.0.3 之前,它是InnoDB. 从 MySQL 5.0.3 到 MySQL 5.7.8,默认的行格式是 COMPACT。从 MySQL 5.7.9 开始,默认行格式由 innodb_default_row_format 配置选项定义,默认设置为 DYNAMIC。您仍然可以指定REDUNDANT行格式以与旧InnoDB表兼容。

有关更多信息,请参阅第 14.11 节,“InnoDB 行格式”

另见紧凑行格式动态行格式行格式

参照完整性

始终以一致的格式维护数据的技术,是ACID哲学的一部分。特别是,不同表中的数据通过使用外键约束保持一致,这可以防止更改发生或自动将这些更改传播到所有相关表。相关机制包括防止错误插入重复值的唯一约束和防止错误插入空白值 的NOT NULL 约束。

另见ACIDFOREIGN KEY 约束NOT NULL 约束唯一约束

相关的

现代数据库系统的一个重要方面。数据库服务器对一对一、一对多、多对一和唯一性等关系进行编码和实施。例如,一个人在地址数据库中可能有零个、一个或多个电话号码;一个电话号码可能与多个家庭成员相关联。在财务数据库中,可能要求一个人只有一个纳税人 ID,而任何纳税人 ID 只能与一个人相关联。

数据库服务器可以使用这些关系来防止插入错误数据,并找到查找信息的有效方法。例如,如果一个值被声明为唯一的,服务器可以在找到第一个匹配项后立即停止搜索,并且可以拒绝插入相同值的第二个副本的尝试。

在数据库级别,这些关系通过 SQL 功能表示,例如表中的 、唯一性和NOT NULL 约束外键和不同类型的连接操作。复杂的关系通常涉及多个表之间的数据拆分。通常,数据是规范化的,因此一对多关系中的重复值只存储一次。

在数学环境中,数据库中的关系源自集合论。例如,子句的OR andAND运算符 WHERE表示并集和交集的概念。

另见ACID约束外键规范化

关联

全文搜索 功能中,一个数字表示搜索字符串与FULLTEXT 索引中的数据之间的相似性。例如,当您搜索单个词时,与只出现一次的行相比,该词与在文本中多次出现的行的相关性通常更高。

另见全文搜索,全文索引

可重复读

的 默认隔离级别InnoDB它可以防止查询的任何行被其他 事务更改,从而阻止 不可重复读取,但不会 阻止读。它使用适度严格的锁定 策略,以便事务中的所有查询都看到来自同一快照的数据,即事务开始时的数据。

当具有此隔离级别的事务执行 UPDATE ... WHEREDELETE ... WHERESELECT ... FOR UPDATELOCK IN SHARE MODE操作时,其他事务可能必须等待。

SELECT ... FOR SHARESELECT ... LOCK IN SHARE MODE在 MySQL 8.0.1 中 替换,但LOCK IN SHARE MODE仍然可用于向后兼容。

另请参阅ACID一致读取隔离级别锁定幻像事务

曲目

曲目是适用于字符集的术语。字符集曲目是集中字符的集合。请参阅 第 10.2.1 节,“字符集指令表”

复制品

复制拓扑中 的数据库服务器计算机, 它从另一台服务器( )接收更改并应用这些相同的更改。因此它保持与源相同的内容,尽管它可能有些落后。

在 MySQL 中,副本通常用于灾难恢复,以取代发生故障的源。它们还常用于测试软件升级和新设置,以确保数据库配置更改不会导致性能或可靠性问题。

副本通常具有高工作负载,因为它们处理从源中继的所有DML(写入)操作以及用户查询。为了确保副本能够足够快地应用来自源的更改,它们通常具有快速 I/O 设备以及足够的 CPU 和内存来在同一台服务器上运行多个数据库实例。例如,源可能使用硬盘驱动器存储,而副本使用SSD

另请参见DML复制服务器SSD

复制

将更改从 发送到一个或多个 副本的做法,以便所有数据库都具有相同的数据。该技术具有广泛的用途,例如用于更好的可伸缩性的负载平衡、灾难恢复以及测试软件升级和配置更改。可以通过称为row-based replicationstatement-based replication的方法在数据库之间发送更改。

另请参见副本基于行的复制基于语句的复制

恢复

MySQL Enterprise Backup产品中的一组备份文件放置到位以供 MySQL 使用的过程。可以执行此操作来修复损坏的数据库,返回到某个较早的时间点,或者(在复制 上下文中)设置新的 副本。在 MySQL Enterprise Backup 产品中,这个操作是通过命令的 copy-back选项来执行的 mysqlbackup

另请参阅热备份MySQL 企业备份mysqlbackup 命令准备好的备份副本复制

回滚

结束事务SQL语句 ,撤消事务所做的任何更改。它与 commit相反,它使事务中所做的任何更改永久化。

默认情况下,MySQL 使用 自动提交设置,它会在每个 SQL 语句之后自动发出提交。您必须先更改此设置,然后才能使用回滚技术。

另见ACID自动提交提交SQL事务

回滚段

包含撤消日志 的存储区。回滚段传统上驻留在系统表空间中。从 MySQL 5.6 开始,回滚段可以驻留在 撤消表空间中。从 MySQL 5.7 开始,回滚段也分配给 全局临时表空间

另见系统表空间撤消日志撤消表空间

由一组 定义的逻辑数据结构。一组行组成一个。在 InnoDB 数据文件中,每一可以包含一行或多行。

虽然InnoDB使用术语 行格式与 MySQL 语法保持一致,但行格式是每个表的属性,适用于该表中的所有行。

另见数据文件行格式表格

行格式

的 磁盘存储格式 。随着 获得 压缩等新功能,引入了新的行格式以支持由此产生的存储效率和性能改进。 InnoDB InnoDB

表的行格式InnoDBROW_FORMAT选项或 innodb_default_row_format 配置选项指定(在 MySQL 5.7.9 中引入)。行格式包括REDUNDANTCOMPACTCOMPRESSEDDYNAMICInnoDB要查看表 SHOW TABLE STATUS的行格式, 请InnoDBINFORMATION_SCHEMA.

另见压缩行格式压缩行格式压缩动态行格式冗余行格式

行锁

防止行被另一个 事务以不兼容的方式访问 的。同一个表中的其他行可以被其他事务自由写入。这是DML操作在 InnoDB表 上完成 的锁定类型。

与无法使用 联机 DDL完成的表的DDL操作 或在 表上使用的表锁进行 对比;这些锁会阻止对表的并发访问。 MyISAMInnoDB

另见DDLDMLInnoDB锁定在线 DDL表锁事务

基于行的复制

一种复制形式,其中从指定如何更改副本上的各个行的传播事件 。可以安全地用于 选项的所有设置。 innodb_autoinc_lock_mode

另请参见自动增量锁定innodb_autoinc_lock_modereplicareplicationsourcestatement-based replication

行级锁定

用于 InnoDB表 的锁定机制,依赖于 行锁而不是 表锁。多个 事务可以同时修改同一个表。只有当两个事务试图修改同一行时,一个事务才会等待另一个事务完成(并释放其行锁)。

另见InnoDB锁定行锁表锁事务

红宝石

一种强调动态类型和面向对象编程的编程语言。Perl开发人员熟悉一些语法 。

另请参阅APIPerlRuby API

红宝石API

mysql2,基于 libmysqlclient API 库,可供开发 MySQL 应用程序的 Ruby 程序员使用。有关详细信息,请参阅第 27.11 节,“MySQL Ruby API”

另请参见libmysqlRuby

读写锁

低级对象,InnoDB用于表示和执行 遵循特定规则的内部内存数据结构的共享访问锁。与mutexes对比 ,后者 InnoDB用于表示和强制执行对内部内存数据结构的独占访问。Mutexes 和 rw-locks 统称为 latches

rw-lock类型包括 s-locks(共享锁)、 x-locks(独占锁)和 sx-locks(共享-独占锁)。

  • Ans-lock提供对公共资源的读取访问权限。

  • Anx-lock提供对公共资源的写访问,同时不允许其他线程进行不一致的读取。

  • Ansx-lock提供对公共资源的写访问,同时允许其他线程进行不一致的读取。sx-locks在 MySQL 5.7 中引入,以优化并发性并提高读写工作负载的可扩展性。

以下矩阵总结了 rw-lock 类型兼容性。

S SX X
S 兼容的 兼容的 冲突
SX 兼容的 冲突 冲突
X 冲突 冲突 冲突

另见闩锁互斥锁性能模式

小号

保存点

保存点有助于实现嵌套 事务。它们可用于为作为较大事务一部分的表的操作提供范围。例如,在预订系统中安排一次旅行可能涉及预订多个不同的航班;如果所需航班不可用,您可以 回滚预订该航程所涉及的更改,而不回滚之前成功预订的航班。

另请参见回滚事务

可扩展性

能够向系统添加更多工作并同时发出更多请求,而不会因超出系统容量限制而导致性能突然下降。软件架构、硬件配置、应用程序编码和工作负载类型都对可扩展性有影响。当系统达到其最大容量时,增加可扩展性的流行技术是向上扩展 (增加现有硬件或软件的容量)和 向外扩展(添加新服务器和更多 MySQL 实例)。通常与可用性配对 作为大规模部署的关键方面。

另请参见可用性横向扩展纵向扩展

向外扩展

一种 通过添加新服务器和更多 MySQL 实例来提高可伸缩性的技术。例如,设置复制、NDB Cluster、连接池或跨一组服务器分散工作的其他功能。与放大对比 。

另请参见可扩展性扩大规模

放大

一种 通过增加现有硬件或软件的容量来提高可扩展性的技术。例如增加服务器内存,调整内存相关参数,如 innodb_buffer_pool_sizeinnodb_buffer_pool_instances. 与横向扩展对比。

另见可扩展性向外扩展。

图式

从概念上讲,模式是一组相互关联的数据库对象,例如表、表列、列的数据类型、索引、外键等。这些对象通过 SQL 语法连接起来,因为列组成表,外键引用表和列,等等。理想情况下,它们也逻辑连接,作为统一应用程序或灵活框架的一部分一起工作。例如,INFORMATION_SCHEMAperformance_schema 数据库在名称中使用schema来强调它们包含的表和列之间的密切关系。

在 MySQL 中,从物理上讲,模式数据库同义。您可以在 MySQL SQL 语法中替换关键字SCHEMAinstead of DATABASE,例如使用CREATE SCHEMAinstead of CREATE DATABASE

其他一些数据库产品也有所区别。例如,在 Oracle 数据库产品中, 模式仅表示数据库的一部分:表和其他对象由单个用户拥有。

另请参见数据库INFORMATION_SCHEMA性能模式

搜索索引

在 MySQL 中,全文搜索 查询使用一种特殊的索引,即 FULLTEXT 索引。在 MySQL 5.6.4 及以上版本中,InnoDBMyISAM 都支持FULLTEXT索引;以前,这些索引仅适用于 MyISAM表。

另见全文搜索,全文索引

二级索引

一种表示表列子集的InnoDB 索引。一个InnoDB表可以有零个、一个或多个二级索引。(对比 聚簇索引,它是每个InnoDB表都需要的,存储所有表列的数据。)

二级索引可用于满足仅需要索引列中的值的查询。对于更复杂的查询,它可用于识别表中的相关行,然后使用聚簇索引通过查找检索这些行。

创建和删除二级索引传统上涉及复制 InnoDB表中所有数据的大量开销。快速索引创建功能使二级索引 的CREATE INDEXandDROP INDEX语句更快。InnoDB

另请参见聚集索引快速创建索引、索引

部分

InnoDB 表空间 内的一个分区。如果表空间类似于目录,则段类似于该目录中的文件。一个段可以增长。可以创建新的段。

例如,在 file-per-table 表空间中,表数据在一个段中,每个关联的索引在其自己的段中。系统表空间包含许多不同的段,因为它可以容纳许多表及其关联的索引。在 MySQL 8.0 之前,系统表空间还包含一个或多个 用于 undo logs的回滚段

段随着数据的插入和删除而增长和收缩。当一个段需要更多空间时,它一次扩展一个 范围(1 兆字节)。类似地,当不再需要该范围内的所有数据时,段会释放该范围内的空间价值。

另见extentfile-per-tablerollback segmentsystem tablespacetablespaceundo log

选择性

数据分布的一个属性,列中不同值的数量(其基数)除以表中的记录数。高选择性意味着列值相对唯一,可以通过索引高效检索。如果您(或查询优化器)可以预测WHERE 子句中的测试仅匹配表中的少量(或部分)行,则如果它首先使用索引评估该测试 ,则整个查询往往是有效的。

另请参见基数查询

半一致读

一种用于UPDATE 语句的读取操作,它是READ COMMITTEDconsistent read的组合。当UPDATE语句检查已锁定的行时,InnoDB 将最新提交的版本返回给 MySQL,以便 MySQL 可以确定该行是否匹配WHERE . UPDATE如果行匹配(必须更新),MySQL 再次读取该行,这次 InnoDB要么锁定它,要么等待锁定它。只有当事务具有 READ COMMITTED隔离级别innodb_locks_unsafe_for_binlog 启用该选项 时,才会发生这种类型的读取操作 。innodb_locks_unsafe_for_binlog 在 MySQL 8.0 中被删除。

另请参阅一致读取隔离级别已提交读取

可序列化

使用最保守锁定策略的隔离级别,以防止任何其他 事务插入或更改此事务读取的数据,直到它完成。这样,同一个查询就可以在一个事务中反复运行,并且确保每次都能检索到相同的结果集。任何更改自当前事务开始以来由另一个事务提交的数据的尝试都会导致当前事务等待。

这是 SQL 标准指定的默认隔离级别。实际上,很少需要这种严格程度,因此默认的隔离级别 InnoDB是下一个最严格的 REPEATABLE READ

另请参见ACID一致读取隔离级别锁定可重复读取事务

服务器

一种连续运行的程序,等待接收来自另一个程序( 客户端)的请求并根据请求采取行动。因为通常整台计算机专用于运行一个或多个服务器程序(例如数据库服务器、Web 服务器、应用程序服务器或它们的某种组合),所以术语 服务器也可以指运行服务器软件的计算机.

另见客户端mysqld

服务器端准备好的语句

由 MySQL 服务器管理的 准备好的语句。从历史上看,服务器端准备语句的问题导致Connector/JConnector/PHP开发人员有时改用客户端准备语句。对于现代 MySQL 服务器版本,建议使用服务器端准备好的语句来提高性能、可伸缩性和内存效率。

另请参阅客户端准备好的语句连接器/J连接器/PHP准备好的语句

小服务程序

另见连接器/J

共享锁

一种,允许其他事务读取锁定的对象,也可以获取其他共享锁,但不能写入。排他锁的反义词 。

另见排它锁事务

共享表空间

另一种引用系统表空间通用表空间的方式。通用表空间是在 MySQL 5.7 中引入的。多个表可以驻留在一个共享表空间中。只有一个表可以驻留在 file-per-table 表空间中。

另见通用表空间系统表空间

尖锐的检查站

将其重做条目包含在 重做日志的特定部分中的所有脏缓冲池页面刷新到磁盘 的过程。在重用日志文件的一部分之前发生 ;日志文件以循环方式使用。通常发生在写入密集型工作负载中。 InnoDB

另见脏页刷新重做日志工作量

关闭

停止MySQL服务器的过程。默认情况下,此进程会清理 InnoDB表的操作,因此 关闭速度较慢,但​​稍后启动速度会InnoDB很快 如果跳过清理操作, 关机速度很快,但必须在下次重启时进行清理。

的关闭模式InnoDBinnodb_fast_shutdown 选项控制。

另见快速关机InnoDB慢速关机启动

奴隶

副本

慢查询日志

一种日志类型,用于对 MySQL 服务器处理的 SQL 语句进行性能调优。日志信息存储在一个文件中。您必须启用此功能才能使用它。您可以控制记录哪些类别的 慢速 SQL 语句。有关详细信息,请参阅第 5.4.5 节,“慢速查询日志”

See Also一般查询日志日志

慢关机

一种关闭类型,在完成之前执行额外的InnoDB刷新操作。也称为干净关机。由配置参数 innodb_fast_shutdown=0或命令指定SET GLOBAL innodb_fast_shutdown=0;。虽然关机本身可能需要更长的时间,但应该在随后的启动中节省该时间。

另请参见干净关机快速关机关机

快照

特定时间的数据表示,即使 其他 事务提交更改也保持不变。由某些 隔离级别使用以允许 一致的读取

另请参见提交一致读取隔离级别事务

排序缓冲区

在创建 InnoDB索引期间用于对数据进行排序的缓冲区。innodb_sort_buffer_size 使用配置选项 配置排序缓冲区大小 。

资源

复制方案中 的数据库服务器计算机, 用于处理初始插入、更新和删除数据请求。这些更改被传播到其他称为副本的服务器并在其上重复。

另见副本复制

空间编号

用于在 MySQL 实例 中唯一标识 InnoDB 表空间的标识符。系统表空间的空间 ID始终为零;这个相同的 ID 适用于系统表空间或通用表空间内的所有表。每个file-per-table 表 空间和通用表空间都有自己的空间 ID。

在 MySQL 5.6 之前,这个硬编码值InnoDB在 MySQL 实例之间移动表空间文件时存在困难。从 MySQL 5.6 开始,您可以使用 涉及语句、和的可传输表空间功能在实例之间复制表空间文件。调整空间 ID 所需的信息 包含在与表空间一起复制的.cfg 文件中。有关详细信息,请参阅 第 14.6.1.3 节,“导入 InnoDB 表”FLUSH TABLES ... FOR EXPORTALTER TABLE ... DISCARD TABLESPACEALTER TABLE ... IMPORT TABLESPACE

另见.cfg 文件每个表文件、通用表空间.ibd 文件系统表空间表空间、可传输表空间

稀疏文件

一种通过将表示空块的元数据写入磁盘而不是写入实际空白空间来更有效地使用文件系统空间的文件类型。InnoDB 透明页面压缩 功能依赖于稀疏文件支持。有关更多信息,请参阅 第 14.9.2 节,“InnoDB 页面压缩”

另请参见打孔透明页面压缩

旋转

一种持续测试资源是否可用的等待操作。这种技术用于通常只持有很短时间的资源,在这种情况下,在 忙循环中等待比让线程休眠并执行上下文切换更有效。如果资源在短时间内不可用,则自旋循环停止并使用另一种等待技术。

另见闩锁锁定互斥等待

春天

一个基于 Java 的应用程序框架,旨在通过提供一种配置组件的方法来协助应用程序设计。

另请参阅J2EE

数据库

执行数据库操作的标准结构化查询语言。通常分为 DDLDML查询类别。MySQL 包括一些额外的语句类别,例如 复制。请参阅 第 9 章,SQL 语法构建块的语言结构第 11 章,数据类型,了解用于 MySQL 表列的数据类型,第 13 章,SQL 语句 ,了解有关 SQL 语句及其相关类别的详细信息,以及第 12 章,函数和运营商用于在查询中使用的标准和 MySQL 特定函数。

另见DDLDML查询复制

SQL状态

JDBC标准 定义的错误代码 ,用于使用Connector/J的应用程序进行异常处理 。

另请参阅连接器/JJDBC

固态硬盘

固态硬盘的 缩写。一种具有不同于传统硬盘驱动器 ( HDD ) 性能特征的存储设备:存储容量更小、随机读取速度更快、没有移动部件,并且有许多影响写入性能的考虑因素。它的性能特征会影响 磁盘绑定工作负载的吞吐量。

另见磁盘绑定HDD

SSL

安全套接字层 的缩写。为应用程序和 MySQL 数据库服务器之间的网络通信提供加密层。

另见密钥库信任库。

启动

启动MySQL服务器的过程。通常由第 4.3 节“服务器和服务器启动程序”中列出的程序之一完成。与关机相反。

另见关机

语句拦截器

一种用于跟踪、调试或扩充数据库应用程序发出的 SQL 语句的拦截器。有时也称为 命令拦截器

在使用Connector/J的Java应用程序中 ,设置此类拦截器涉及实现 接口,以及向连接字符串添加 属性。 com.mysql.jdbc.StatementInterceptorV2statementInterceptors

在使用Connector/NET的Visual Studio应用程序中,设置此类拦截器涉及定义一个从该类继承的类并将该类名称指定为连接字符串的一部分。 BaseCommandInterceptor

另请参见命令拦截器连接字符串Connector/JConnector/NET拦截器JavaVisual Studio

基于语句的复制

一种复制形式,其中从发送 SQL 语句 并在副本上重播 。它需要注意 innodb_autoinc_lock_mode 选项的设置,以避免 自动增量锁定的潜在时间问题。

另请参见自动增量锁定innodb_autoinc_lock_mode副本复制基于行的复制

统计数据

InnoDB 与每个表索引 相关的估计值,用于构建高效的查询执行计划。主要值是 基数(不同值的数量)和表行或索引条目的总数。该表的统计信息表示其 主键索引中的数据。二级索引的统计信息表示该索引涵盖的行。

这些值是估计的,而不是精确计算的,因为在任何时候,不同的 事务都可以从同一个表中插入和删除行。为了防止值被频繁重新计算,您可以启用 持久统计,其中值存储在InnoDB系统表中,并且仅在您发出 ANALYZE TABLE语句时刷新。

您可以通过 配置选项 控制在计算统计信息时如何处理 NULL值。innodb_stats_method

通过INFORMATION_SCHEMAPERFORMANCE_SCHEMA表 ,其他类型的统计信息可用于数据库对象和数据库活动 。

另请参见基数索引INFORMATION_SCHEMANULL性能模式持久统计信息主键查询执行计划二级索引事务

词干

能够根据一个共同的词根搜索一个词的不同变体,例如单数和复数,或者过去、现在和将来的动词时态。此功能目前在MyISAM 全文搜索功能中受支持,但在表的FULLTEXT 索引中 不支持InnoDB

另见全文搜索,全文索引

停用词

FULLTEXT 索引中,一个被认为足够常见或琐碎的词,以至于它从搜索索引中省略并在搜索查询中被忽略。InnoDB不同的配置设置控制和 MyISAM表的停用词处理。有关详细信息,请参阅 第 12.10.4 节,“全文停用词”

另请参见全文索引搜索索引

存储引擎

MySQL 数据库的一个组件,执行存储、更新和查询数据的低级工作。在 MySQL 5.5 及更高版本中,InnoDB是新表的默认存储引擎,取代了 MyISAM. 不同的存储引擎在设计时会在内存使用与磁盘使用、读取速度与写入速度以及速度与稳健性等因素之间进行不同的权衡。每个存储引擎管理特定的表,所以我们引用InnoDB 表、MyISAM表等。

MySQL Enterprise Backup产品 针对 备份InnoDB 表进行了优化。它还可以备份由 MyISAM其他存储引擎处理的表。

另见InnoDBMySQL Enterprise Backup表类型

存储生成列

其值是根据列定义中包含的表达式计算的列。在插入或更新行时评估和存储列值。存储的生成列需要存储空间并且可以被索引。

与虚拟生成列 对比。

另见基列生成列虚拟生成列

存储对象

存储的程序或视图。

存储程序

存储例程(过程或函数)、触发器或事件调度程序事件。

存储例程

存储过程或函数。

严格模式

innodb_strict_mode选项控制的设置的通用名称。打开此设置会导致某些通常被视为警告的情况被视为错误。例如,某些与 文件格式行格式相关的无效选项组合,通常会产生警告并继续使用默认值,现在会导致CREATE TABLE操作失败。 innodb_strict_mode在 MySQL 5.7 中默认启用。

MySQL 也有严格模式。请参阅 第 5.1.10 节,“服务器 SQL 模式”

另见文件格式innodb_strict_mode行格式

子列表

在表示 缓冲池的列表结构中,相对较旧和相对较新的页面由列表的不同部分表示。一组参数控制这些部分的大小以及新旧页面之间的分界点。

另见缓冲池逐出列表LRU

最高记录

索引中的伪记录,代表该索引中最大值之上的差距。如果一个事务有一个语句,例如SELECT ... FROM ... WHERE col > 10 FOR UPDATE;,并且该列中的最大值是 20,它是对 supremum 记录的锁定,可以防止其他事务插入更大的值,例如 50、100 等等。

另见gapinfimum recordpseudo-record

代理键

合成密钥 的同义词名称。

另见合成密钥

合成密钥

索引列,通常是主键,其中的值是任意分配的。通常使用自动增量 列来完成。通过将值视为完全任意的,您可以避免过度限制的规则和错误的应用程序假设。例如,如果员工被批准雇用但从未真正加入,则代表员工编号的数字序列可能会有差距。或者 100 号员工的雇用日期可能比 500 号员工的雇用日期晚,前提是他们离开公司后又重新加入。数值也会产生可预测长度的较短值。例如,存储表示道路”的数字代码, Boulevard , Expressway等等比一遍又一遍地重复这些字符串更节省空间。

也称为代理键与自然键对比。

另见auto-increment , natural key , primary key , surrogate key

系统表空间

一个或多个数据文件(ibdata 文件)包含 InnoDB相关对象的元数据( InnoDB 数据字典),以及 更改缓冲区双写缓冲区和可能的撤消日志的存储区域。InnoDB 如果表是在系统表空间而不是file-per-tablegeneral tablespaces中创建的,它还可能包含表的表和索引数据。系统表空间中的数据和元数据适用 于 MySQL 实例中的所有数据库

在 MySQL 5.6.7 之前,默认将所有 InnoDB表和索引保留在系统表空间内,这通常会导致这个文件变得非常大。因为系统表空间永远不会收缩,所以如果加载并删除大量临时数据,可能会出现存储问题。在 MySQL 5.7 中,默认是 file-per-table模式,其中每个表及其关联的索引都存储在一个单独的 .ibd 文件中。InnoDB这个默认值使得依赖梭子鱼文件格式的特性更容易使用,例如表压缩离页列的高效存储, 和大索引键前缀 ( innodb_large_prefix)。

innodb_undo_tablespaces 选项定义撤消日志的撤消表空间数。

将所有表数据保存在系统表空间或单独的 .ibd文件中通常会对存储管理产生影响。MySQL Enterprise Backup产品可能会备份一小组大文件或许多较小的文件。在具有数千个表的系统上,处理数千个文件的文件系统操作 .ibd可能会导致瓶颈。

InnoDBMySQL 5.7.6 中引入了通用表空间,也用 .ibd文件来表示。通用表空间是使用CREATE TABLESPACE语法创建的共享表空间。它们可以在 MySQL 数据目录之外创建,能够容纳多个表,并支持所有行格式的表。

另请参见梭子鱼更改缓冲区压缩数据字典数据库双写缓冲区动态行格式file-per-table通用表空间.ibd 文件ibdata 文件innodb_file_per_table实例MySQL 企业备份页外列表空间撤消日志

.TRG文件

包含触发器参数的文件。具有此扩展名的文件始终包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

另请参阅MySQL 企业备份mysqlbackup 命令.TRN 文件

.TRN 文件

包含触发器命名空间信息的文件。具有此扩展名的文件始终包含在由 MySQL Enterprise Backup 产品 的mysqlbackup命令生成的 备份中。

另请参阅MySQL 企业备份mysqlbackup 命令.TRG 文件

桌子

每个 MySQL 表都与一个特定的 存储引擎相关联。 InnoDB表具有 影响性能、 可伸缩性备份、管理和应用程序开发 的特定物理逻辑特征。

在文件存储方面,InnoDB表属于以下表空间类型之一:

  • 共享InnoDB 系统表空间,由一个或多个ibdata 文件组成。

  • 每个表 的文件表 空间,由一个单独的 .ibd 文件组成。

  • 一个共享的通用表空间,由一个单独的 .ibd文件组成。MySQL 5.7.6 中引入了通用表空间。

.ibd数据文件包含表和 索引数据。

InnoDB在 file-per-table 表空间中创建的表可以使用 Barracuda文件格式,而 Barracuda 表可以使用 DYNAMICCOMPRESSED行格式。这些行格式支持InnoDB诸如 压缩、页外列的有效存储和大索引键前缀等功能(请参阅 参考资料 innodb_large_prefix)。无论 innodb_file_format设置如何,通用表空间都支持所有行格式。

直到 MySQL 5.7.5,InnoDB系统表空间内的表必须使用 Antelope文件格式才能向后兼容 MySQL 5.1 及更早版本。Antelope文件格式支持 COMPACTREDUNDANT行 格式。从 MySQL 5.7.6 开始,系统表空间支持使用 动态行格式的表。

表的被组织成 InnoDB称为聚集索引的索引结构,条目根据表的 主键列排序。数据访问针对在主键列上过滤和排序的查询进行了优化,并且每个索引都包含每个条目的关联主键列的副本。修改任何主键列的值都是一项昂贵的操作。因此,表设计的一个重要方面InnoDB 是选择一个主键,其中包含最重要查询中使用的列,并保持主键简短,值很少更改。

另请参见Antelope备份Barracuda聚集索引紧凑行格式压缩行格式压缩动态行格式快速索引创建file-per-table.ibd 文件索引页外列主键冗余行格式系统表空间表空间

表锁

防止任何其他 事务访问表的锁。InnoDB通过使用 在线 DDL行锁和 处理 DML语句和 查询的一致读取等技术,我们做出了相当大的努力来使此类锁变得不必要。 您可以使用以下语句通过 SQL 创建这样的锁;从其他数据库系统或 MySQL 存储引擎迁移的步骤之一是在可行的情况下删除此类语句。 LOCK TABLE

另请参见一致读取DML锁定在线 DDL查询行锁事务

表格扫描

请参阅全表扫描

表格统计

查看统计数据

表格类型

存储引擎 的过时同义词。我们指的是 InnoDB表格、 MyISAM表格等等。

另见InnoDB存储引擎

表空间

一个数据文件,可以保存一个或多个 InnoDB 和关联 索引的数据。

系统表空间包含InnoDB 数据字典,在 MySQL 5.6 之前 InnoDB默认包含所有其他表。

innodb_file_per_table 选项在 MySQL 5.6 及更高版本中默认启用,允许在自己的表空间中创建表。File-per-table 表空间支持诸如高效存储 页外列、表压缩和可传输表空间等功能。有关详细信息,请参阅 第 14.6.3.2 节,“File-Per-Table 表空间”

InnoDB在 MySQL 5.7.6 中引入了通用表空间。通用表空间是使用CREATE TABLESPACE语法创建的共享表空间。它们可以在 MySQL 数据目录之外创建,能够容纳多个表,并支持所有行格式的表。

MySQL NDB Cluster 还将其表分组到表空间中。有关详细信息,请参阅 第 21.6.11.1 节,“NDB Cluster 磁盘数据对象”

另见压缩行格式数据字典数据文件每表文件通用表空间索引innodb_file_per_table系统表空间

TCL

一种起源于 Unix 脚本世界的编程语言。有时通过用CC++Java编写的代码进行扩展 。对于 MySQL 的开源 Tcl API,请参阅 第 27.12 节,“MySQL Tcl API”

另见API

临时表

其数据不需要真正永久 的表。例如,临时表可能用作复杂计算或转换中中间结果的存储区域;崩溃后不需要恢复此中间数据​​。数据库产品可以采取各种捷径来提高对临时表的操作性能,方法是在将数据写入磁盘时不那么谨慎,并采取其他措施在重启时保护数据。

有时,数据本身会在设定的时间自动删除,例如交易结束或会话结束时。对于某些数据库产品,表本身也会自动删除。

见表

临时表空间

MySQL 5.7 中引入 的非压缩InnoDB 临时表和相关对象的表空间。配置文件选项定义临时表空间数据文件的 innodb_temp_data_file_path 相对路径、名称、大小和属性。如果 innodb_temp_data_file_path未指定,默认行为是ibtmp1 在数据目录中创建一个自动扩展的 12MB 数据文件。临时表空间在每次服务器启动时重新创建,并接收动态生成的空间 ID。临时表空间不能驻留在原始设备上。如果无法创建临时表空间,则拒绝启动。

临时表空间在正常关闭或中止初始化时被删除。发生崩溃时不会删除临时表空间。在这种情况下,数据库管理员可以手动删除临时表空间或使用相同的配置重新启动服务器,从而删除并重新创建临时表空间。

另见临时表

文字集

FULLTEXT 索引 中包含的列集。

另见全文索引

线

通常比 进程更轻量级的处理单元,允许更高的 并发性

另请参见并发主线程进程Pthreads

雄猫

一个开源的J2EE应用服务器,实现了 Java Servlet 和 JavaServer Pages 编程技术。由 Web 服务器和 Java servlet 容器组成。对于 MySQL,通常与Connector/J结合使用。

另请参阅J2EE

破页

由于 I/O 设备配置和硬件故障的组合而可能发生的错误情况。如果数据以小于InnoDB 页面大小(默认情况下为 16KB)的块写出,则写入时的硬件故障可能会导致仅部分页面存储到磁盘。双InnoDB 写缓冲区防止这种可能性。

另见双写缓冲区

生产总值

transactions per second的 首字母缩写词,有时在基准测试中使用的度量单位。它的值取决于特定基准测试所代表的 工作负载,以及您控制的因素,例如硬件容量和数据库配置。

另请参见交易工作量

交易

事务是可以 提交回滚的原子工作单元。当一个事务对数据库进行多次更改时,要么在事务提交时所有更改都成功,要么在事务回滚时所有更改都撤消。

由 实现的数据库事务 具有由首字母缩略词ACIDInnoDB统称为原子性、一致性、隔离性和持久性的属性。

另见ACID提交隔离级别锁定回滚

交易编号

与每一行 关联的内部字段 。该字段通过INSERTUPDATE、 和 DELETE操作进行物理更改,以记录哪个 事务锁定了该行。

另见隐式行锁事务

透明页面压缩

InnoDBMySQL 5.7.8 中添加的一项功能,允许对驻留在 file-per-table 表空间中的表 进行页级压缩。通过使用或 指定 COMPRESSION属性 启用页面压缩。有关更多信息,请参阅第 14.9.2 节,“InnoDB 页面压缩”CREATE TABLEALTER TABLE

另见file-per-tablehole punchingsparse file

可传输表空间

一种允许将 表空间从一个实例移动到另一个实例的功能。传统上,这对于表空间是不可能的,InnoDB因为所有表数据都是系统表空间的一部分。在 MySQL 5.6 及更高版本中, FLUSH TABLES ... FOR EXPORT语法 InnoDB为复制到另一台服务器准备一个表;运行ALTER TABLE ... DISCARD TABLESPACEALTER TABLE ... IMPORT TABLESPACE在另一台服务器上将复制的数据文件带入另一台实例。与.ibd 文件一起复制的单独的 .cfg 文件用于在导入表空间时更新表元数据(例如 空间 ID )。第 14.6.1.3 节,“导入 InnoDB 表”获取使用信息。

另见.cfg 文件.ibd 文件空间 ID系统表空间表空间

故障排除

确定问题根源的过程。用于解决 MySQL 问题的一些资源包括:

截短

一种DDL操作,它删除表的全部内容,同时保持表和相关索引不变。与drop对比 。DELETE尽管从概念上讲它与没有子句的语句具有相同的结果WHERE,但它在幕后的操作却不同:InnoDB创建一个新的空表,删除旧表,然后重命名新表以取代旧表。因为这是 DDL 操作,所以无法回滚

如果被截断的表包含 引用另一个表的外键,则截断操作使用较慢的操作方法,一次删除一行,以便任何 ON DELETE CASCADE子句都可以根据需要删除引用表中的相应行。(MySQL 5.5 及更高版本不允许这种较慢的截断形式,如果涉及外键则返回错误。在这种情况下,请改用 DELETE语句。

另见DDL删除外键回滚

信任库

另请参阅SSL

元组

指定一组有序元素的技术术语。它是一个抽象概念,用于数据库理论的正式讨论。在数据库领域,元组通常由表行的列来表示。它们也可以由查询的结果集表示,例如,仅检索表的某些列或连接表中的列的查询。

另见游标

两阶段提交

根据 XA规范, 属于分布式 事务一部分的操作。(有时缩写为 2PC。)当多个数据库参与事务时,要么所有数据库都 提交更改,要么所有数据库回滚更改。

另请参见提交回滚事务XA

ü

撤消

在事务 的整个生命周期中维护的数据 ,记录所有更改,以便在回滚操作的情况下可以撤消这些更改 。它存储在系统表空间 (在 MySQL 5.7 或更早版本中)或单独的 撤消表空间中的撤消日志中。从 MySQL 8.0 开始,撤消日志默认驻留在撤消表空间中。

另请参见回滚回滚段系统表空间事务撤消日志撤消表空间

撤消缓冲区

请参阅撤消日志

撤消日志

保存活动事务 修改的数据副本的存储区域 。如果另一个事务需要查看原始数据(作为 一致读取操作的一部分),将从该存储区域中检索未修改的数据。

在 MySQL 5.6 和 MySQL 5.7 中,可以使用 innodb_undo_tablespaces 变量 have undo logs reside in undo tablespaces,它可以放在另一个存储设备上,比如SSD。在 MySQL 8.0 中,undo 日志驻留在 MySQL 初始化时创建的两个默认的 undo 表空间中,可以使用 CREATE UNDO TABLESPACE语法创建额外的 undo 表空间。

撤消日志被分成不同的部分, 插入撤消缓冲区更新撤消缓冲区

另请参见一致读取回滚段SSD系统表空间事务撤消表空间

撤消日志段

撤消日志 的集合。撤消日志段存在于回滚段中。撤消日志段可能包含来自多个事务的撤消日志。undo log 段一次只能被一个事务使用,但在事务提交回滚时释放后可以重复使用。也可以称为撤消段

另见提交回滚回滚段撤消日志

撤消表空间

撤消表空间包含撤消日志。撤消日志存在于 撤消日志段中,而撤消日志段包含在回滚段中。回滚段传统上驻留在系统表空间中。从 MySQL 5.6 开始,回滚段可以驻留在撤消表空间中。在 MySQL 5.6 和 MySQL 5.7 中,undo 表空间的数量由 innodb_undo_tablespaces 配置选项控制。在 MySQL 8.0 中,在 MySQL 实例初始化时会创建两个默认的 undo 表空间,并且可以使用 CREATE UNDO TABLESPACE语法创建额外的 undo 表空间。

有关详细信息,请参阅 第 14.6.3.4 节,“撤消表空间”

另请参见回滚段系统表空间撤消日志撤消日志段

统一码

以灵活和标准化的方式支持国家字符、字符集、代码页和其他国际化方面的系统。

Unicode 支持是 ODBC标准的一个重要方面。 Connector/ODBC 5.1 是一个 Unicode 驱动程序,而 Connector/ODBC 3.51 是一个 ANSI驱动程序。

另请参阅ANSI连接器/ODBCODBC

唯一约束

一种断言列不能包含任何重复值的约束。关系代数方面,它用于指定一对一关系。为了有效地检查是否可以插入一个值(即该值不存在于列中),底层唯一索引支持唯一约束。

另见约束关系唯一索引

唯一索引

具有 唯一约束的一列或一组列的索引。因为已知索引不包含任何重复值,所以某些类型的查找和计数操作比普通类型的索引更有效。大多数针对此类索引的查找只是为了确定某个值是否存在。索引中值的数量与表中的行数相同,或者至少与关联列具有非空值的行数相同。

更改缓冲优化不适用于唯一索引。作为解决方法,您可以unique_checks=0在将批量数据加载到InnoDB表中时临时设置。

另请参阅基数更改缓冲唯一约束唯一键

唯一键

包含 唯一索引的一组列(一个或多个) 。当您可以定义WHERE与一行完全匹配的条件,并且查询可以使用关联的唯一索引时,可以非常有效地执行查找和错误处理。

另见基数唯一约束唯一索引

V

可变长度类型

一种可变长度的数据类型。 VARCHARVARBINARY和 类型是变长类型 BLOBTEXT

InnoDB将长度大于或等于 768 字节的固定长度字段视为可变长度字段,可以将其存储在页外。例如,CHAR(255)如果字符集的最大字节长度大于 3,则列可以超过 768 个字节,就像utf8mb4.

另见页外栏溢出页

受害者

检测到死锁时自动选择回滚事务 。回滚更新最少行的事务。 InnoDB

可以使用 innodb_deadlock_detect 配置选项 禁用死锁检测。

另见死锁死锁检测innodb_lock_wait_timeout事务

看法

调用时生成结果集的存储查询。视图充当虚拟表。

虚拟专栏

请参阅虚拟生成列

虚拟生成列

其值是根据列定义中包含的表达式计算的列。BEFORE不存储列值,但在任何触发器之后立即读取行时对其进行评估 。虚拟生成的列不占用存储空间。InnoDB支持虚拟生成列的二级索引。

与存储的生成列 对比。

另见基列生成列存储生成列

虚拟索引

虚拟索引是一个或多个虚拟生成列或虚拟生成列与常规列或存储生成列的组合的二级索引。有关详细信息,请参阅 第 13.1.18.8 节,“二级索引和生成的列”

另见二级索引存储生成的列虚拟生成的列

视觉工作室

有关受支持的 Visual Studio 版本,请参阅以下参考资料:

另请参阅连接器/C++连接器/NET

W

等待

当无法立即完成 诸如获取 互斥锁锁存器InnoDB等操作时,暂停并重试。暂停机制非常详尽,以至于该操作有自己的名称 waitInnoDB 使用内部调度、操作系统wait()调用和短期自旋循环 的组合暂停单个线程。

在具有重负载和许多事务的系统上,您可以使用SHOW INNODB STATUS 命令或性能模式的输出 来确定线程是否花费了太多时间等待,如果是,如何提高 并发性

另见并发闩锁互斥性能模式自旋

热备份

在数据库运行时进行的备份,但在备份过程中限制了某些数据库操作。例如,表可能变为只读。对于繁忙的应用程序和网站,您可能更喜欢热备份

另见备份冷备份热备份

暖身

启动后在典型 工作负载下运行系统一段时间,以便缓冲池和其他内存区域像在正常情况下一样被填充。当 MySQL 服务器重新启动或承受新的工作负载时,此过程会随着时间的推移自然发生。

通常,您在运行性能测试之前运行工作负载一段时间以预热缓冲池,以确保多次运行的结果一致;否则,第一次运行时性能可能会人为降低。

innodb_buffer_pool_dump_at_shutdown 在 MySQL 5.6 中,您可以通过启用和 配置选项 来加速预热过程,以便在 innodb_buffer_pool_load_at_startup 重启后将缓冲池的内容带回内存。这些选项在 MySQL 5.7 中默认启用。请参阅 第 14.8.3.6 节,“保存和恢复缓冲池状态”

另请参见缓冲池工作负载

工作量

SQL和其他数据库操作 的组合和数量 ,由数据库应用程序在典型或高峰使用期间执行。您可以在性能测试期间或在容量规划 期间使数据库承受特定工作负载以识别 瓶颈。

另见bottleneckCPU-bounddisk-boundSQL

写入组合

一种优化技术,可在脏页缓冲池中刷新时 减少写操作 。如果一页中的一行被更新多次,或者同一页上的多行被更新,则所有这些更改都将通过一次写入操作存储到数据文件中,而不是每次更改都写入一次。 InnoDB

另见缓冲池脏页刷新

X

XA

用于协调分布式 事务的标准接口,允许多个数据库参与事务,同时保持 ACID合规性。有关完整详细信息,请参阅第 13.3.7 节,“XA 事务”

XA 分布式事务支持默认启用。如果您不使用此功能,则可以禁用该 innodb_support_xa配置选项,避免每个事务的额外 fsync 的性能开销。

从 MySQL 5.7.10 开始, innodb_support_xa不允许禁用,因为它会使复制不安全并阻止与二进制日志组提交相关的性能提升。MySQL 8.0 中删除了 innodb_support_xa配置选项。

另见ACID二进制日志提交事务两阶段提交

年轻的

缓冲池中页面的 一个特性意味着它最近被访问过,因此在缓冲池数据结构中移动,这样它就不会被LRU算法过早地 刷新。该术语用于与缓冲池相关的表的某些INFORMATION_SCHEMA 列名中。 InnoDB

另见缓冲池刷新INFORMATION_SCHEMALRU页面