MySQL 8.0参考手册/ MySQL术语表

MySQL术语表

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

一个

. arm文件

元数据存档表。与.ARZ文件.控件生成的备份中始终包含具有此扩展名的文件mysqlbackup命令的MySQL企业备份产品。

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

.ARZ文件

ARCHIVE表的数据。与. arm文件.控件生成的备份中始终包含具有此扩展名的文件mysqlbackup命令的MySQL企业备份产品。

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

原子性、一致性、隔离性和持久性的缩写。这些属性在数据库系统中都是理想的,并且都与类的概念密切相关事务.的事务特性InnoDB坚持ACID的原则。

事务是原子可以是功的单位承诺回滚.当一个事务对数据库进行多个更改时,要么在事务提交时所有更改都成功,要么在事务回滚时所有更改都取消。

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

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

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

另请参阅原子提交并发性doublewrite缓冲隔离级别锁定回滚事务

自适应冲洗

一个算法InnoDB表,消除了I/O开销检查点.而不是冲洗所有的修改页面缓冲池数据文件MySQL会定期刷新一小组修改过的页面。自适应刷新算法根据刷新速率和刷新速度估计执行这些周期性刷新的最佳速率,从而扩展了该过程重做生成的信息。

另请参阅缓冲池检查点数据文件冲洗InnoDB页面重做日志

自适应哈希索引

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

哈希索引总是基于现有的b -树在桌子上的索引。MySQL可以在为b树定义的键的任意长度的前缀上构建散列索引,这取决于对索引的搜索模式。哈希索引可以是局部的;整个b树索引不需要缓存到缓冲池中。

在MySQL 5.6及更高版本中,利用快速单值查找的另一种方法InnoDB表是要用的InnoDBmemcached插件。看到b -树缓冲池散列索引memcached页面二级索引

ADO。网

一个对象关系映射(ORM)框架,用于使用。net技术构建的应用程序,例如ASP。网.这样的应用程序可以通过连接器/净组件。

另请参阅netASP.net连接器/净莫诺Visual Studio

AIO

缩写异步I / O.你可能会在InnoDB消息或关键词。

另请参阅异步I / O

ANSI

ODBC,一种支持字符集和其他国际化方面的替代方法。与Unicode连接器/ ODBC3.51是ANSI驱动程序,而Connector/ODBC 5.1是Unicode驱动程序。

另请参阅连接器/ ODBCODBCUnicode

API

api提供对MySQL协议和MySQL资源的低级访问客户端项目。与类提供的更高级别访问相比连接器

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

应用程序编程接口

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

应用

生成的备份时MySQL企业备份产品不包括在进行备份时发生的最新更改,更新备份文件以包括这些更改的过程称为应用的一步。的值指定运用原木选择的mysqlbackup命令。

在应用更改之前,我们将这些文件称为原始备份.在应用更改之后,我们将这些文件称为准备备份.更改记录在ibbackup_logfile文件;一旦apply步骤完成,这个文件就不再需要了。

另请参阅热备份ibbackup_logfileMySQL企业备份准备备份原始备份

ASP.net

用于开发基于web的应用程序的框架net技术和语言。这样的应用程序可以通过连接器/净组件。

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

另请参阅netADO。网连接器/净莫诺PHPVisual Studio

组装

的编译代码库net系统,通过连接器/净.存储在广汽允许没有命名冲突的版本控制。

另请参阅net广汽

异步I / O

一种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上下文中,交易工作单元是否完全成功(何时成功承诺)或者完全没有效果(当回滚).事务的不可分割(“原子”)属性是一个的缩写

另请参阅提交回滚事务

原子DDL

一个原子DDL语句是一个组合了数据字典更新,存储引擎操作和二进制日志将与DDL操作相关的写入到单个原子事务中。事务要么完全提交,要么回滚,即使服务器在操作期间停止。在MySQL 8.0中添加了原子DDL支持。有关更多信息,请参见二进制日志数据字典DDL存储引擎

原子指令

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

自动递增

类指定的表列的属性AUTO_INCREMENT关键字),它自动在列中添加一个递增的值序列。

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

在基于语句的复制中,自动递增列可能会产生问题,因为由于时间问题,在副本上重放语句可能不会产生与源上相同的列值集。当您有一个自动递增的主键时,您只能对该设置使用基于语句的复制innodb_autoinc_lock_mode = 1.如果你有innodb_autoinc_lock_mode = 2,它为插入操作提供了更高的并发性基于行的复制而不是statement-based复制.设置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主键基于行的复制statement-based复制

自动递增锁定

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

另请参阅自动递增并发性innodb_autoinc_lock_mode

自动提交

导致提交操作后SQL声明。不建议使用此模式InnoDB表与交易它跨越了几个语句。它可以帮助表现只读事务InnoDB表,最小化开销锁定和代撤销特别是MySQL 5.6.4及以上版本。它也适合用于工作MyISAM表,其中事务不适用。

另请参阅提交锁定只读事务SQL事务撤销

可用性

处理主机上的故障(包括MySQL、操作系统或可能导致停机的硬件和维护活动的故障)并在必要时进行恢复的能力。通常搭配可伸缩性作为大规模部署的关键方面。

另请参阅可伸缩性

B

b -树

在数据库索引中常用的树形数据结构。该结构始终保持排序,支持对精确匹配(等于运算符)和范围(例如大于、小于和)的快速查找之间的运营商)。这种类型的索引可用于大多数存储引擎,例如InnoDB而且MyISAM

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

散列索引,该软件只在内存存储引擎。的内存存储引擎也可以使用b -树索引,您应该选择b -树索引内存表,如果某些查询使用范围操作符。

使用术语b -树是为了参考索引设计的一般类别。MySQL存储引擎使用的b -树结构可能被视为一种变体,因为它具有经典b -树设计中不存在的复杂性。相关信息请参见InnoDB页面结构费尔头部分的MySQL内部手册

另请参阅散列索引

引号的

MySQL SQL语句中的标识符必须使用反勾字符(),如果它们包含特殊字符或保留字。例如,要引用一个名为FOO #酒吧或者一个名为选择,您可以将标识符指定为“FOO # BAR”而且“选择”.由于反勾提供了额外的安全级别,它们在程序生成的SQL语句中被广泛使用,在这些语句中标识符名称可能事先不知道。

许多其他数据库系统使用双引号()围绕这些特殊的名字。对于可移植性,您可以启用ANSI_QUOTES模式,并使用双引号而不是反引号限定标识符名称。

另请参阅SQL

备份

为了安全起见,从MySQL实例中复制部分或所有表数据和元数据的过程。也可指复制的文件集。这对dba来说是一项至关重要的任务。与此过程相反的是恢复操作。

MySQL,物理备份是由MySQL企业备份产品,逻辑备份是由, mysqldump命令。这些技术在备份数据的大小和表示以及速度(特别是恢复操作的速度)方面具有不同的特征。

备份被进一步分类为温暖的,或这取决于它们对正常数据库操作的干扰程度。(热备份的干扰最小,冷备份的干扰最大。)

另请参阅冷备份热备份逻辑备份MySQL企业备份, mysqldump物理备份热备份

基列

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

另请参阅生成的列存储生成的列虚拟生成列

β

软件产品生命周期的早期阶段,该阶段仅用于评估,通常没有明确的发布号或小于1的数字。InnoDB不使用beta名称,更喜欢an早期采用者可以扩展到多个点发布的阶段,导致一个遗传算法释放。

另请参阅早期采用者遗传算法

二进制日志

包含试图更改表数据的所有语句或行更改记录的文件。二进制日志的内容可以重播,以使副本处于最新状态复制场景,或者在从备份恢复表数据后使数据库更新。二进制日志记录特性可以打开或关闭,但Oracle建议如果使用复制或执行备份,则始终启用它。

方法可以检查二进制日志的内容,或在复制或恢复期间重播它mysqlbinlog命令。有关二进制日志的完整信息,请参见MySQL企业备份Product、二进制日志的文件名和文件中的当前位置都是重要的详细信息。要在复制上下文中进行备份时为源记录此信息,可以指定——slave-info选择。

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

另请参阅binlogMySQL企业备份复制

binlog

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

另请参阅二进制日志

盲目的查询扩展

一种特殊的全文搜索启用的与查询扩展条款。它执行两次搜索,其中第二次搜索的搜索短语是原始搜索短语,与第一次搜索中几个相关度最高的文档相连接。该技术主要适用于较短的搜索短语,可能只有一个单词。它可以发现文档中没有出现精确搜索词的相关匹配项。

另请参阅全文搜索

SQL数据类型(TINYBLOBMEDIUMBLOB,LONGBLOB)用于包含任意大小的任何类型的二进制数据的对象。用于存储文档、图像、声音文件和其他类型的信息,这些信息不容易在MySQL表中分解为行和列。在MySQL应用程序中处理blob的技术各不相同连接器而且API.MySQL连接器/ ODBC定义了值作为LONGVARBINARY.对于大型、自由形式的字符数据集合,行业术语是CLOB,用MySQL表示文本数据类型。

另请参阅APICLOB连接器连接器/ ODBC

瓶颈

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

另请参阅缓冲池并发性

反弹

一个关闭操作后立即重新启动。理想情况下,头发要比较短热身以便性能和吞吐量迅速恢复到高水平。

另请参阅关闭

巴迪分配器

用于管理不同大小的机制页面InnoDB的缓冲池

另请参阅缓冲池页面页面大小

缓冲

临时存储器用于临时存储的存储器或磁盘区域数据被缓冲在内存中,因此可以有效地将其写入磁盘,只需少量的大型I/O操作而不是大量的小型I/O操作。为了提高可靠性,数据被缓冲在磁盘上,因此即使出现故障,数据也可以恢复崩溃或者在最糟糕的时间发生其他故障。InnoDB使用的缓冲区的主要类型是缓冲池,doublewrite缓冲,改变缓冲

另请参阅缓冲池改变缓冲崩溃doublewrite缓冲

缓冲池

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

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

缓冲池实例

任意一个区域,其中包含缓冲池可分、可控innodb_buffer_pool_instances配置选项。指定的总内存大小通过innodb_buffer_pool_size在所有缓冲池实例之间分配。通常,拥有多个缓冲池实例对于分配多个gb给InnoDB缓冲池,每个实例都是1g或更大的。当系统从多个并发会话在缓冲池中加载或查找大量数据时,使用多个缓冲池实例可以减少对管理缓冲池的数据结构的独占访问的争用。

另请参阅缓冲池

内置的

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

这种区别在MySQL 5.1中非常重要,因为一个特性或bug修复可能适用于InnoDB Plugin,但不适用于内置InnoDB,反之亦然。

另请参阅InnoDB

业务规则

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

例如,一名员工离开公司可能会引发人力资源部门的一系列行动。人力资源数据库可能还需要灵活性来表示一个已被雇用但尚未开始工作的人的数据。关闭在线服务帐户可能导致数据从数据库中删除,或者数据可能被移动或标记,以便在重新打开帐户时可以恢复。公司可能会制定关于工资的最高、最低和调整的政策,除了基本的健康检查,比如工资不是负数。零售数据库可能不允许多次返回具有相同序列号的购买,或者可能不允许超过某个值的信用卡购买,而用于检测欺诈的数据库可能允许这类事情。

另请参阅关系

C

. cfg文件

类使用的元数据文件InnoDB移动式表空间特性。它由命令产生刷新表……用于出口,将一个或多个表置于可以复制到另一个服务器的一致状态。的. cfg文件与相应的.ibd文件,用于调整内部的值.ibd文件,例如空间ID期间,ALTER TABLE……导入表空间的一步。

另请参阅.ibd文件空间ID移动式表空间

C

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

另请参阅C APIc++c#Java

C API

CAPI代码与MySQL一起分发。它包含在libmysqlclient图书馆和使C访问数据库的程序。

另请参阅APIClibmysqlclient

c#

一种结合了强类型和面向对象特性的程序设计语言,在Microsoft中运行net框架或其开源对应版本莫诺.类创建应用程序时经常使用ASP.net框架。它的语法很熟悉Cc++而且Java开发人员。

另请参阅netASP.netC连接器/净c++Java莫诺

c++

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

另请参阅C连接器/ c++

缓存

为频繁或高速检索而存储数据副本的任何内存区域的总称。在InnoDB,最主要的缓存结构是缓冲池

另请参阅缓冲缓冲池

基数

表中不同值的数量.当查询引用具有关联的指数,每列的基数影响哪种访问方法最有效。例如,对于具有唯一约束,不同值的数量等于表中的行数。如果一个表有一百万行,但是一个特定列只有10个不同的值,那么每个值(平均)出现100,000次。查询如下SELECT c1 FROM t1 WHERE c1 = 50的基数,数据库服务器可能以不同的方式处理查询c1

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

基数也可以应用于多个列中不同值的数量,如综合指数

另请参阅综合指数指数索引提示持续的统计数据随机的潜水选择性唯一约束

改变缓冲

一种特殊的数据结构,记录对页面二级索引.这些值可能来自SQL插入更新,或删除语句(DML).涉及变更缓冲区的特性集统称为改变缓冲组成的插入缓冲删除缓冲,清除缓存

索引中的相关页不在时,更改才记录在更改缓冲区中缓冲池.当相关的索引页被带入缓冲池,而相关的更改仍在更改缓冲区中时,针对该页的更改将应用于缓冲池(合并后的)使用来自更改缓冲区的数据。定期,清洗在系统基本空闲或缓慢关闭期间运行的操作,它将新的索引页写入磁盘。与立即将每个值写入磁盘相比,清除操作可以更有效地为一系列索引值写入磁盘块。

从物理上讲,更改缓冲区是系统表空间,以便索引更改在数据库重新启动时保持缓冲。更改仅应用于(合并后的)当页由于其他读操作而被带入缓冲池时。

控件控制更改缓冲区中存储的数据的种类和数量innodb_change_buffering而且innodb_change_buffer_max_size配置选项。要查看关于更改缓冲区中当前数据的信息,请发出显示引擎innodb状态命令。

以前称为插入缓冲

另请参阅缓冲池改变缓冲删除缓冲DML插入缓冲插入缓冲合并页面清洗清除缓存二级索引系统表空间

改变缓冲

涉及的特征的总称改变缓冲组成的插入缓冲删除缓冲,清除缓存.由SQL语句导致的索引更改(通常可能涉及随机I/O操作)会被保留,并由后台定期执行线程.这一系列操作可以比立即将每个值写入磁盘更有效地为一系列索引值写入磁盘块。控制的innodb_change_buffering而且innodb_change_buffer_max_size配置选项。

另请参阅改变缓冲删除缓冲插入缓冲清除缓存

检查点

对象中缓存的数据页的更改缓冲池,这些更改被写入数据文件过了一段时间,这个过程被称为冲洗.检查点是最新更改的记录(用LSN值),这些值已成功写入数据文件。

另请参阅缓冲池数据文件冲洗模糊检查点LSN

校验和

InnoDB时检测损坏的验证机制页面在一个表空间从磁盘读入InnoDB缓冲池.控件控制该特性innodb_checksumsMySQL 5.5中的configuration选项。innodb_checksums在MySQL 5.6.3中已弃用,取而代之的是innodb_checksum_algorithm

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

MySQL还使用校验和进行复制。具体请参见配置选项binlog_checksummaster_verify_checksum,slave_sql_verify_checksum

另请参阅缓冲池页面表空间

子表

在一个外键关系中,子表的行指向(或指向)另一个表中具有相同特定列值的行。该表包含外键…参考文献条款和可选在更新而且在删除条款。中的相应行父表必须存在,才能在子表中创建行。子表中的值可以阻止父表上的删除或更新操作,也可以导致子表中的自动删除或更新在级联创建外键时使用的选项。

另请参阅外键父表

干净的页面

一个页面InnoDB缓冲池在内存中所做的所有更改也被写入(刷新)脏页

另请参阅缓冲池数据文件脏页冲洗页面

干净的关闭

一个关闭完成,没有错误,并将所有更改应用于InnoDB表前整理,与之相反崩溃或者一个快速关闭.的同义词缓慢关闭

另请参阅崩溃快速关闭关闭缓慢关闭

客户端

运行在数据库服务器外部的程序,通过接口发送请求与数据库通信连接器,或者一个API通过客户端库.它可以运行在与数据库服务器相同的物理机器上,也可以运行在通过网络连接的远程机器上。它可以是一个特殊用途的数据库应用程序,也可以是像mysql命令行处理器。

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

客户端库

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

另请参阅客户端libmysqlclient

客户端预置语句

一个类型的事先准备好的声明中本地管理缓存和重用,模拟的功能服务器端准备好的语句.历史上,被一些人使用连接器/ J连接器/ ODBC,连接器/ PHP开发人员解决服务器端存储过程的问题。在现代MySQL服务器版本中,为了性能、可伸缩性和内存效率,建议使用服务器端准备语句。

另请参阅连接器/ J连接器/ ODBC连接器/ PHP事先准备好的声明中

CLOB

SQL数据类型(非常小的文本串文本简单,或量变)用于包含任意大小的任何类型的字符数据的对象。用于存储基于文本的文档,具有相关的字符集和排序顺序。在MySQL应用程序中处理clob的技术各不相同连接器而且API.MySQL连接器/ ODBC定义文本值作为用LONGVARCHAR.对于存储二进制数据,等效的是类型。

另请参阅API连接器连接器/ ODBC

聚集索引

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

在Oracle数据库产品中,这种类型的表称为index-organized表

另请参阅指数主键二级索引

冷备份

一个备份在数据库关闭时获取。对于繁忙的应用程序和网站,这可能不实用,您可能更喜欢使用热备份或者一个热备份

另请参阅备份热备份热备份

对象中的数据项,其存储和语义由数据类型定义。每一个表格而且指数在很大程度上是由它所包含的列集定义的。

每一列都有基数价值。列可以是主键为其表,或主键的一部分。一个列可以受制于唯一约束,一个非空约束,或两者兼而有之。不同列中的值,甚至跨不同表的值,都可以通过外键的关系。

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

另请参阅基数外键指数非空约束主键表格唯一约束

列索引

一个指数在单列上。

另请参阅综合指数指数

列前缀

当一个指数使用长度规范创建,例如CREATE INDEX idx ON t1 (c1(N)),索引中只存储列值的前N个字符。保持索引前缀小可以使索引更紧凑,节省的内存和磁盘I/O有助于提高性能。(尽管将索引前缀设置得太小可能会妨碍查询优化,因为这会使具有不同值的行在查询优化器看来是重复的。)

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

另请参阅指数

命令拦截器

的同义词声明拦截器.其中一个方面拦截器可用于两者的设计模式连接器/净而且连接器/ J.Connector/NET称为命令的东西,Connector/J称为语句。与异常拦截器

另请参阅连接器/ J连接器/净异常拦截器拦截器声明拦截器

提交

一个SQL语句结束事务,使事务所做的任何更改永久化。它的反面是回滚,它将撤消事务中所做的任何更改。

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

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

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

紧凑行格式

一个行格式为InnoDB表。这是从MySQL 5.0.3到MySQL 5.7.8的默认行格式。在MySQL 8.0中,默认的行格式由innodb_default_row_format配置选项,该选项的默认设置为动态.的紧凑的行格式为空值和变长列提供了比冗余行格式。

有关有关InnoDB紧凑的行格式,请参阅动态行格式文件格式冗余行格式行格式

综合指数

一个指数这包括多列。

另请参阅指数

压缩备份

的压缩特性MySQL企业备份Product生成每个表空间的压缩副本,将扩展名更改为.ibd.ibz.压缩备份数据允许您保留更多的备份,并减少将备份传输到另一个服务器的时间。在恢复操作期间,数据将被解压。当压缩备份操作处理已经压缩过的表时,它会跳过该表的压缩步骤,因为再次压缩只会节省很少或根本不会节省空间。

生成的一组文件MySQL企业备份产品,每个表空间被压缩。压缩文件被重命名为.ibz文件扩展名。

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

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

压缩行格式

一个行格式它支持数据和索引压缩InnoDB表。大字段的存储远离保存其余行数据的页,如动态行格式.索引页和大字段都经过压缩,从而节省了内存和磁盘。根据数据的结构,内存和磁盘使用量的减少可能超过或不超过在使用数据时解压缩数据的性能开销。看到InnoDB压缩行格式,请参阅压缩动态行格式行格式

压缩表

数据以压缩形式存储的表。为InnoDB,它是用创建的表ROW_FORMAT =压缩.看到压缩行格式压缩

压缩

使用更少的磁盘空间、执行更少的I/O和使用更少的内存进行缓存的特性带来了广泛的好处。

InnoDB支持表级和页级压缩。InnoDB页面压缩也称为透明页面压缩.有关InnoDB压缩,看到压缩备份的特征MySQL企业备份产品。

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

压缩失败

实际上不是错误,而是使用时可能发生的昂贵操作压缩结合DML操作。它发生在:更新到压缩页面页面预留修改记录区域溢出;再次压缩页面,将所有更改应用到表数据;重新压缩的数据不适合原始页面,这要求MySQL将数据拆分为两个新页面,并分别压缩每个页面。如果需要查看该情况发生的频率,请查询INFORMATION_SCHEMA。INNODB_CMP表中又检查了多少值COMPRESS_OPS的值COMPRESS_OPS_OK列。理想情况下,压缩故障不会经常发生;当它们出现时,你可以调整innodb_compression_levelinnodb_compression_failure_threshold_pct,innodb_compression_pad_pct_max配置选项。

另请参阅压缩DML页面

连接指数

看到综合指数

并发性

多重操作的能力(在数据库术语中,交易)同时运行,互不干扰。并发性还涉及到性能,因为理想情况下,对多个同时事务的保护以最小的性能开销工作,使用高效的机制锁定

另请参阅锁定事务

配置文件

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

看到MySQL企业备份Product中,您通常使用两个配置文件:一个指定数据的来源和结构(可以是服务器的原始配置文件),另一个简化的配置文件只包含一小组选项,指定备份数据的去向和结构方式。类使用的配置文件MySQL企业备份Product必须包含常规配置文件中通常没有包含的某些选项,因此可能需要将选项添加到现有配置文件中以供使用MySQL企业备份

另请参阅my.cnfMySQL企业备份选项选择文件

连接

应用程序和MySQL服务器之间的通信通道。数据库应用程序的性能和可伸缩性受以下因素的影响:建立数据库连接的速度有多快、可以同时建立多少个连接以及它们的持续时间有多长。参数如宿主港口,等等表示为a连接字符串连接器/净,而作为DSN连接器/ ODBC.大流量系统使用一种称为连接池

另请参阅连接池连接字符串连接器/净连接器/ ODBCDSN宿主港口

连接池

允许数据库的缓存区连接在同一个应用程序内或跨不同的应用程序重用,而不是为每个数据库操作建立和拆除一个新的连接。这种技术在J2EE应用程序服务器。Java应用程序使用连接器/ J的连接池特性可以使用吗Tomcat和其他应用程序服务器。重用对应用程序是透明的;应用程序仍然像往常一样打开和关闭连接。

另请参阅连接连接器/ JJ2EETomcat

连接字符串

数据库参数的表示形式连接,编码为字符串字面值,以便在程序代码中使用。字符串的各个部分表示连接参数,例如宿主而且港口.连接字符串包含多个键-值对,用分号分隔。每个键-值对用一个等号连接。经常使用连接器/净应用程序;看到创建连接器/NET连接字符串获取详细信息。

另请参阅连接连接器/净宿主港口

连接器

MySQL连接器提供到MySQL服务器的连接客户端项目。几种编程语言和框架都有自己的关联连接器。控件提供的较低级别的访问API

另请参阅API客户端连接器/ c++连接器/ J连接器/净连接器/ ODBC

连接器/ c++

Connector/ c++ 8.0可以用来访问MySQL服务器,实现一个MySQL Connector/ c++ 8.0开发指南

另请参阅客户端连接器JDBC

连接器/ J

一个JDBC提供连接的驱动程序客户端Java编程语言。MySQL Connector/J是JDBC Type 4驱动程序:MySQL协议的纯java实现,不依赖于MySQL客户端库.有关详细信息,请参见MySQL Connector/J 8.0开发指南

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

连接器/净

MySQL连接器对于使用语言、技术和框架编写应用程序的开发人员,例如c#net莫诺Visual StudioASP.net,ADO.net

另请参阅ADO。网ASP.net连接器c#莫诺Visual Studio

连接器/ ODBC

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

另请参阅连接器ODBC

连接器/ PHP

一个版本的mysql而且mysqliapiPHP针对Windows操作系统进行优化。

另请参阅连接器PHPPHP API

一致的阅读

使用的读操作快照信息,以显示基于某个时间点的查询结果,而不考虑同时运行的其他事务执行的更改。类的内容重构原始数据,如果查询的数据已被另一个事务更改undo日志.这种技术避免了一些锁定可以减少的问题并发性通过强制事务等待其他事务完成。

可重复读取隔离级别例如,快照基于第一次读操作的时间。与读过承诺隔离级别时,快照将重置为每次一致性读操作的时间。

一致读是默认的读模式InnoDB流程选择语句读过承诺而且可重复读取隔离级别。因为一致读不会在它所访问的表上设置任何锁,所以在对表执行一致读时,其他会话可以自由修改这些表。

有关适用隔离级别的技术详细信息,请参见并发性隔离级别锁定读过承诺可重复读取快照事务undo日志

约束

一种可以阻止数据库更改以防止数据不一致的自动测试。(在计算机科学术语中,一种与不变条件相关的断言。)的关键组成部分理念,保持数据一致性。MySQL支持的约束包括外键约束而且独特的约束

另请参阅外键唯一约束

计数器

类型增加的值InnoDB操作。用于测量服务器的繁忙程度,排除性能问题的根源,以及测试更改(例如,配置设置或查询使用的索引)是否具有预期的底层效果。不同种类的柜台可以通过性能模式表和INFORMATION_SCHEMA表,特别是INFORMATION_SCHEMA。INNODB_METRICS

另请参阅INFORMATION_SCHEMA度量计数器性能模式

覆盖索引

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

任何列索引综合指数如果查询正确,可以作为覆盖索引。尽可能利用这种优化技术来设计索引和查询。

另请参阅列索引综合指数指数主键二级索引

中央处理器受限

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

另请参阅瓶颈缓冲池工作负载

崩溃

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

另请参阅崩溃恢复快速关闭InnoDB关闭

崩溃恢复

事件之后再次启动MySQL时发生的清理活动崩溃.为InnoDB表中,未完成事务的更改将使用重做日志.的变化,承诺崩盘之前,却尚未写进数据文件,都是从doublewrite缓冲.数据库正常关闭时,将在数据库关闭期间执行此类型的活动清洗操作。

在正常运行时,提交的数据可以存储在改变缓冲在写入数据文件之前的一段时间内。在保持数据文件的最新(这会在正常操作期间带来性能开销)和缓冲数据(会使停机和崩溃恢复花费更长的时间)之间总是要进行权衡。

另请参阅改变缓冲提交崩溃数据文件doublewrite缓冲InnoDB清洗重做日志

CRUD

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

另请参阅DDLDML查询SQL

光标

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

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

另请参阅动态SQL事先准备好的声明中查询

D

数据定义语言

看到DDL

数据字典

跟踪数据库对象的元数据,例如索引和表.对于MySQL 8.0中引入的MySQL数据字典,元数据物理上位于InnoDBfile-per-table的表空间文件mysql数据库目录。为InnoDB数据字典,元数据物理上位于InnoDB系统表空间

因为MySQL企业备份产品总是备份InnoDB系统表空间,所有备份都包含InnoDB数据字典。

另请参阅file-per-table.frm文件指数MySQL企业备份系统表空间表格

数据目录

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

另请参阅数据文件实例

数据文件

物理上包含的文件表格而且指数数据。

InnoDB系统表空间,其中包含InnoDB数据字典并且能够保存多个数据InnoDB表,由一个或多个表表示.ibdata数据文件。

每个表一个文件的表空间,为单个表保存数据InnoDB表中,都用a表示.ibd数据文件。

通用表空间(在MySQL 5.7.6中引入),它可以保存多个数据InnoDB表也用a表示.ibd数据文件。

另请参阅数据字典file-per-table一般的表空间.ibd文件ibdata文件指数系统表空间表格表空间

数据操作语言

看到DML

数据仓库

主要运行大型数据库系统或应用程序查询.只读或以读为主的数据可以组织在规范化的表单以提高查询效率。可以从的优化中受益只读事务在MySQL 5.6及更高版本。与OLTP

另请参阅规范化的OLTP查询只读事务

数据库

在MySQL数据目录,每个数据库由一个单独的目录表示。InnoDB的系统表空间,它可以在MySQL中保存来自多个数据库的表数据实例,被保存在数据文件它们驻留在各个数据库目录之外。当file-per-table模式已启用,则.ibd文件表示单独的InnoDB表存储在数据库目录中,除非在其他地方使用数据目录条款。在MySQL 5.7.6中引入的通用表空间也用于保存表数据.ibd文件.不像file-per-table.ibd文件,一般表空间.ibd文件可以保存表数据从多个数据库在一个MySQL实例,并可以分配到相对于MySQL数据目录或独立于MySQL数据目录的目录。

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

另请参阅数据文件file-per-table.ibd文件实例模式系统表空间

DCL

数据控制语言,一套SQL用于管理权限的语句。在MySQL中,由格兰特而且撤销语句。与DDL而且DML

另请参阅DDLDMLSQL

DDEX提供者

允许您使用其中的数据设计工具的功能Visual Studio来操作MySQL数据库中的模式和对象。MySQL应用程序使用连接器/净, MySQL Visual Studio Plugin作为MySQL 5.0及更高版本的DDEX提供程序。

另请参阅Visual Studio

DDL

数据定义语言,一套SQL语句,用于操作数据库本身,而不是单个表行。包括所有形式的创建改变,下降语句。还包括截断语句,因为它和a的工作原理不同删除从table_name声明,尽管最终的效果是相似的。

DDL语句自动提交当前的事务;他们不能回滚

InnoDB创建索引指数下降,以及许多类型的ALTER TABLE操作。看到InnoDB删除表而且截断表操作。

DML而且DCL

另请参阅提交DCLDMLfile-per-table回滚SQL事务

死锁

一种不同的情况交易都无法继续,因为每个人都持有对方需要的东西。因为两个事务都在等待资源可用,所以没有一个事务会释放它所持有的锁。

当事务锁定多个表中的行(通过诸如更新选择……更新),但顺序相反。当这些语句锁定索引记录和的范围时,也会发生死锁差距,由于时间问题,每个事务获得一些锁,但不能获得其他锁。

有关如何自动检测和处理死锁的背景信息,请参见差距事务

死锁检测

一种自动检测何时发生故障的机制死锁发生,并自动回滚其中的一个交易(涉及受害者).方法可以禁用死锁检测innodb_deadlock_detect配置选项。

另请参阅死锁回滚事务受害者

删除

InnoDB处理删除语句,则立即将行标记为删除,查询不再返回这些行。存储将在稍后的某个时候被回收,在称为清洗操作。对于大量数据的删除,相关操作具有各自的性能特点截断而且下降

另请参阅下降清洗截断

删除缓冲

将更改存储到二级索引页的技术删除操作,在改变缓冲而不是立即写入更改,这样就可以执行物理写入以最小化随机I/O。(因为删除操作是一个两步的过程,该操作缓冲了通常标记要删除的索引记录的写操作。)这是一种改变缓冲;其余的是插入缓冲而且清除缓存

另请参阅改变缓冲改变缓冲插入缓冲插入缓冲清除缓存

规范化的

一种跨不同表复制数据的数据存储策略,而不是将表与外键而且加入查询。通常用在数据仓库应用程序,其中数据在加载后不更新。在这样的应用程序中,查询性能比在更新期间维护一致数据更重要。与归一化

另请参阅数据仓库外键加入归一化

降序索引

一个类型的指数在哪里对索引存储进行了优化处理命令DESC条款。

另请参阅指数

字典对象缓存

字典对象缓存存储以前访问过的内容数据字典对象,以实现对象重用和最小化磁盘I/O。一个LRU基于的驱逐策略用于从内存中驱逐最近最少使用的对象。缓存由几个存储不同对象类型的分区组成。

有关更多信息,请参见数据字典LRU

脏页

一个页面InnoDB缓冲池已在内存中更新,其中更改尚未写入(刷新)数据文件.的反义词干净的页面

另请参阅缓冲池干净的页面数据文件冲洗页面

脏读

检索不可靠数据的操作,即已由另一个事务更新但尚未更新的数据承诺.只有用隔离级别被称为读未提交

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

它的对面是一致的阅读,在那里InnoDB确保一个事务不读取由另一个事务更新的信息,即使另一个事务在此期间提交。

另请参阅提交一致的阅读隔离级别读未提交回滚

基于磁盘的

一种数据库,主要在磁盘存储(硬盘驱动器或同等设备)上组织数据。数据在磁盘和内存之间来回传输,以便对其进行操作。它是an的反义词内存数据库.虽然InnoDB是基于磁盘的,它还包含了他缓冲池,多个缓冲池实例,以及自适应哈希索引它允许某些类型的工作负载主要从内存工作。

另请参阅自适应哈希索引缓冲池内存数据库

disk-bound

一个类型的工作负载在主瓶颈磁盘I / O。(也称为I / o密集型)。通常涉及到对磁盘的频繁写入,或随机读取超出容量的数据缓冲池

另请参阅瓶颈缓冲池工作负载

DML

数据操作语言,一套SQL语句执行插入更新,删除操作。的选择语句有时被认为是DML语句,因为选择……更新形式也受到同样的考虑锁定作为插入更新,删除

的DML语句InnoDB表在a上下文中操作事务,所以它们的影响可能是承诺回滚作为一个单一的单位。

DDL而且DCL

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

文档id

InnoDB全文搜索特性,表中的一个特殊列包含全文索引,以唯一标识与它们相关联的文档ilist价值。它的名字是FTS_DOC_ID(大写)。列本身必须是Bigint unsigned,不是null类型,其惟一索引名为FTS_DOC_ID_INDEX.最好是在创建表时定义此列。如果InnoDB创建?时必须向表添加列全文索引,索引操作是相当昂贵的。

另请参阅全文搜索全文索引ilist

doublewrite缓冲

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

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

要关闭doublewrite缓冲区,请指定该选项innodb_doublewrite = 0

另请参阅崩溃恢复数据文件页面清洗

下降

一种DDL操作,该操作通过语句删除模式对象删除表指数下降.它在内部映射到ALTER TABLE声明。从一个InnoDB从这个角度来看,这种操作的性能考虑包括时间数据字典锁定,以确保所有相关对象都已更新,而更新内存结构(如缓冲池.对于一个表格,下拉操作的特征与截断操作(截断表声明)。

另请参阅缓冲池数据字典DDL表格截断

DSN

缩写数据库源名称.这是编码连接信息连接器/ ODBC.看到在Windows上配置连接器/ODBC DSN全部细节。它相当于连接字符串所使用的连接器/净

另请参阅连接连接字符串连接器/净连接器/ ODBC

动态游标

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

另请参阅光标ODBC

动态行格式

一个InnoDB行格式。因为长可变长列值存储在保存行数据的页的外部,所以对于包含大型对象的行来说非常有效。由于通常不访问大字段来评估查询条件,所以它们不会被引入缓冲池从而减少I/O操作,更好地利用缓存内存。

从MySQL 5.7.9开始,默认的行格式定义为innodb_default_row_format,默认值为动态

有关有关InnoDB动态行格式,请参阅缓冲池文件格式行格式

动态SQL

允许您创建和执行的特性准备好的语句使用更健壮、安全和高效的方法替换参数值,而不是将语句的各个部分连接到字符串变量的简单技术。

另请参阅事先准备好的声明中

动态语句

一个事先准备好的声明中通过以下方式创建和执行动态SQL

另请参阅动态SQL事先准备好的声明中

E

早期采用者

类似于β,当软件产品通常在非关键任务设置中评估性能、功能和兼容性时。

另请参阅β

埃菲尔铁塔

一种包含许多面向对象特性的编程语言。它的一些概念是我们所熟悉的Java而且c#开发人员。开源的埃菲尔铁塔APIMySQL,请参阅APIc#Java

嵌入式

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

另请参阅客户端libmysqld

错误日志

一个类型的日志显示MySQL启动和关键运行时错误的信息崩溃信息。有关详细信息,请参见崩溃日志

驱逐

从缓存或其他临时存储区域(如InnoDB缓冲池.通常,但不总是,使用theLRU算法来确定要删除的项。当一个脏页是驱逐,它的内容是刷新到磁盘,以及任何脏的邻居的页面可能还会被冲走

另请参阅缓冲池脏页冲洗LRU邻居页面

异常拦截器

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

Java应用程序使用连接器/ J,设置这种类型的拦截器涉及实现com.mysql.jdbc.ExceptionInterceptor接口,并添加exceptionInterceptors财产连接字符串

Visual Studio应用程序使用连接器/净类中继承的类,设置这种类型的拦截器需要定义一个类BaseExceptionInterceptor类,并将类名指定为连接字符串的一部分。

另请参阅连接器/ J连接器/净拦截器JavaVisual Studio

独占锁

一种这就阻止了事务锁定同一行。取决于事务隔离级别,这种锁可能会阻止其他事务写入同一行,或者也可能阻止其他事务读取同一行。默认的InnoDB隔离级别,可重复读取,使高并发性通过允许事务读取具有排他锁的行,这种技术称为一致的阅读

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

程度上

一群页面在一个表空间.为默认页面大小大小为16KB,一个区段包含64页。的页面大小InnoDB实例可以是4KB、8KB或16KB,由innodb_page_size配置选项。对于4KB、8KB和16KB的页面大小,区段大小总是1MB(或1048576字节)。

支持32KB和64KBInnoDB在MySQL 5.7.6中增加了页面大小。对于32KB的页面大小,区段大小为2MB。对于64KB的页面大小,区段大小为4MB。

InnoDB等特性预读请求和doublewrite缓冲使用I/O操作,每次读取、写入、分配或释放一个区段的数据。

另请参阅doublewrite缓冲页面页面大小预读表空间

F

.frm文件

包含MySQL表的元数据(如表定义)的文件。.frm文件在MySQL 8.0中被删除,但在早期的MySQL版本中仍然使用。在MySQL 8.0中,以前存储在.frm文件存储在数据字典表。

另请参阅数据字典MySQL企业备份系统表空间

故障转移

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

另请参阅连接器/ JJ2EE

快速创建索引

这个功能最初是在InnoDB Plugin中引入的,现在是MySQL 5.5及更高版本的一部分InnoDB二级索引通过避免完全重写关联表的需要。这种加速也适用于删除二级索引。

因为索引维护会给许多数据传输操作增加性能开销,所以可以考虑执行以下操作ALTER TABLE……引擎= INNODB插入……Select * from…没有任何二级索引,然后创建索引。

在MySQL 5.6中,这个特性变得更加通用。您可以在创建索引时对表进行读写操作,以及许多其他类型的操作ALTER TABLE可以在不复制表、不阻塞的情况下执行操作DML操作,或两者兼而有之。因此,在MySQL 5.6及更高版本中,这组特性被称为在线DDL而不是快速索引创建。

相关信息请参见DML指数在线DDL二级索引

快速关闭

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

另请参阅崩溃恢复数据文件冲洗关闭缓慢关闭

文件格式

的文件格式InnoDB表。

另请参阅file-per-table.ibd文件ibdata文件行格式

file-per-table

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

innodb_file_per_table选项启用后,您可以单独创建一个表.ibd文件而不是在分享ibdata文件系统表空间.当表数据存储在单个数据中时.ibd文件,你的选择就更灵活了行格式对于数据等特性来说是必需的压缩.的截断表操作速度也更快,回收的空间可以被操作系统使用,而不是保留InnoDB

MySQL企业备份Product对于位于自己文件中的表更灵活。例如,可以将表从备份中排除,但前提是它们位于单独的文件中。因此,此设置适用于备份频率较低或备份时间安排不同的表。

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

填充因数

在一个InnoDB指数, a的比例页面这是在拆分页面之前由索引数据占用的。第一次在页面之间划分索引数据时未使用的空间允许用较长的字符串值更新行,而不需要昂贵的索引维护操作。如果填充因子过低,索引将消耗比所需更多的空间,从而在读取索引时造成额外的I/O开销。如果填充因子过高,任何增加列值长度的更新都会导致索引维护的额外I/O开销。看到指数页面

固定行格式

类使用此行格式MyISAM存储引擎,不受InnoDB.如果你创建一个InnoDB带有选项的表ROW_FORMAT =固定在MySQL 5.7.6或更早版本中,InnoDB使用紧凑行格式相反,虽然固定值可能仍然显示在输出中,例如显示表状态报告。从MySQL 5.7.7开始,InnoDB返回错误,如果ROW_FORMAT =固定都是确定的。

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

冲洗

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

当内存区域满了,系统需要释放一些空间时,就会发生刷新提交操作意味着来自事务的更改可以最终完成,或者因为一个缓慢关闭作业是指所有未完成的工作都要完成。当一次刷新所有缓冲数据不是关键时,InnoDB可以用一种叫做模糊检查点以刷新小批页面,以分散I/O开销。

另请参阅缓冲池提交模糊检查点重做日志缓慢关闭undo日志

刷新列表

一个内部InnoDB跟踪的数据结构脏页缓冲池:也就是说,页面这些文件已经被更改,需要写回磁盘。此数据结构经常由InnoDB内部mini-transactions,因此受到自身的保护互斥锁允许对缓冲池的并发访问。

另请参阅缓冲池脏页LRUmini-transaction互斥锁页面页面干净

外键

一种指针关系,在独立的行之间InnoDB表。控件中的一列上定义了外键关系父表子表

除了支持相关信息的快速查找外,外键还有助于执行参照完整性,通过防止这些指针在插入、更新和删除数据时失效。这种强制机制是一种约束.如果关联的外键值在另一个表中不存在,则不能插入指向另一个表的行。如果删除了一行或更改了它的外键值,而另一个表中的行指向该外键值,则可以设置外键来阻止删除,使另一个表中的相应列值变为,或自动删除另一个表中的相应行。

设计的一个阶段归一化数据库用于识别重复的数据,将该数据分离到一个新表中,并建立一个外键关系,以便可以像查询单个表一样查询多个表加入操作。

另请参阅子表外键约束加入归一化父表参照完整性关系

外键约束

的类型约束来维护数据库的一致性外键的关系。与其他类型的约束一样,如果数据不一致,它可以阻止插入或更新数据;在本例中,要防止的不一致是在多个表中的数据之间。另外,当一个DML操作执行,外键约束可能导致数据在孩子的行被删除,更改为不同的值,或设置为,基于在级联选项在创建外键时指定。

另请参阅子表约束DML外键

罚球

在大多数情况下,缩写为全文搜索.有时在绩效讨论中,缩写是全表扫描

另请参阅全表扫描全文搜索

完全备份

一个备份这包括所有在每个MySQL数据库,以及MySQL中的所有数据库实例.与部分备份

另请参阅备份数据库实例部分备份表格

全表扫描

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

索引的目的是允许在大表中查找特定的值或值的范围,从而在实际情况下避免对整个表进行扫描。

另请参阅缓冲池指数

全文搜索

MySQL特性,用于在表数据中查找单词、短语、单词的布尔组合等,比使用SQL更快、更方便、更灵活就像或者编写自己的应用程序级搜索算法。它使用SQL函数匹配()而且全文索引

另请参阅全文索引

全文索引

这种特殊的指数保存搜索索引在MySQL全文搜索机制。表示列值中的单词,省略指定为的任何单词stopwords.原来,只供MyISAM表。从MySQL 5.6.4开始,它还可以用于InnoDB表。

另请参阅全文搜索指数InnoDB搜索索引stopword

模糊检查点

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

另请参阅缓冲池脏页冲洗

G

遗传算法

一般可用即软件产品离开的阶段β并可用于销售、官方支持和生产使用。

另请参阅β

广汽

缩写全局程序集缓存.用作存放图书馆的中央地方(程序集)net系统。控件在物理上由嵌套文件夹组成,将其视为单个虚拟文件夹netCLR。

另请参阅net组装

差距

一个地方InnoDB指数可以插入新值的数据结构。当您使用语句锁定一组行时,例如选择……更新InnoDB可以创建适用于间隙以及索引中的实际值的锁。例如,如果选择所有大于10的值进行更新,则间隙锁将防止另一个事务插入大于10的新值。的上确界记录而且下确界记录表示包含所有大于或小于所有当前索引值的空白。

另请参阅并发性锁的差距指数下确界记录隔离级别上确界记录

锁的差距

一个在一个差距索引记录之间,或者锁定第一个索引记录之前或最后一个索引记录之后的间隙。例如,SELECT c1 FROM t WHERE c1在10到20之间防止其他事务将值15插入到列中t.c1,无论列中是否已经有任何这样的值,因为范围中所有现有值之间的空白都是锁定的。与记录锁而且第二个关键锁

间隙锁是在性能和并发性,并在某些事务中使用隔离级别而不是别人。

另请参阅差距下确界记录第二个关键锁记录锁上确界记录

通用日志

看到通用查询日志

通用查询日志

一个类型的日志用于MySQL服务器处理的SQL语句的诊断和故障排除。可以存储在文件或数据库表中。您必须通过general_log配置选项来使用它。方法对特定连接禁用它sql_log_off配置选项。

方法记录的查询范围比慢速查询日志.不像二进制日志,用于复制,一般查询日志包含选择语句,并且不维护严格的顺序。有关更多信息,请参见二进制日志日志慢速查询日志

一般的表空间

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

将表添加到通用表空间创建表tbl_name...表空间(=)tablespace_nameALTER TABLEtbl_name表空间(=)tablespace_name语法。

系统表空间而且file-per-table表空间。

有关更多信息,请参见file-per-table系统表空间表格表空间

生成的列

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

另请参阅基列存储生成的列虚拟生成列

生成存储列

看到存储生成的列

生成虚拟列

看到虚拟生成列

Glassfish

另请参阅J2EE

全局临时表空间

一个临时表空间存储回滚段用于对用户创建的临时表所做的更改。

另请参阅临时表空间

全局事务

一个类型的事务参与XA操作。它由几个本身是事务性的操作组成,但所有操作要么作为一个组成功完成,要么作为一个组回滚。从本质上说,这是一种延伸属性一个水平这样多个ACID事务就可以作为具有ACID属性的全局操作的组件一起执行。

另请参阅事务XA

组织承诺

一个InnoDB的优化,执行一些低级的I/O操作(日志写)一次提交操作,而不是针对每次提交分别刷新和同步。

另请参阅二进制日志提交

GUID

缩写全局唯一标识符它是一个ID值,可用于跨不同数据库、语言、操作系统等关联数据。(作为使用顺序整数的替代方案,相同的值可能出现在引用不同数据的不同表、数据库等中。)较老的MySQL版本将其表示为二进制(16).目前,它表示为CHAR (36).MySQL有UUID ()函数返回字符格式的GUID值UUID_SHORT ()函数以整数格式返回GUID值。因为连续的GUID值不一定是升序排序的,所以对于大型InnoDB表来说,使用GUID作为主键并不是一个有效的值。

H

散列索引

一个类型的指数用于使用相等操作符的查询,而不是使用大于或等范围操作符的查询之间的.它可用于内存表。虽然哈希索引是默认的内存表的历史原因,存储引擎也支持b -树索引,它通常是通用查询的更好选择。

MySQL包含这种索引类型的变体自适应哈希索引,它是自动构造的InnoDB表(根据运行时条件)。

另请参阅自适应哈希索引b -树指数InnoDB

硬盘驱动器

缩写硬盘驱动器.指存储介质使用纺丝盘时,通常用纺丝盘进行比较和对比固态硬盘.它的性能特性会影响系统的吞吐量基于磁盘的工作负载。

另请参阅基于磁盘的固态硬盘

心跳

一种周期性发送的消息,表示系统正常运行。在一个复制背景下,如果停止发送这样的消息,其中一个副本可以取代它的位置。类似的技术可以在集群环境中的服务器之间使用,以确认所有服务器都在正常运行。

另请参阅复制

高水位线

表示上限的值,可以是运行时不应超过的硬限制,也可以是实际达到的最大值的记录。与最低点

另请参阅最低点

历史列表

的列表交易计划处理已删除标记的记录InnoDB清洗操作。记录在undo日志.历史列表的长度由命令报告显示引擎innodb状态.的值innodb_max_purge_lag配置选项,每个DML操作稍微延迟,以允许清除操作完成冲洗删除记录。

也被称为清洗滞后

另请参阅DML冲洗清洗清洗滞后回滚段事务undo日志

孔冲孔

从页面释放空块。的InnoDB透明页面压缩功能依靠冲孔支撑。有关更多信息,请参见稀疏文件透明页面压缩

宿主

数据库服务器的网络名称,用于建立连接.常与a一起指定港口.在某些情况下,IP地址127.0.0.1比特殊的名字更好用本地主机用于访问与应用程序相同服务器上的数据库。

另请参阅连接本地主机港口

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

虽然通常表示一种不希望出现的情况热备份是首选的备份类型。

另请参阅热备份

热备份

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

的执行热备份的Oracle产品InnoDB特别是表,但也从表MyISAM而其他存储引擎,则被称为MySQL企业备份

热备份过程包括两个阶段。数据文件的初始复制产生一个原始备份.的应用Step将运行备份时对数据库发生的任何更改合并在一起。应用这些更改将生成一个准备备份;只要有必要,就可以随时恢复这些文件。

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

.ibd文件

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

.ibd文件扩展名不适用于系统表空间,其中包含一个或多个ibdata文件

方法创建的表单文件表空间或通用表空间数据目录=条款,.ibd文件位于正常数据目录之外的指定路径。

当一个.ibd文件包含在压缩备份中MySQL企业备份产品,压缩当量是a.ibz文件。

另请参阅数据库file-per-table一般的表空间ibdata文件.ibz文件innodb_file_per_tableMySQL企业备份系统表空间

.ibz文件

MySQL企业备份产品执行压缩备份,它将每个表空间方法创建的文件file-per-table设置从一个.ibd扩展到一个.ibz扩展。

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

另请参阅压缩备份压缩行格式file-per-table.ibd文件MySQL企业备份表空间

I / o密集型

看到disk-bound

ib-file集

管理的文件集InnoDB在MySQL数据库中:系统表空间file-per-table表空间文件,重做日志文件。取决于MySQL版本和InnoDB配置,也可能包括一般的表空间临时表空间,撤消表空间文件。这个术语有时用于详细讨论InnoDB引用由管理的文件集的文件结构和格式InnoDB在MySQL数据库中。

另请参阅数据库file-per-table一般的表空间重做日志系统表空间临时表空间撤消表空间

ibbackup_logfile

创建的补充备份文件MySQL企业备份产品在热备份操作。它包含关于备份运行时发生的任何数据更改的信息。初始备份文件,包括ibbackup_logfile,被称为原始备份,因为在备份操作期间发生的更改尚未合并。执行完应用步骤到原始备份文件,结果文件确实包括那些最终的数据更改,并称为准备备份.在这个阶段,ibbackup_logfile文件不再是必要的。

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

ibdata文件

一组文件名为ibdata1ibdata2,等等,这些组成了InnoDB系统表空间.有关驻留在系统表空间中的结构和数据的信息ibdata文件,请参阅ibdata文件受innodb_autoextend_increment配置选项。

另请参阅改变缓冲数据字典doublewrite缓冲file-per-table.ibd文件innodb_file_per_table系统表空间undo日志

ibtmp文件

InnoDB临时表空间数据文件对未压缩的InnoDB临时表和相关的对象。配置文件选项,innodb_temp_data_file_path,允许用户为临时表空间数据文件定义一个相对路径。如果innodb_temp_data_file_path时,默认行为是创建一个名为ibtmp1在数据目录中,与ibdata1

另请参阅数据文件临时表临时表空间

ib_logfile

一组文件,通常命名为ib_logfile0而且ib_logfile1,形成重做日志.有时也被称为日志组.这些文件记录试图更改数据的语句InnoDB表。这些语句在崩溃后启动时自动重播,以纠正不完整事务写入的数据。

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

另请参阅二进制日志日志组重做日志

ilist

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

另请参阅全文索引

隐式行锁

一个行锁InnoDB获取以确保一致性,无需您特别要求。

另请参阅行锁

内存数据库

在内存中维护数据的一种数据库系统,以避免磁盘I/O和磁盘块与内存区域之间的转换造成的开销。一些内存数据库牺牲了持久性(例如D它们容易受到硬件、电源和其他类型故障的影响,因此更适合于只读操作。其他内存数据库确实使用持久性机制,例如将更改记录到磁盘或使用非易失性内存。

解决相同类型的内存密集型处理的MySQL特性包括InnoDB缓冲池自适应哈希索引,只读事务优化,内存存储引擎,MyISAMkey缓存和MySQL查询缓存。

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

增量备份

一个类型的热备份,由MySQL企业备份产品,它只保存自某个时间点以来更改的数据。使用完全备份和连续的增量备份可以使您在很长一段时间内重构备份数据,而不需要随时保留多个完全备份的存储开销。您可以恢复完整备份,然后依次应用每个增量备份,或者您可以通过应用每个增量备份来保持完整备份的最新状态,然后执行单个恢复操作。

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

另请参阅热备份MySQL企业备份页面

指数

提供快速查找功能的数据结构表格,通常形成树形结构(b - tree)表示一个特定值的所有值或者一组列。

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

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

虽然b树索引是最常见的,但也使用了一种不同的数据结构散列索引,如内存存储引擎和InnoDB自适应哈希索引r - tree索引用于多维信息的空间索引。

另请参阅自适应哈希索引b -树子表聚集索引列索引综合指数覆盖索引外键散列索引父表部分指标主键查询r - tree二级索引表格

索引缓存

用于保存令牌数据的内存区域InnoDB全文搜索.类的一部分的列中插入或更新数据时,它对数据进行缓冲,以最小化磁盘I/O全文索引.当索引缓存满时,令牌数据被写入磁盘。每一个InnoDB全文Index有自己独立的索引缓存,其大小由配置选项控制innodb_ft_cache_size

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

指数条件下推

索引条件下推(ICP)是一种优化,它将部分索引条件下推在哪里条件下的存储引擎,如果条件的部分可以使用指数.可减少ICP的次数存储引擎必须访问基表和MySQL服务器必须访问存储引擎的次数。有关更多信息,请参见指数存储引擎

索引提示

的扩展SQL语法索引由优化器推荐。例如,力指数使用索引,忽略指数条款。通常用于索引列的值分布不均匀,导致不准确的情况基数估计。

另请参阅基数指数

指数的前缀

在一个指数这适用于多个列(称为综合指数),索引的首列或前列。引用复合索引的前1、2、3等列的查询可以使用索引,即使查询没有引用索引中的所有列。

另请参阅综合指数指数

索引统计信息

看到统计数据

下确界记录

一个pseudo-record在一个指数,代表了差距低于该索引的最小值。如果事务有这样的语句选择……从…WHERE col < 10 FOR UPDATE;,并且列中的最小值是5,它是对最小记录的锁定,防止其他事务插入更小的值,如0、-10等等。

另请参阅差距指数pseudo-record上确界记录

INFORMATION_SCHEMA

的名称数据库为MySQL提供了一个查询接口数据字典.(此名称由ANSI SQL标准定义。)要检查关于数据库的信息(元数据),可以查询诸如INFORMATION_SCHEMA。表而且INFORMATION_SCHEMA。列,而不是使用显示产生非结构化输出的命令。

INFORMATION_SCHEMA数据库还包含特定的表InnoDB对象的查询接口InnoDB数据字典。使用这些表不是为了查看数据库的结构,而是为了获得关于的工作情况的实时信息InnoDB表,以帮助进行性能监视、调优和故障排除。

另请参阅数据字典数据库InnoDB

InnoDB

一个结合了高性能的MySQL组件事务可靠性、健壮性和并发访问的能力。它体现了设计理念。表示为存储引擎;方法创建或修改的表引擎= INNODB条款。看到InnoDB是新表的默认存储引擎吗引擎= INNODB子句不需要。

InnoDB桌子非常适合热备份.看到MySQL企业备份在不中断正常处理的情况下备份MySQL服务器。

另请参阅热备份MySQL企业备份存储引擎事务

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)是默认的,这反映了默认复制类型从基于语句的复制变为基于行的复制。

另请参阅自动递增自动递增锁定插入的代码主键

innodb_file_per_table

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

此选项会影响许多SQL语句的性能和存储考虑因素,例如删除表而且截断表

使innodb_file_per_table选项允许您利用表等特性压缩中的命名表备份MySQL企业备份

有关更多信息,请参见innodb_file_per_table,压缩file-per-table.ibd文件MySQL企业备份系统表空间

innodb_lock_wait_timeout

innodb_lock_wait_timeout选项设置之间的平衡等待以便共享资源变得可用,或放弃并处理错误,重新尝试,或在应用程序中执行替代处理。回滚任何InnoDB等待超过指定时间以获取对象的事务.如果特别有用死锁由不同存储引擎控制的多个表的更新引起;但这种死锁并非如此检测到自动。

另请参阅死锁死锁检测等待

innodb_strict_mode

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

另请参阅严格模式

插入

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

另请参阅自动递增改变缓冲数据仓库DMLInnoDB插入缓冲OLTPSQL

插入缓冲

的前名称改变缓冲.在MySQL 5.5中,添加了对二级索引页的缓冲更改的支持删除而且更新操作。以前,只有变化产生于插入操作缓冲。首选的术语是现在改变缓冲

另请参阅改变缓冲改变缓冲

插入缓冲

将更改存储到二级索引页的技术插入操作,在改变缓冲而不是立即写入更改,这样就可以执行物理写入以最小化随机I/O。这是一种改变缓冲;其余的是删除缓冲而且清除缓存

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

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

插入意图锁

一个类型的锁的差距这是由插入行插入之前的操作。这种类型的指示插入的意图,如果多个事务没有插入到同一索引间隙内的同一位置,则插入到同一索引间隙的多个事务不需要相互等待。有关更多信息,请参见锁的差距第二个关键锁

实例

一个单一的mysqld守护进程管理数据目录代表一个或多个数据库有一套.它在开发、测试等领域很常见复制有多个实例的场景服务器机器,每个管理自己的数据目录和监听自己的端口或套接字。其中一个实例运行disk-bound工作负载,服务器可能仍然有额外的CPU和内存容量来运行额外的实例。

另请参阅数据目录数据库disk-boundmysqld复制服务器表格

仪表

在源代码级别进行修改,以收集用于调优和调试的性能数据。在MySQL中,通过工具收集的数据通过SQL接口公开INFORMATION_SCHEMA而且PERFORMANCE_SCHEMA数据库。

另请参阅INFORMATION_SCHEMA性能模式

意图独占锁

看到意向锁

意向锁

一种这适用于表,用于指示锁的类型事务打算在表中的行上获取。不同的事务可以在同一个表上获得不同种类的意图锁,但是第一个事务获得一个目的独家(IX)表上的锁可以防止其他事务获得表上的任何S或X锁。相反,第一次交易获得目的共享表上的(IS)锁阻止其他事务获得表上的任何X锁。两阶段流程允许按顺序解析锁请求,而不会阻塞兼容的锁和相应操作。有关此锁定机制的更多信息,请参见锁定模式锁定事务

目的共享锁

看到意向锁

拦截器

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

另请参阅命令拦截器连接器/ J连接器/净异常拦截器

内在的临时表

一个优化的内部InnoDB控件使用的临时表优化器

另请参阅优化器

反向索引

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

另请参阅全文搜索全文索引ilist

IOPS

缩写每秒I/O操作.这是对繁忙系统的常用测量方法OLTP应用程序。如果该值接近存储设备所能处理的最大值,则应用程序可能变成disk-bound,限制可伸缩性

另请参阅disk-boundOLTP可伸缩性

隔离级别

数据库处理的基础之一。隔离是的缩写;隔离级别是一种设置,用于微调性能与结果的可靠性、一致性和可重复性之间的平衡交易正在进行更改并同时执行查询。

从最高的一致性和保护到最低的隔离级别,InnoDB支持的隔离级别是:可序列化的可重复读取读过承诺,读未提交

InnoDB表时,许多用户可以保持默认隔离级别(可重复读取)。专家用户可能会选择读过承诺水平,因为他们推动了可伸缩性的边界OLTP处理过程,或在数据仓库操作期间,其中微小的不一致不会影响大量数据的汇总结果。边缘的水平(可序列化的而且读未提交)将处理行为改变到极少使用的程度。

另请参阅OLTP读过承诺读未提交可重复读取可序列化的事务

J

J2EE

Java平台,企业版:Oracle的企业Java平台。博彩到10bet娱乐城它由用于企业级Java应用程序的API和运行时环境组成。有关详细信息,请参见http://www.oracle.com/technetwork/java/javaee/overview/index.html.对于MySQL应用程序,您通常使用连接器/ J用于数据库访问和应用服务器,如TomcatJBoss处理中间层工作,以及可选的框架,如春天.J2EE堆栈中经常提供的与数据库相关的特性包括连接池而且故障转移支持。

另请参阅连接池连接器/ J故障转移JavaJBoss春天Tomcat

Java

一种结合了高性能、丰富的内置特性和数据类型、面向对象机制、广泛的标准库和广泛的可重用第三方模块的编程语言。许多框架、应用程序服务器和其他技术都支持企业开发。它的大部分语法都很熟悉C而且c++开发人员。要用MySQL编写Java应用程序,需要使用JDBC司机被称为连接器/ J

另请参阅C连接器/ Jc++JDBC

JBoss

另请参阅J2EE

JDBC

缩写Java数据库连接,一个API对数据库的访问Java应用程序。编写MySQL应用程序的Java开发人员使用连接器/ J组件作为JDBC驱动程序。

另请参阅API连接器/ JJ2EEJava

JNDI

另请参阅Java

加入

一个查询它通过引用包含相同值的表中的列,从多个表中检索数据。理想情况下,这些列是InnoDB外键关系,确保参照完整性连接列是索引.通常用于节省空间和提高查询性能,方法是将重复字符串替换为数字id归一化数据设计。

另请参阅外键指数归一化查询参照完整性

K

密钥存储库

另请参阅SSL

KEY_BLOCK_SIZE

控件中指定数据页大小的选项InnoDB表使用压缩行格式.默认值是8千字节。较低的值可能触及内部限制,这取决于行大小和压缩百分比的组合。

MyISAM表,KEY_BLOCK_SIZE可选地指定用于索引键块的字节大小。该值被视为提示;如果必要,可以使用不同的尺寸。一个KEY_BLOCK_SIZE为单个索引定义指定的值将覆盖表级KEY_BLOCK_SIZE价值。

另请参阅压缩行格式

l

门闩

一种轻型结构,用于InnoDB实现一个对于它自己的内部内存结构,通常持有一个以毫秒或微秒为单位的短暂时间。包括两者的总称互斥锁(供独家访问)和rw-locks(共享访问)。某些闩锁是焦点InnoDB性能调优。关于锁存器使用和争用的统计信息可以通过性能模式接口。

另请参阅锁定互斥锁性能模式rw-lock

libmysql

的非正式名称libmysqlclient图书馆。

另请参阅libmysqlclient

libmysqlclient

库文件,命名为libmysqlclient.alibmysqlclient.so,通常链接到客户端编写的程序在C.有时被非正式地称为libmysql或者是mysqlclient图书馆。

另请参阅客户端libmysqlmysqlclient

libmysqld

嵌入式MySQL服务器库可以在一个客户端应用程序。主要的好处是提高了嵌入式应用程序的速度和更简单的管理。你与libmysqld图书馆而不是libmysqlclient.这三个库之间的API是相同的。

另请参阅客户端嵌入式libmysqllibmysqlclient

生命周期的拦截器

一个类型的拦截器支持的连接器/ J.它涉及到接口的实现com.mysql.jdbc.ConnectionLifecycleInterceptor

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

列表

InnoDB缓冲池是否表示为内存列表页面.当访问新页面并进入缓冲池时,当再次访问缓冲池中的页面并将其视为较新的页面时,以及当长时间未访问的页面被视为较新的页面时,该列表将重新排序驱逐从缓冲池。缓冲池分为子列表替换政策是人们熟悉的政策的一种变体LRU技术。

另请参阅缓冲池驱逐LRU页面子表

负载平衡

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

另请参阅连接器/ JJ2EE

本地主机

另请参阅连接

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

另请参阅门闩锁定模式锁定互斥锁

锁升级

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

另请参阅锁定行锁表锁

锁定模式

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

排他(X)锁允许事务更新或删除一行。任何其他事务都不能同时获得同一行上的任何类型的锁。

意向锁应用于表,并用于指示事务打算在表中的行上获得哪种类型的锁。不同的事务可以在同一个表上获得不同种类的意图锁,但是第一个获得表上意图排他(IX)锁的事务可以阻止其他事务获得该表上的任何S或X锁。相反,第一个获得表上意图共享(IS)锁的事务阻止其他事务获得表上的任何X锁。两阶段流程允许按顺序解析锁请求,而不会阻塞兼容的锁和相应操作。

另请参阅意向锁锁定事务

锁定

保护的制度事务从查看或更改由其他事务查询或更改的数据。的锁定策略必须平衡数据库操作的可靠性和一致性哲学)反对为善所需要的表现并发性.对锁定策略的微调通常涉及选择隔离级别并确保所有数据库操作对于该隔离级别都是安全可靠的。

另请参阅并发性隔离级别锁定事务

读锁

一个选择语句,该语句也执行锁定操作在一个InnoDB表格要么选择……更新选择……共享模式锁定.它有可能产生一种死锁,视乎隔离级别的事务。的反义词非自读.对象中的全局表不允许只读事务

选择……为分享替换选择……共享模式锁定在MySQL 8.0.1,但是共享模式锁定保持向后兼容可用。

看到死锁隔离级别锁定非自读只读事务

日志

InnoDB背景下,日志日志文件通常是指重做日志所代表的ib_logfileN文件。另一种类型的InnoDB日志是undo日志,这是一个存储区域,保存由活动事务修改的数据副本。

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

另请参阅二进制日志错误日志通用查询日志ib_logfile重做日志慢速查询日志undo日志

日志缓冲区

控件中存放要写入的数据的内存区域日志文件构成了重做日志.它是由innodb_log_buffer_size配置选项。

另请参阅日志文件重做日志

日志文件

其中的一个ib_logfileN文件组成重做日志.对象将数据写入这些文件日志缓冲区内存区域。

另请参阅ib_logfile日志缓冲区重做日志

日志组

控件的文件集重做日志,通常叫ib_logfile0而且ib_logfile1.(因此,有时统称为ib_logfile)。

另请参阅ib_logfile重做日志

逻辑

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

另请参阅逻辑备份物理

逻辑备份

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

另请参阅备份, mysqldump物理备份恢复

loose_

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

另请参阅启动

最低点

一种表示下限的值,通常是一个阈值,达到这个值,纠正措施就开始或变得更加积极。与高水位线

另请参阅高水位线

LRU

的缩写最近最少使用,一种管理存储区域的常用方法。最近没有使用过的项目是驱逐当需要空间缓存较新的项时。InnoDB缺省情况下使用LRU机制来管理页面缓冲池,但在页面可能只读取一次的情况下例外,例如在全表扫描.LRU算法的这种变体称为中点插入策略.有关更多信息,请参见缓冲池驱逐全表扫描中点插入策略页面

LSN

缩写日志序列号.这个任意的、不断增加的值表示与记录在重做日志.这个时间点是不考虑的事务边界;它可以落在一个或多个事务的中间。)它是由内部使用InnoDB崩溃恢复为了管理缓冲池

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

MySQL企业备份product,则可以指定一个LSN来表示从该时间点开始进行增量备份.的输出显示相应的LSNmysqlbackup命令。有了与完全备份时间对应的LSN后,可以指定该值进行后续增量备份,其输出包含下一次增量备份的另一个LSN。

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

.MRG文件

控件使用的包含对其他表的引用的文件合并存储引擎。控件生成的备份中始终包含具有此扩展名的文件mysqlbackup命令的MySQL企业备份产品。

另请参阅MySQL企业备份mysqlbackup命令

.MYD文件

一个MySQL用来存储数据库数据的文件MyISAM表格

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

.MYI文件

一个MySQL用来存储索引的文件MyISAM表格

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

看到

掌握线程

一个InnoDB线程它在后台执行各种任务。这些任务大多数都与I/O相关,例如从改变缓冲到适当的二级索引。

改善并发性,有时动作从主线程移动到独立的后台线程。例如,在MySQL 5.6及更高版本中,脏页刷新缓冲池页面干净线程而不是主线程。

另请参阅缓冲池改变缓冲并发性脏页冲洗页面干净线程

MDL

缩写元数据锁

另请参阅元数据锁

媒介的信任

的同义词部分信任.因为信任设置的范围很广,部分信任为首选,以避免只有三个级别(低、中和满)的暗示。

另请参阅连接器/净部分信任

memcached

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

memcached接口InnoDB表在MySQL 5.6及更高版本可用;看到memcached接口NDB表在NDB Cluster 7.2及更高版本中可用;看到http://dev.10bet靠谱mysql.com/doc/ndbapi/en/ndbmemcache.html获取详细信息。

另请参阅InnoDBNoSQL

合并

对缓存在内存中的数据应用更改,例如将页放入缓冲池,以及记录在改变缓冲被合并到缓冲池中的页中。更新的数据最终写入表空间冲洗机制。

另请参阅缓冲池改变缓冲冲洗表空间

元数据锁

一个类型的这就阻止了DDL对正在被另一个表同时使用的表的操作事务.有关详细信息,请参见在线操作,特别是在MySQL 5.6及更高版本中,都专注于减少元数据锁定的数量。目的是为了不改变表结构的DDL操作(例如创建索引而且指数下降InnoDB表),以便在表被其他事务查询、更新等时继续执行。

另请参阅DDL在线事务

度量计数器

实现的特性INNODB_METRICS表中INFORMATION_SCHEMA,在MySQL 5.6及更高版本。您可以查询计数和低水平的总数InnoDB的数据组合使用结果进行性能调优性能模式

另请参阅计数器INFORMATION_SCHEMA性能模式

中点插入策略

最初带来的技巧页面InnoDB缓冲池不是在最新的在列表的末尾,但是在中间的某个地方。的设置,此点的确切位置可能有所不同innodb_old_blocks_pct选择。其目的是只读取一次的页面,例如在全表扫描,可以在缓冲池中老化,比用严格的缓冲池更快LRU算法。有关更多信息,请参见缓冲池全表扫描LRU页面

mini-transaction

的内部阶段InnoDB处理时,在物理期间的内部数据结构级别DML操作。小事务(mtr)没有回滚;多个小事务可以在单个事务中发生事务.小事务将信息写入重做日志这是在崩溃恢复.小事务也可以发生在常规事务的上下文之外,例如在清洗后台线程处理。

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

插入的代码

一个插入声明,自动递增为一些但不是所有的新行指定值。例如,一个多值插入是否可以在某些情况下为自动递增列指定一个值在其他情况下。InnoDB为指定列值为的行生成自动递增值.另一个例子是插入……重复密钥更新语句,其中可能会生成自动递增的值,但不会使用更新而不是插入语句。

会不会造成一致性问题而且副本服务器复制配置。可以要求调整的值innodb_autoinc_lock_mode配置选项。

另请参阅自动递增innodb_autoinc_lock_mode副本复制

MM.MySQL

MySQL的一个较老的JDBC驱动程序连接器/ J当它与MySQL产品集成时。

另请参阅连接器/ J

莫诺

一个由Novell开发的开源框架,用于连接器/净而且c#Linux平台上的应用程序。

另请参阅连接器/净c#

地铁

看到mini-transaction

多核

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

多版本并发控制

看到MVCC

互斥锁

非正式的缩写互斥变量.互斥本身是互斥的缩写互斥)。底层对象InnoDB用于表示和强制独占访问到内存内部数据结构。一旦获得了锁,任何其他进程、线程等都不能获得相同的锁。与rw-locks,这InnoDB用于表示和强制共享访问到内存内部数据结构。互斥锁和rw-锁统称为门闩

另请参阅门闩性能模式Pthreadsrw-lock

MVCC

缩写多版本并发控制.这种技术允许InnoDB交易与某些隔离级别执行一致的阅读操作;也就是说,查询正在被其他事务更新的行,并查看更新发生之前的值。这是一个强大的增加技巧并发性,允许查询继续进行而无需等待由其他交易持有。

这种技术在数据库领域并不通用。其他一些数据库产品和其他一些MySQL存储引擎不支持它。

另请参阅并发性一致的阅读隔离级别事务

my.cnf

在Unix或Linux系统上,MySQL的名称选择文件

另请参阅my.ini选择文件

my.ini

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

另请参阅my.cnf选择文件

MyODBC司机

过时的名字连接器/ ODBC

另请参阅连接器/ ODBC

mysql

mysqlprogram是MySQL数据库的命令行解释器。It过程SQL语句,以及mysql特定的命令,例如显示表,通过将请求传递给mysqld守护进程。

另请参阅mysqldSQL

MySQL企业备份

一种授权的产品热备份MySQL数据库。它在备份时提供了最大的效率和灵活性InnoDB表,还可以备份MyISAM还有其他类型的表格。

另请参阅热备份InnoDB

mysqlbackup命令

的命令行工具MySQL企业备份产品。它执行一个热备份操作InnoDB表,MyISAM还有其他类型的表格。看到热备份MySQL企业备份热备份

mysqlclient

由文件实现的库的非正式名称libmysqlclient,扩展.一个所以

另请参阅libmysqlclient

mysqld

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

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

另请参阅实例mysql

MySQLdb

开源软件的名字Python模块构成了MySQL的基础Python API

另请参阅PythonPython API

, mysqldump

执行的命令逻辑备份数据库、表和表数据的某种组合。结果是复制原始模式对象、数据或两者的SQL语句。对于大量的数据,a物理备份解决方案等MySQL企业备份是更快的,尤其是恢复操作。

另请参阅逻辑备份MySQL企业备份物理备份恢复

N

net

另请参阅ADO。网ASP.net连接器/净莫诺Visual Studio

本机C API

的同义词libmysqlclient

另请参阅libmysql

自然的关键

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

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

  • 即使看起来稳定的值也可能以难以预测的方式发生变化,从而难以在数据库中正确表示。例如,一个国家可以变成两个或几个国家,使原来的国家代码过时。或者,关于唯一值的规则可能有例外。例如,即使纳税人的id对一个人来说是唯一的,数据库也可能必须处理违反这一规则的记录,例如身份盗窃。纳税人ID和其他敏感ID号也不是理想的主键,因为它们可能需要安全、加密,或者与其他列区别对待。

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

另请参阅自动递增聚集索引主键二级索引合成的关键

邻居页面

任何页面在相同的程度上作为一个特定的页面。当一个页面被选择为刷新的任何邻居页通常也会被刷新,这是对传统硬盘的I/O优化。在MySQL 5.6及以上版本中,这种行为可以通过配置变量控制innodb_flush_neighbors;对于SSD驱动器,您可以关闭该设置,因为SSD驱动器在随机位置写入小批量数据时没有相同的开销。

另请参阅脏页程度上冲洗页面

第二个关键锁

的组合记录锁在索引记录和锁的差距锁定记录锁

非自读

一个查询它不使用选择……更新选择……共享模式锁定条款。对象中全局表允许的唯一查询类型只读事务.的反义词读锁.看到选择……为分享替换选择……共享模式锁定在MySQL 8.0.1,但是共享模式锁定保持向后兼容可用。

另请参阅读锁查询只读事务

不可重复读

查询检索数据时,后面的查询在同一范围内检索数据的情况事务检索应该相同的数据,但查询返回不同的结果(在此期间由另一个提交的事务更改)。

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

在不同的隔离级别方法阻止不可重复读取可串行化的阅读而且可重复读取级别,并允许一致的阅读,读未提交的水平。

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

非阻塞I / O

这是一个行业术语,意思与异步I / O

另请参阅异步I / O

归一化

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

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

另一个例子是,虽然简单的地址簿应用程序可能会将每个电话号码作为个人姓名和地址存储在同一个表中,但电话公司数据库可能会给每个电话号码一个特殊的ID,并将号码和ID存储在单独的表中。这种规范化表示可以简化区号分离时的大规模更新。

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

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

NoSQL

的一组数据访问技术的广义术语SQL语言作为读取和写入数据的主要机制。一些NoSQL技术充当键值存储,只接受单值读写;有些则放宽了限制方法;还有一些不需要预先计划模式.MySQL用户可以将nosql风格的处理与SQL操作相结合,以获得速度和简单性,以获得灵活性和便捷性memcachedAPI直接访问某些MySQL表。的memcached接口InnoDB表在MySQL 5.6及更高版本可用;看到memcached接口NDB表在NDB Cluster 7.2及更高版本中可用;看到NDB集群的memcache API(不再支持)

另请参阅InnoDBmemcached模式SQL

非空约束

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

另请参阅约束主键参照完整性

的特殊价值SQL,表示没有数据。任何涉及a的算术运算或相等检验价值,反过来又产生了结果。(因此它类似于IEEE浮点概念的NaN,不是一个数字)。任何汇总计算,如AVG ()忽略了行值,当确定要除的行数时。唯一有效的测试values使用SQL习惯用法为空不是零

价值观在其中发挥了作用指数操作,因为为了性能,数据库必须最小化跟踪丢失数据值的开销。通常情况下,值不存储在索引中,因为使用标准比较运算符测试索引列的查询永远无法将行与值。出于同样的原因,惟一索引不能阻止值;这些值没有在索引中表示。声明一个非空列上的约束确保索引中没有遗漏任何行,从而实现更好的查询优化(准确计数行和估计是否使用索引)。

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

尽管Oracle数据库允许值将与字符串连接,InnoDB将此类操作的结果处理为

另请参阅指数主键SQL

O

.OPT文件

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

另请参阅MySQL企业备份mysqlbackup命令

ODBC

开放数据库连接的缩写,一个行业标准API。通常用于基于windows的服务器或需要ODBC与MySQL通信的应用程序。MySQL ODBC驱动程序被调用连接器/ ODBC

另请参阅连接器/ ODBC

线下列

包含可变长度数据的列(如而且VARCHAR)太长了,装不下b -树页面。数据存储在溢出页.的动态对于这种存储,行格式比旧格式更有效紧凑的行格式。

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

OLTP

缩写联机事务处理.一个数据库系统,或一个数据库应用程序,它运行一个具有多个交易,经常写入和读取数据,通常一次只影响少量数据。例如,航空公司预订系统或处理银行存款的应用程序。数据可能被组织在归一化形成一种平衡DML(插入/更新/删除)效率和查询效率。与数据仓库

与它的行级锁而且事务能力,InnoDB是OLTP应用程序中MySQL表的理想存储引擎。

另请参阅数据仓库DMLInnoDB查询行锁事务

在线

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

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

另请参阅DDL快速创建索引热备份在线DDL热备份

在线DDL

的性能、并发性和可用性改进的特性InnoDB表在DDL(主要是ALTER TABLE)操作。看到ALTER TABLE正在进行中。该操作可以在没有表拷贝的情况下执行,也可以使用特别优化的表拷贝类型执行。本地操作的DML日志空间使用情况由innodb_online_alter_log_max_size配置选项。

该特性是对的增强快速创建索引MySQL 5.5中的特性。

另请参阅DDL快速创建索引在线

乐观

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

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

与乐观策略相反的是悲观一种是对系统进行优化,以处理不可靠且经常失败的操作。这种方法在数据库系统中很少见,因为要考虑选择可靠的硬件、网络和算法。

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

优化器

决定最好的MySQL组件索引而且加入命令用于a查询,根据相关的特征和数据分布

另请参阅指数加入查询表格

选项

MySQL的配置参数,可以存储在选择文件或者在命令行上传递。

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

另请参阅InnoDB选项选择文件

选择文件

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

另请参阅配置文件my.cnfmy.ini选项

溢出页

单独分配磁盘页面包含可变长度列(例如而且VARCHAR),它们太长了,以致于装不下b -树页面。相关的列称为线下列

另请参阅b -树线下列页面

P

.par文件

包含分区定义的文件。控件生成的备份中包含具有此扩展名的文件mysqlbackup命令的MySQL企业备份产品。

引入本地分区支持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吞吐量程度上在一个时间。

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

另请参阅缓冲池紧凑行格式压缩行格式数据文件程度上页面大小

页面干净

一个InnoDB背景线程脏页缓冲池.在MySQL 5.6之前,此活动由掌握线程.控件控制页清理器线程的数量innodb_page_cleaners配置选项,在MySQL 5.7.4中引入。

另请参阅缓冲池脏页冲洗掌握线程线程

页面大小

对于MySQL 5.5以下的版本,每个版本的大小InnoDB页面固定为16千字节。该值表示一个平衡:大到足以容纳大多数行的数据,但又小到可以将不需要的数据传输到内存的性能开销最小化。不测试或不支持其他值。

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

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

较小的页面大小可以帮助使用小块大小的存储设备的性能,特别是用于固态硬盘设备disk-bound工作负载,例如forOLTP应用程序。随着单个行被更新,复制到内存、写入磁盘、重新组织、锁定等等的数据会减少。

另请参阅disk-boundfile-per-table一般的表空间实例OLTP页面固态硬盘系统表空间表空间

父表

桌子在一个外键控件中指向的初始列值子表.删除或更新父表中的行的结果取决于在更新而且在删除子句在外键定义中。可以依次自动删除或更新子表中具有相应值的行,或者将那些列设置为否则手术就会被阻止。

另请参阅子表外键

部分备份

一个备份它包含了一些或者MySQL实例中的一些数据库。与完全备份

另请参阅备份完全备份表格

部分指标

一个指数只表示列值的一部分,通常是前N个字符前缀)VARCHAR价值。

另请参阅指数指数的前缀

部分信任

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

另请参阅连接器/净

性能模式

performance_schemaschema,在MySQL 5.5及以上版本中,提供了一组表,您可以通过查询这些表来获得关于MySQL服务器许多内部部件的性能特征的详细信息。看到INFORMATION_SCHEMA门闩互斥锁rw-lock

Perl

一种植根于Unix脚本和报表生成的编程语言。集成高性能正则表达式和文件I/O。可通过存储库(如CPAN)获得的可重用模块的大型集合。

另请参阅Perl API

Perl API

一个开源的API的MySQL应用程序Perl语言。实现通过DBI而且DBD:: mysql模块。有关详细信息,请参见APIPerl

持续的统计数据

存储功能指数统计数据InnoDB在磁盘上,提供更好的服务计划稳定查询.有关更多信息,请参见指数优化器计划稳定查询表格

悲观

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

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

另请参阅死锁锁定乐观

幻影

出现在查询的结果集中,但不在较早查询的结果集中的行。例如,如果一个查询在事务,同时,在插入新行或更新行后提交另一个事务,以便与在哪里子句。

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

在不同的隔离级别方法阻止幻像读取可串行化的阅读级别,并允许可重复读取一致的阅读,读未提交的水平。

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

PHP

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

MySQL应用程序是使用PHP api.可重用模块可以写入C并从PHP调用。

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

另请参阅ASP.netCPHP API

PHP API

几个api可以在PHP语言:原来的MySQL API (MysqlMySQL的改进扩展(Mysqli) MySQL本地驱动程序(Mysqlnd) MySQL函数(PDO_MYSQL),连接器/ PHP。有关详细信息,请参见MySQL和PHP

另请参阅APIPHP

物理

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

另请参阅逻辑物理备份

物理备份

一个备份它复制实际的数据文件。例如,mysqlbackup命令的MySQL企业备份产品生成物理备份,因为其输出包含可直接由mysqld服务器,导致速度更快恢复操作。与逻辑备份

另请参阅备份逻辑备份MySQL企业备份恢复

PITR

缩写时间点恢复

另请参阅时间点恢复

计划稳定

的属性查询执行计划,其中优化器每次都对给定的对象做出相同的选择查询,这样性能是一致的和可预测的。

另请参阅查询查询执行计划

时间点恢复

恢复的过程备份在特定日期和时间重新创建数据库的状态。常用的缩写PITR.由于指定的时间不太可能与备份的时间完全对应,因此该技术通常需要将物理备份和一个逻辑备份.例如,使用MySQL企业备份产品,则恢复在指定时间点之前进行的最后一次备份,然后从二进制日志备份时间与PITR时间之间。

另请参阅备份二进制日志逻辑备份MySQL企业备份物理备份

港口

数据库服务器监听的TCP/IP套接字的编号,用于建立连接.常与a一起指定宿主.根据网络加密的使用情况,可能有一个端口用于未加密的通信,另一个端口用于SSL连接。

另请参阅连接宿主SSL

前缀

看到指数的前缀

准备备份

生成的一组备份文件MySQL企业备份产品,经过所有阶段的应用二进制日志而且增量备份是完成了。生成的文件已经准备好了恢复.在应用步骤之前,这些文件称为原始备份

另请参阅二进制日志热备份增量备份MySQL企业备份原始备份恢复

事先准备好的声明中

提前分析以确定有效执行计划的SQL语句。它可以多次执行,而不需要每次解析和分析的开销。控件中的文字可以替换为不同的值在哪里子句的每一次,通过使用占位符。这种替代技术提高了安全性,防止了某些类型的SQL注入攻击。还可以减少将返回值转换和复制到程序变量的开销。

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

另请参阅客户端预置语句连接器服务器端预置语句

主键

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

InnoDB要求每个表都有这样的索引(也称为聚集索引集群指数),并根据主键的列值组织表存储。

在选择主键值时,考虑使用任意值(a合成的关键)而不是依赖其他来源的值(a自然的关键).

另请参阅聚集索引指数自然的关键合成的关键

过程

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

另请参阅并发性线程

pseudo-record

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

另请参阅下确界记录锁定上确界记录

Pthreads

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

另请参阅互斥锁

清洗

由一个或多个独立的后台线程(由innodb_purge_threads),按照定期的时间表运行。清除解析和进程undo日志页面的历史列表用于删除标记为删除的群集索引记录和次要索引记录删除语句),不再需要MVCC回滚.在处理完撤销日志页后,清除将从历史列表中释放撤销日志页。

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

清除缓存

将更改存储到二级索引页的技术删除操作,在改变缓冲而不是立即写入更改,这样就可以执行物理写入以最小化随机I/O。(因为删除操作是一个两步的过程,所以这个操作缓冲写操作,写操作通常会清除先前标记为删除的索引记录。)这是一种改变缓冲;其余的是插入缓冲而且删除缓冲

另请参阅改变缓冲改变缓冲删除缓冲插入缓冲插入缓冲

清洗滞后

另一个名字是InnoDB历史列表.有关innodb_max_purge_lag配置选项。

另请参阅历史列表清洗

清洗线

一个线程InnoDB进程,专用于执行周期性的清洗操作。在MySQL 5.6及更高版本中,多个清除线程由innodb_purge_threads配置选项。

另请参阅清洗线程

Python

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

另请参阅MySQLdbPython API

Python API

另请参阅APIPython

查询

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

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

另请参阅DDLDML指数加入SQL表格

查询执行计划

优化器所做的关于如何执行的决策集查询最有效的,包括指数或要使用的索引,以及它们的顺序加入表。计划稳定涉及对给定查询一致地做出相同的选择。

另请参阅指数加入计划稳定查询

查询日志

看到通用查询日志

静默

为了减少数据库活动的数量,通常是为诸如ALTER TABLE,一个备份,或者一个关闭.可能需要做的事也可能不需要冲洗尽可能的,这样InnoDB不会继续执行后台I/O。

在MySQL 5.6及更高版本中,语法刷新表……用于出口将一些数据写入磁盘InnoDB这些表通过复制数据文件使备份这些表变得更简单。

另请参阅备份冲洗InnoDB关闭

R

r - tree

一种树形数据结构,用于对多维数据(如地理坐标、矩形或多边形)进行空间索引。

另请参阅b -树

突袭

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

另请参阅并发性

随机的潜水

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

另请参阅基数

原始备份

生成的初始备份文件集MySQL企业备份产品之前的变化体现在二进制日志和任何增量备份应用。在这个阶段,文件还没有准备好恢复.应用这些更改后,这些文件称为准备备份

另请参阅二进制日志热备份ibbackup_logfile增量备份MySQL企业备份准备备份恢复

读过承诺

一个隔离级别使用锁定战略上,放松了一些保护之间交易,以提高工作表现。事务不能看到来自其他事务的未提交数据,但可以看到在当前事务启动后由另一个事务提交的数据。因此,事务永远不会看到任何坏数据,但它所看到的数据可能在某种程度上取决于其他事务的时间。

当具有此隔离级别的事务执行时更新……在哪里删除……在哪里操作,其他事务可能需要等待。事务可以执行选择……更新,共享模式锁定不让其他事务等待的操作。

选择……为分享替换选择……共享模式锁定在MySQL 8.0.1,但是共享模式锁定保持向后兼容可用。

另请参阅隔离级别锁定可重复读取可序列化的事务

读现象

现象,比如脏读不可重复读,幻影当一个事务读取另一个事务已修改的数据时,可能发生读取。

另请参阅脏读不可重复读幻影

读未提交

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

另请参阅脏读隔离级别锁定事务

阅读观点

控件使用的内部快照MVCC的机制InnoDB.某些交易,取决于他们的隔离级别,查看事务(或在某些情况下,语句)启动时的数据值。使用读视图的隔离级别为可重复读取读过承诺,读未提交

另请参阅隔离级别MVCC读过承诺读未提交可重复读取事务

预读

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

另请参阅缓冲池程度上页面

只读事务

一个类型的事务可以进行优化InnoDB通过消除一些与创建阅读观点对于每个事务。只能执行非自读查询。它可以用语法显式地开始启动事务只读,或在一定条件下自动。看到非自读阅读观点事务

记录锁

一个SELECT c1 FROM t WHERE c1 = 10阻止任何其他事务插入、更新或删除值所在的行t.c1是10。与锁的差距而且第二个关键锁

另请参阅锁的差距第二个关键锁

重做

数据,以记录为单位,记录在重做日志InnoDB表。它是在崩溃恢复修正不完整写入的数据交易.不断增长的LSN值表示通过重做日志的累计重做数据量。

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

重做日志

期间使用的基于磁盘的数据结构崩溃恢复,纠正写不完整的数据交易.在正常操作期间,它对更改请求进行编码InnoDB表数据,它由SQL语句或通过NoSQL接口的低级API调用产生。未完成更新的修改数据文件在一个意想不到的关闭是自动重播。

重做日志在物理上表示为一组文件,通常命名为ib_logfile0而且ib_logfile1.重做日志中的数据按照受影响的记录进行编码;这些数据统称为重做.数据在重做日志中的传递表现为不断增加的LSN价值。在MySQL 5.6.3中,重做日志的最大大小从原来的4GB提高到512GB。

重做日志的磁盘布局受配置选项的影响innodb_log_file_sizeinnodb_log_group_home_dir,(很少)innodb_log_files_in_group.重做日志操作的性能也受到日志缓冲区,由innodb_log_buffer_size配置选项。

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

重做日志进行归档

一个InnoDB当启用时,按顺序将重做日志记录写入归档文件,以避免潜在的数据丢失,以免备份工具在备份操作进行时无法跟上重做日志生成的速度。有关更多信息,请参见重做日志

冗余行格式

最古老的InnoDB行格式.在MySQL 5.0.3之前,它是惟一可用的行格式InnoDB.从MySQL 5.0.3到MySQL 5.7.8,默认的行格式为紧凑的.从MySQL 5.7.9开始,默认的行格式是由innodb_default_row_format配置选项,该选项的默认设置为动态.您仍然可以指定冗余行格式,以便与旧版本兼容InnoDB表。

有关更多信息,请参见紧凑行格式动态行格式行格式

参照完整性

将数据始终保持在一致格式的技术哲学。的方法使不同表中的数据保持一致外键约束,它可以阻止更改的发生,或自动将这些更改传播到所有相关的表。相关机制包括唯一约束,以防止错误插入重复的值,以及非空约束,防止误插入空白值。

另请参阅外键约束非空约束唯一约束

关系

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

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

在数据库级别,这些关系通过SQL特性表示,例如在一个表中,唯一和非空约束外键,以及不同类型的连接操作。复杂的关系通常涉及多个表之间的数据分割。通常情况下,数据是如此归一化,这样一对多关系中的重复值只存储一次。

在数学环境中,数据库中的关系是由集合论推导出来的。例如,而且运营商的在哪里子句代表联合和交集的概念。

另请参阅约束外键归一化

相关性

全文搜索特征,表示搜索字符串与数据之间的相似性的数字全文索引.例如,当您搜索单个单词时,该单词通常与它在文本中出现多次的行更相关,而不是只出现一次的行。

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

可重复读取

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

当具有此隔离级别的事务执行时更新……在哪里删除……在哪里选择……更新,共享模式锁定操作,其他事务可能需要等待。

选择……为分享替换选择……共享模式锁定在MySQL 8.0.1,但是共享模式锁定保持向后兼容可用。

另请参阅一致的阅读隔离级别锁定幻影事务

曲目

剧目是一个用于字符集的术语。字符集集合是字符集中字符的集合。看到 副本

一个数据库服务器机在一个复制从另一个服务器接收更改的拓扑)并应用这些相同的更改。因此,它维护与源程序相同的内容,尽管它可能有些落后。

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

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

另请参阅DML复制服务器固态硬盘

复制

发送更改的实践,改为一个或多个副本,这样所有的数据库都有相同的数据。该技术有广泛的用途,例如负载平衡以获得更好的可伸缩性、灾难恢复以及测试软件升级和配置更改。更改可以通过调用的方法在数据库之间发送基于行的复制而且statement-based复制

另请参阅副本基于行的复制statement-based复制

恢复

将一组备份文件从MySQL企业备份产品已到位,供MySQL使用。此操作可用于修复已损坏的数据库、返回到较早的某个时间点或(在复制上下文)来建立一个新的副本.在MySQL企业备份产品,此操作由复制回去选择的mysqlbackup命令。

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

回滚

一个SQL语句结束事务,撤销事务所做的任何更改。它的反面是提交,这将使在事务中所做的任何更改永久化。

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

另请参阅自动提交提交SQL事务

回滚段

对象的存储区域undo日志.回滚段传统上驻留在系统表空间.从MySQL 5.6开始,回滚段可以驻留在撤消表空间.从MySQL 5.7开始,回滚段也被分配到全局临时表空间

另请参阅全局临时表空间系统表空间undo日志撤消表空间

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

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

另请参阅数据文件页面行格式表格

行格式

的磁盘存储格式一个InnoDB表格.作为InnoDB获得新的功能,例如压缩,引入了新的行格式,以支持由此产生的存储效率和性能的改进。

的行格式InnoDB表由ROW_FORMAT选项或由innodb_default_row_format配置选项(在MySQL 5.7.9中引入)。行格式包括冗余紧凑的压缩,动态.查询对象的行格式InnoDB表,问题显示表状态声明或查询InnoDB表元数据INFORMATION_SCHEMA

另请参阅紧凑行格式压缩行格式压缩动态行格式冗余行格式表格

行锁

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

表锁所使用的MyISAM,或在DDL上的操作InnoDB无法处理的桌子在线DDL;这些锁阻止了对表的并发访问。

另请参阅DDLDMLInnoDB锁定在线DDL表锁事务

基于行的复制

的一种形式复制事件从何处传播控件上的单个行指定如何更改副本.的所有设置都可以安全地使用innodb_autoinc_lock_mode选择。

另请参阅自动递增锁定innodb_autoinc_lock_mode副本复制statement-based复制

行级锁

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

另请参阅InnoDB锁定行锁表锁事务

Ruby

一种强调动态类型和面向对象编程的编程语言。有些语法是熟悉的Perl开发人员。有两种流行的方法Ruby api用于开发MySQL应用程序。(本手册不包括高级Ruby框架。)

另请参阅APIPerlRuby API

Ruby API

Ruby程序员可以使用两个api开发MySQL应用程序。MySQL/Ruby API是基于libmysqlclientAPI库。Ruby/MySQL API被编写成使用本机MySQL网络协议(本机驱动程序)。有关详细信息,请参见libmysqlRuby

rw-lock

底层对象InnoDB用于表示和强制共享访问到遵循某些规则的内存内部数据结构。与互斥锁,这InnoDB用于表示和强制对内部内存数据结构的独占访问。互斥锁和rw-锁统称为门闩

rw-lock类型包括s-locks(共享锁),独占锁(专用锁),sx-locks(shared-exclusive锁)。

  • 一个s锁提供对公共资源的读访问。

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

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

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

年代 SX X
年代 兼容的 兼容的 冲突
SX 兼容的 冲突 冲突
X 冲突 冲突 冲突

另请参阅门闩互斥锁性能模式

年代

保存点

保存点有助于实现嵌套交易.它们可用于为作为较大事务一部分的表上的操作提供作用域。例如,在预订系统中安排一次旅行可能涉及预订几个不同的航班;如果你想要的航班没有,你可以这样做回滚更改涉及预订这一段航程,而不回滚已成功预订的较早的航班。

另请参阅回滚事务

可伸缩性

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

另请参阅可用性向外扩展按比例增加

向外扩展

一种增加的技术可伸缩性通过增加新的服务器和更多的MySQL实例。例如,设置复制、NDB集群、连接池或其他将工作分散到一组服务器上的功能。与按比例增加

另请参阅可伸缩性按比例增加

按比例增加

一种增加的技术可伸缩性通过增加现有硬件或软件的容量。例如,增加服务器内存,调整内存相关参数,例如通过innodb_buffer_pool_size而且innodb_buffer_pool_instances.与向外扩展

另请参阅可伸缩性向外扩展

模式

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

在MySQL中,物理上是a模式是a的同义词数据库.您可以替换关键字模式而不是数据库在MySQL SQL语法中,例如使用创建模式而不是创建数据库

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

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

SDI

缩写序列化的字典信息

另请参阅序列化字典信息(SDI)

搜索索引

在MySQL中,全文搜索查询使用一种特殊的索引全文索引.在MySQL 5.6.4及以上版本,InnoDB而且MyISAM表都支持全文索引;以前,这些索引只能用于MyISAM表。

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

二级索引

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

辅助索引可用于满足只需要索引列中的值的查询。对于更复杂的查询,可以使用它来标识表中的相关行,然后通过使用聚集索引的查找来检索这些行。

创建和删除二级索引传统上涉及大量开销,因为要复制所有数据到InnoDB表格的快速创建索引特性使得两创建索引而且指数下降语句要快得多InnoDB二级索引。

另请参阅聚集索引快速创建索引指数

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

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

段随着数据的插入和删除而增大和缩小。当一个段需要更大的空间时,它就加长一个程度上(1兆字节)。类似地,当一个区段中的所有数据不再需要时,这个区段就会释放一个区段的空间。

另请参阅程度上file-per-table回滚段系统表空间表空间undo日志

选择性

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

另请参阅基数查询

semi-consistent读

用于。的一种读操作更新语句,那是一种组合读过承诺而且一致的阅读.当一个更新语句检查已锁定的行,InnoDB返回最新的提交版本给MySQL,以便MySQL可以确定行是否匹配在哪里的条件更新.如果行匹配(必须更新),MySQL将再次读取该行,这一次InnoDB要么锁定它,要么等待对它的锁定。这种类型的读操作只能在事务具有read COMMITTED时发生隔离级别

另请参阅一致的阅读隔离级别读过承诺

可序列化的

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

这是SQL标准指定的默认隔离级别。在实践中,很少需要这种严格程度,因此默认隔离级别为InnoDB其次是最严格的,可重复读取

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

序列化字典信息(SDI)

序列化形式的字典对象元数据。SDI存储在JSON格式。

从MySQL 8.0.3开始,所有版本中都包含SDIInnoDB临时表空间和撤销表空间文件除外的表空间文件。表空间文件中的SDI提供了元数据冗余。方法可以从表空间文件中提取字典对象元数据ibd2sdi实用程序,如果数据字典不可用。

对于一个MyISAM表中,SDI存储在.sdi架构目录中的元数据文件。需要一个SDI元数据文件来执行导入表操作。

另请参阅file-per-table一般的表空间系统表空间表空间

服务器

一种连续运行的程序,等待接收来自另一个程序的请求并对其采取行动客户端).因为通常整台计算机都专门用于运行一个或多个服务器程序(如数据库服务器、web服务器、应用程序服务器或这些程序的组合)服务器也可以指运行服务器软件的计算机。

另请参阅客户端mysqld

服务器端预置语句

一个事先准备好的声明中由MySQL服务器管理。从历史上看,服务器端准备好的语句会导致问题连接器/ J而且连接器/ PHP开发人员有时会使用客户端准备好的语句代替。在现代MySQL服务器版本中,为了性能、可伸缩性和内存效率,建议使用服务器端准备语句。

另请参阅客户端预置语句连接器/ J连接器/ PHP事先准备好的声明中

servlet

另请参阅连接器/ J

会议临时表空间

一个临时表空间存储用户创建的临时表方法创建的内部临时表优化器InnoDB配置为内部临时表的磁盘存储引擎。

另请参阅优化器临时表临时表空间

共享锁

一种允许其他交易读取被锁定的对象,并获取其上的其他共享锁,但不向其写入。相反的独占锁

另请参阅独占锁事务

共享表空间

另一种说法是系统表空间或者一个一般的表空间.MySQL 5.7中引入了通用表空间。一个共享表空间中可以驻留多个表。中只能驻留一个表file-per-table表空间。

另请参阅一般的表空间系统表空间

锋利的检查点

的过程冲洗磁盘上所有的某些部分包含重做项的缓冲池页重做日志.发生之前InnoDB重用日志文件的一部分;日志文件以循环的方式使用。通常发生在写密集型的情况下工作负载

另请参阅脏页冲洗重做日志工作负载

关闭

停止MySQL服务器的过程。默认情况下,该进程清理InnoDB表,因此InnoDB可以关闭,但很快又启动。如果您跳过清理操作,它就是要关闭但必须在下次重新启动期间执行清理操作。

的关机模式InnoDB是由innodb_fast_shutdown选择。

另请参阅快速关闭InnoDB缓慢关闭启动

奴隶

看到副本

慢速查询日志

一个类型的日志用于MySQL服务器处理的SQL语句的性能调优。日志信息以文件形式保存。您必须启用此功能才能使用它。您可以控制的类别SQL语句记录日志。有关更多信息,请参见通用查询日志日志

缓慢关闭

一个类型的关闭做额外的InnoDB完成前的冲洗操作。也被称为干净的关闭.由配置参数指定innodb_fast_shutdown = 0或命令集全球innodb_fast_shutdown = 0;.虽然关机本身可能需要更长的时间,但应该在后续启动时节省时间。

另请参阅干净的关闭快速关闭关闭

快照

特定时间的数据表示,即使发生了变化,该数据也保持不变承诺由其他交易.使用特定的隔离级别允许一致的读取

另请参阅提交一致的阅读隔离级别事务

排序缓冲区

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

中的数据库服务器机器复制处理初始的数据插入、更新和删除请求的场景。这些更改被传播到并在其他服务器上重复副本

另请参阅副本复制

空间ID

用于唯一标识InnoDB表空间在MySQL实例中。的空间ID系统表空间总是为零;这个ID适用于系统表空间或通用表空间中的所有表。每一个file-per-table表空间和一般的表空间有自己的空间ID。

在MySQL 5.6之前,这个硬编码的值很难移动InnoDBMySQL实例之间的表空间文件。从MySQL 5.6开始,您可以使用移动式表空间包含语句的特性刷新表……用于出口ALTER TABLE……丢弃表空间,ALTER TABLE……导入表空间.调整空间ID的信息传递在. cfg文件你把它和表空间一起复制。看到. cfg文件file-per-table一般的表空间.ibd文件系统表空间表空间移动式表空间

稀疏文件

通过将表示空块的元数据写入磁盘,而不是写入实际的空空间,从而更有效地使用文件系统空间的一种文件类型。的InnoDB透明页面压缩特性依赖于稀疏文件支持。有关更多信息,请参见孔冲孔透明页面压缩

自旋

一个类型的等待持续测试资源是否可用的操作。这种技术用于通常只持有很短一段时间的资源,在繁忙的循环而不是让线程休眠并执行上下文切换。如果资源在短时间内无法使用,则旋转循环停止,并使用另一种等待技术。

另请参阅门闩互斥锁等待

春天

一个基于java的应用程序框架,通过提供配置组件的方法来辅助应用程序设计。

另请参阅J2EE

SQL

结构化查询语言,是执行数据库操作的标准语言。通常被分为不同的类别DDLDML,查询.MySQL包括一些附加的语句类别,例如复制.看到DDLDML查询复制

SQLState

类定义的错误代码JDBC标准的,用于应用程序使用连接器/ J

另请参阅连接器/ JJDBC

固态硬盘

缩写固态驱动器.一种与传统硬盘驱动器具有不同性能特性的存储设备(硬盘驱动器):更小的存储容量,更快的随机读取,没有移动部件,并有许多影响写性能的考虑因素。它的性能特性会影响系统的吞吐量disk-bound工作负载。

另请参阅disk-bound硬盘驱动器

SSL

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

另请参阅密钥存储库信任存储库

启动

启动MySQL服务器的过程。通常由列在关闭

另请参阅关闭

声明拦截器

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

Java应用程序使用连接器/ J,设置这种类型的拦截器涉及实现com.mysql.jdbc.StatementInterceptorV2接口,并添加statementInterceptors财产连接字符串

Visual Studio应用程序使用连接器/净类中继承的类,设置这种类型的拦截器需要定义一个类BaseCommandInterceptor类,并将类名指定为连接字符串的一部分。

另请参阅命令拦截器连接字符串连接器/ J连接器/净拦截器JavaVisual Studio

statement-based复制

的一种形式复制SQL语句从并在副本.需要注意设置innodb_autoinc_lock_mode选项,以避免潜在的计时问题自动递增锁定

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

统计数据

每一项的估值InnoDB表格而且指数,用来构造高效的查询执行计划.的主要值基数(不同值的数量)和表行或索引项的总数。表的统计信息表示其中的数据主键索引。的统计数据二级索引表示该索引覆盖的行。

这些值是估计的,而不是精确地计算出来的,因为在任何时候都是不同的交易可以从同一个表中插入和删除行。若要避免频繁重新计算值,可以启用持续的统计数据,其中值存储在InnoDB系统表,并仅在发出分析表声明。

你可以控制方法计算统计信息时将处理值innodb_stats_method配置选项。

数据库对象和数据库活动的其他类型的统计信息可以通过INFORMATION_SCHEMA而且PERFORMANCE_SCHEMA表。

另请参阅基数指数INFORMATION_SCHEMA性能模式持续的统计数据主键查询执行计划二级索引表格事务

阻止

基于一个共同的词根词搜索单词的不同变体的能力,例如单数和复数,或者过去时、现在时和将来时动词。中目前支持此特性MyISAM全文搜索功能但不包含全文索引InnoDB表。

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

stopword

在一个全文索引一个被认为是普通的或微不足道的词,它被从字典中省略了搜索索引在搜索查询中被忽略。不同的配置设置控制停止字处理InnoDB而且MyISAM表。看到全文索引搜索索引

存储引擎

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

MySQL企业备份产品为备份进行了优化InnoDB表。它还可以备份由处理的表MyISAM和其他存储引擎。

另请参阅InnoDBMySQL企业备份表类型

存储生成的列

从列定义中包含的表达式计算其值的列。在插入或更新行时计算并存储列值。存储生成的列需要存储空间,可以建立索引。

虚拟生成列

另请参阅基列生成的列虚拟生成列

存储对象

存储程序或视图

存储程序

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

存储程序

存储过程或函数。

严格模式

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

MySQL也有严格模式。看到文件格式innodb_strict_mode行格式

子表

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

另请参阅缓冲池驱逐列表LRU

上确界记录

一个pseudo-record索引中,表示差距高于该指数的最大值。如果事务有这样的语句选择……从…WHERE col > 10 FOR UPDATE;,并且列中的最大值是20,它是最高记录上的一个锁,防止其他事务插入更大的值,如50、100等等。

另请参阅差距下确界记录pseudo-record

代理键

同义词的名字合成的关键

另请参阅合成的关键

合成的关键

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

也被称为代理键.与自然的关键

另请参阅自动递增自然的关键主键代理键

系统表空间

一个或多个数据文件(ibdata文件的元数据InnoDB对象的存储区域改变缓冲,doublewrite缓冲.的表和索引数据InnoDB如果表是在系统表空间中创建的,则使用file-per-table一般的表空间.系统表空间中的数据和元数据适用于所有表空间数据库在MySQL实例

在MySQL 5.6.7之前,默认是保留所有InnoDB系统表空间中的表和索引,经常导致这个文件变得非常大。因为系统表空间从不收缩,所以如果加载并删除大量临时数据,就会出现存储问题。在MySQL 8.0中,默认为file-per-table模式中,每个表及其关联索引存储在单独的.ibd文件.这个默认设置使它更容易使用InnoDB依赖于动态而且压缩行格式,如表压缩,高效存储线下列,以及大索引键前缀。

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

InnoDB介绍了MySQL 5.7.6中的通用表空间,它也表示为.ibd文件。通用表空间是使用创建表空间语法。它们可以在数据目录之外创建,能够保存多个表,并支持所有行格式的表。

另请参阅改变缓冲压缩数据字典数据库doublewrite缓冲动态行格式file-per-table一般的表空间.ibd文件ibdata文件innodb_file_per_table实例MySQL企业备份线下列表空间undo日志

T

表格

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

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

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

  • 一个file-per-table表空间,由个体组成.ibd文件

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

.ibd数据文件包含表和指数数据。

InnoDB在每个表文件表空间中创建的表可以使用动态压缩行格式。这些行格式支持InnoDB等特性压缩,高效存储线下列,以及大索引键前缀。一般表空间支持所有行格式。

系统表空间支持使用冗余紧凑的,动态行格式。的系统表空间支持动态在MySQL 5.7.6中增加了行格式。

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

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

表锁

锁:阻止任何其他锁的锁事务从访问表。InnoDB通过使用诸如在线DDL行锁而且一致的读取进行处理DML语句和查询.方法可以通过SQL创建这样的锁锁表声明;从其他数据库系统或MySQL存储引擎迁移的步骤之一是在实际情况下删除这样的语句。

另请参阅一致的阅读DML锁定在线DDL查询行锁表格事务

表扫描

看到全表扫描

表统计信息

看到统计数据

表类型

过时的同义词存储引擎.我们将InnoDB表,MyISAM表,等等。

另请参阅InnoDB存储引擎

表空间

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

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

innodb_file_per_table选项,在MySQL 5.6及更高版本中默认启用,它允许在自己的表空间中创建表。的高效存储等特性线下列、表压缩和可迁移表空间。看到InnoDB介绍了MySQL 5.7.6中的通用表空间。通用表空间是使用创建表空间语法。它们可以在MySQL数据目录之外创建,能够保存多个表,并支持所有行格式的表。

MySQL NDB Cluster还将表分组到表空间中。看到压缩行格式数据字典数据文件file-per-table一般的表空间指数innodb_file_per_table系统表空间表格

Tcl

一种起源于Unix脚本世界的编程语言。有时通过编写的代码进行扩展Cc++,或Java.对于开源的TclAPIMySQL,请参阅API

临时表

一个表格它的数据不需要是真正永久的。例如,临时表可能用作复杂计算或转换中的中间结果的存储区域;这些中间数据在崩溃后不需要恢复。数据库产品可以采取各种捷径来提高对临时表的操作性能,比如不那么严格地将数据写入磁盘,以及采取其他措施在重新启动时保护数据。

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

另请参阅表格

临时表空间

InnoDB使用两种临时表空间。会议临时表空间存储用户创建的临时表和优化器创建的内部临时表。的全局临时表空间商店回滚段用于对用户创建的临时表所做的更改。

另请参阅全局临时表空间会议临时表空间临时表

文本集合

控件中包含的列的集合全文索引

另请参阅全文索引

线程

一种处理单元,通常比类更轻量级过程,考虑到并发性

另请参阅并发性掌握线程过程Pthreads

Tomcat

一个开源的J2EE应用服务器,实现Java Servlet和JavaServer Pages编程技术。由web服务器和Java servlet容器组成。与MySQL一起使用,通常与连接器/ J

另请参阅J2EE

撕页

由于I/O设备配置和硬件故障的组合而可能发生的错误情况。如果数据写入的块小于InnoDB页面大小(默认为16KB),写操作时出现硬件故障可能导致只将页面的一部分存储到磁盘。的InnoDBdoublewrite缓冲防范这种可能性。

另请参阅doublewrite缓冲

TPS

缩写交易每秒一种有时用于基准的测量单位。它的值取决于工作负载由特定的基准测试表示,并结合您控制的因素,如硬件容量和数据库配置。

另请参阅事务工作负载

事务

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

数据库事务,由InnoDB,其属性统称为首字母缩略词,用于原子性、一致性、隔离性和持久性。

另请参阅提交隔离级别回滚

事务ID

与它们相关联的内部字段.这个场在物理上被插入更新,删除要记录的操作事务已锁定行。

另请参阅隐式行锁事务

透明页面压缩

在MySQL 5.7.8中添加的一个特性,它允许页级压缩InnoDB中的表file-per-table表空间。参数来启用页压缩压缩属性与创建表ALTER TABLE.有关更多信息,请参见file-per-table孔冲孔稀疏文件

移动式表空间

一种允许表空间移动:从一个实例移动到另一个实例传统上,这是不可能的InnoDB表空间,因为所有的表数据都是系统表空间.在MySQL 5.6及更高版本中刷新表……用于出口语法准备一个InnoDB用于复制到另一个服务器的表;运行ALTER TABLE……丢弃表空间而且ALTER TABLE……导入表空间在另一个服务器上将复制的数据文件带到另一个实例中。一个单独的. cfg文件,与.ibd文件,用于更新表元数据(例如空间ID)作为导入表空间。看到. cfg文件.ibd文件空间ID系统表空间表空间

故障排除

确定问题根源的过程。一些用于解决MySQL问题的参考资料包括:

  • 截断

    一个DDL删除表的全部内容,同时保持表和相关索引不变的操作。与下降.虽然概念上它和a的结果是一样的删除声明中没有在哪里子句中,它在幕后的操作是不同的:InnoDB创建一个新的空表,删除旧表,然后重命名新表以取代旧表。因为这是一个DDL操作,所以不能这样做回滚

    如果被截断的表包含外键在引用另一个表时,截断操作使用较慢的操作方法,每次删除一行,以便在需要时删除被引用表中的相应行在级联删除条款。(MySQL 5.5及更高版本不允许这种较慢的截断形式,如果涉及外键,则返回错误。在本例中,使用删除语句代替。

    另请参阅DDL下降外键回滚

    信任存储库

    另请参阅SSL

    元组

    一种技术术语,指一组有序的元素。它是一个抽象的概念,在数据库理论的正式讨论中使用。在数据库字段中,元组通常由表行的列表示。它们也可以由查询的结果集表示,例如,只检索表的某些列的查询,或从连接表中检索列的查询。

    另请参阅光标

    两阶段提交

    分布式数据库的一部分的操作事务下,XA规范。(有时缩写为2PC。)当多个数据库参与事务时,要么所有数据库提交更改,或者所有数据库回滚更改。

    另请参阅提交回滚事务XA

U

撤销

在整个生命周期中维护的数据事务,记录所有更改,以便在发生回滚操作。它储存在undo日志要么在系统表空间(在MySQL 5.7或更早版本中)或单独撤消表空间.从MySQL 8.0开始,undo日志默认位于undo表空间中。

另请参阅回滚回滚段系统表空间事务undo日志撤消表空间

撤销缓冲区

看到undo日志

undo日志

一种存储活动修改的数据副本的存储区域交易.如果另一个事务需要查看原始数据(作为对象的一部分)一致的阅读操作),则从该存储区域检索未修改的数据。

在MySQL 5.6和MySQL 5.7中,可以使用innodb_undo_tablespaces具有撤消日志的变量撤消表空间,该文件可放置在另一个存储设备上,例如固态硬盘.在MySQL 8.0中,undo日志位于初始化MySQL时创建的两个缺省undo表空间中,还可以使用以下命令创建其他undo表空间创建撤消表空间语法。

撤消日志被分成不同的部分插入撤销缓冲区更新撤销缓冲区

另请参阅一致的阅读回滚段固态硬盘系统表空间事务撤消表空间

undo日志部分

的集合undo日志.Undo日志段存在于回滚段.一个撤消日志段可能包含来自多个事务的撤消日志。一个undo日志段一次只能被一个事务使用,但是可以在事务释放后重用提交回滚.也可以被称为撤销段

另请参阅提交回滚回滚段undo日志

撤消表空间

撤消表空间包含undo日志.撤消日志存在于undo日志部分,它们包含在回滚段.回滚段通常位于系统表空间中。从MySQL 5.6开始,回滚段可以驻留在undo表空间中。在MySQL 5.6和MySQL 5.7中,undo表空间的数量由innodb_undo_tablespaces配置选项。在MySQL 8.0中,在初始化MySQL实例时创建了两个默认的undo表空间,并且可以使用以下命令创建其他的undo表空间创建撤消表空间语法。

有关更多信息,请参见回滚段系统表空间undo日志undo日志部分

Unicode

一种以灵活和标准化的方式支持国家字符、字符集、代码页和其他国际化方面的系统。

Unicode支持是ODBC标准。连接器/ ODBC5.1是一个Unicode驱动程序,而Connector/ODBC 3.51是一个ANSI司机。

另请参阅ANSI连接器/ ODBCODBC

唯一约束

一种约束断言列不能包含任何重复的值。而言,关系代数,它用于指定1对1的关系。为提高检查值是否可以插入(即值在列中不存在)的效率,底层的唯一索引

另请参阅约束关系唯一索引

唯一索引

对象的列或列集合上的索引唯一约束.因为已知索引不包含任何重复值,所以某些类型的查找和计数操作比普通类型的索引更有效。大多数针对这种类型索引的查找只是为了确定某个值是否存在。索引中的值的数量与表中的行数相同,或者至少与相关列的具有非空值的行数相同。

改变缓冲优化不适用于唯一索引。作为一种解决方法,您可以临时设置unique_checks = 0在将大量数据加载到InnoDB表格

另请参阅基数改变缓冲唯一约束唯一键

唯一键

一组(一列或多列)唯一索引.当你可以定义一个在哪里条件,且查询可以使用相关联的惟一索引,则可以非常高效地执行查找和错误处理。

另请参阅基数唯一约束唯一索引

V

变长类型

可变长度的数据类型。VARCHARVARBINARY,而且文本类型是变长类型。

InnoDB将长度大于或等于768字节的定长字段处理为可存储的变长字段线下.例如,一个CHAR (255)如果字符集的最大字节长度大于3,列可以超过768字节,就像与utf8mb4

另请参阅线下列溢出页

受害者

事务这是自动选择的回滚当一个死锁检测到。InnoDB回滚更新行数最少的事务。

死锁检测可以使用innodb_deadlock_detect配置选项。

另请参阅死锁死锁检测innodb_lock_wait_timeout事务

视图

一个存储的查询,当调用它时产生一个结果集。视图充当一个虚拟表。

虚拟列

看到虚拟生成列

虚拟生成列

从列定义中包含的表达式计算其值的列。列值不被存储,而是在读取行时紧接在any之后计算之前触发器。虚拟生成的列不占用任何存储空间。InnoDB支持在虚拟生成的列上建立二级索引。

存储生成的列

另请参阅基列生成的列存储生成的列

虚拟指数

虚索引是二级索引在一个或多个虚拟生成的列或者是虚拟生成列与常规列或存储生成列的组合。有关更多信息,请参见二级索引存储生成的列虚拟生成列

Visual Studio

有关Visual Studio的支持版本,请参阅以下参考资料:

另请参阅连接器/ c++连接器/净

W

等待

当一个操作,如获取一个互斥锁,或门闩,不能立即完成,InnoDB停顿一下,再试一次。暂停机制非常复杂,因此该操作有自己的名称等待.使用内部线程的组合暂停单个线程InnoDB调度、操作系统wait ()电话,和短期自旋循环。

方法的输出显示INNODB状态命令或性能模式确定线程是否花费了太多的等待时间,如果是的话,如何进行改进并发性

另请参阅并发性门闩互斥锁性能模式自旋

热备份

一个备份在数据库运行时执行,但这会限制备份过程中的一些数据库操作。例如,表可能变成只读的。对于繁忙的应用程序和网站,您可能更喜欢热备份

另请参阅备份冷备份热备份

热身

在一个典型的工作负载在启动一段时间后,以便缓冲池其他的记忆区域会像正常情况下一样被填满。随着时间的推移,当MySQL服务器重新启动或承受新的工作负载时,这个过程自然会发生。

通常,在运行性能测试之前运行工作负载一段时间以预热缓冲池,以确保多次运行的结果一致;否则,在第一次运行时,性能可能会人为地降低。

在MySQL 5.6中,您可以通过启用innodb_buffer_pool_dump_at_shutdown而且innodb_buffer_pool_load_at_startup配置选项,以便在重新启动后将缓冲池的内容带回内存。这些选项在MySQL 5.7中默认是启用的。看到缓冲池工作负载

工作负载

的组合和体积SQL和其他数据库操作,由数据库应用程序在典型使用或高峰使用期间执行。可以在性能测试期间将数据库置于特定的工作负载下进行识别瓶颈,或在容量规划期间。

另请参阅瓶颈中央处理器受限disk-boundSQL

写相结合

时减少写操作的一种优化技术脏页刷新InnoDB缓冲池.如果页面中的一行被多次更新,或者同一页面上的多行被更新,那么所有这些更改都将在一次写操作中存储到数据文件中,而不是针对每个更改进行一次写操作。

另请参阅缓冲池脏页冲洗

X

XA

用于协调分布式的标准接口交易,允许多个数据库在维护的同时参与一个事务遵从性。有关详细信息,请参见二进制日志提交事务两阶段提交

Y

年轻的

的一个特征页面InnoDB缓冲池这意味着它最近被访问过,因此被移动到缓冲池数据结构中,因此它没有被访问刷新太快了LRU算法。这个术语在一些INFORMATION_SCHEMA与缓冲池相关的表的列名。

另请参阅缓冲池冲洗INFORMATION_SCHEMALRU页面