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 -树与二叉树不同,二叉树每个节点只能有2个子节点。

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

术语B-tree的使用旨在作为索引设计的一般类别的参考。MySQL存储引擎使用的b -树结构可能被认为是由于经典b -树设计中不存在的复杂而产生的变种。相关信息请参见InnoDB页面结构费尔头部份MySQL内部手册

另请参阅散列索引

引号的

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

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

另请参阅SQL

备份

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

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

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

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

基列

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

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

β

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

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

二进制日志

包含试图更改表数据的所有语句或行更改的记录的文件。二进制日志的内容可以被重播,以在数据库中生成最新的副本复制场景,或者在从备份恢复表数据后将数据库更新到最新。二进制日志功能可以打开和关闭,但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缓冲池,每个实例为1gb或更大。在从多个并发会话加载或在缓冲池中查找大量数据的系统上,使用多个缓冲池实例可以减少对管理缓冲池的数据结构的独占访问的争用。

另请参阅缓冲池

内置的

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

这种区别主要在MySQL 5.1中很重要,一个特性或错误修复可能适用于InnoDB Plugin,而不是内置的InnoDB,反之亦然。

另请参阅InnoDB

业务规则

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

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

另请参阅关系

C

. cfg文件

控件使用的元数据文件InnoDB移动式表空间特性。它由命令产生抽水马桶…用于出口,使一个或多个表处于一致状态,可以复制到另一个服务器。的. cfg文件与相应的文件一起复制.ibd文件,并用于调整内部的值.ibd文件,例如空间ID,在修改表…导入表空间的一步。

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

C

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

另请参阅C APIc++c#Java

C API

CAPI代码是和MySQL一起发布的。它被包括在libmysqlclient库并启用C访问数据库的程序。

另请参阅APIClibmysqlclient

c#

一种程序设计语言,结合了强类型和面向对象的特性,在微软系统中运行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中的配置选项。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企业备份产品生成每个表空间的压缩副本,将扩展名从.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企业备份产品中,通常使用两个配置文件:一个指定数据的来源和结构方式(可以是服务器的原始配置文件),另一个简化后的配置文件只包含一小组选项,指定备份数据的位置和结构方式。属性所使用的配置文件MySQL企业备份产品必须包含常规配置文件中通常没有的某些选项,因此您可能需要向现有配置文件中添加选项以供使用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连接器/ c++ 8.0开发指南

另请参阅客户端连接器JDBC

连接器/ J

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

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

连接器/净

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

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

连接器/ ODBC

MySQL ODBC驱动程序家族,使用行业标准开放数据库连接提供对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发起;还有很多其他原因。稳健的,自动的崩溃恢复InnoDB表确保在服务器重新启动时数据保持一致,而无需DBA做任何额外的工作。

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

崩溃恢复

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

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

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

CRUD

缩写创建、读取、更新、删除,是数据库应用程序中常见的操作序列。通常表示数据库使用相对简单(基本)的一类应用程序DDLDML而且查询语句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的用户来说,数据库是一个熟悉的概念。来自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缓冲池已经在内存中更新,其中的更改还没有写入(刷新)数据文件.a的反义词干净的页面

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

脏读

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

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

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

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

基于磁盘的

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

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

disk-bound

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

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

DML

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

的DML语句InnoDB表的上下文操作事务,所以他们的影响可以承诺回滚作为一个单一的单位

DDL而且DCL

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

文档id

InnoDB全文搜索特性,表中的一个特殊列,其中包含全文索引,以唯一地标识与每个文档相关联的文档ilist价值。它的名字是FTS_DOC_ID(大写)。列本身必须是Bigint unsigned not 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#开发人员。为了开源的埃菲尔铁塔API对于MySQL,请参见APIc#Java

嵌入式

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

另请参阅客户端libmysqld

错误日志

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

驱逐

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

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

异常拦截器

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

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

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

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

独占锁

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

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

程度上

一群页面在一个表空间.对于默认页面大小16KB,一个区段包含64页。在MySQL 5.6中,对象的页面大小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插件中引入的,现在是MySQL 5.5及更高版本的一部分,它可以加速数据库的创建InnoDB二级索引通过避免需要完全重写相关的表。加速也适用于删除二级索引。

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

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

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

快速关闭

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

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

文件格式

的文件格式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 BETWEEN 10 and 20 FOR UPDATE阻止其他事务将值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表来说,将它用作主键并不是一个有效的值。

H

散列索引

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

MySQL包含这种索引类型的变体自适应哈希索引,自动构造InnoDB表(如果需要的话)基于运行时条件。

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

硬盘驱动器

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

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

心跳

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

另请参阅复制

高水位线

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

另请参阅最低点

历史列表

一份交易计划处理的已删除标记记录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,被称为a原始备份,因为在备份操作期间发生的更改还没有合并。在执行应用步骤到原始备份文件,结果文件确实包括那些最终的数据更改,并被称为准备备份.在这个阶段,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未指定时,默认行为是创建单个自动扩展12MB数据文件命名为ibtmp1在数据目录中ibdata1

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

ib_logfile

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

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

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

ilist

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

另请参阅全文索引

隐式行锁

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

另请参阅行锁

内存数据库

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

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

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

增量备份

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

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

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

指数

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

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

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

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

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

索引缓存

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

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

指数条件下推

索引条件下推(ICP)是一种优化,推动部分在哪里属性中的字段可以对条件的部分进行计算,则将该条件的值降至存储引擎指数.可以减少ICP次数的1 / 2存储引擎必须访问基表和MySQL服务器必须访问存储引擎的次数。有关更多信息,请参见指数存储引擎

索引提示

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

另请参阅基数指数

指数的前缀

在一个指数这适用于多个列(称为a综合指数),即索引的首列或前列。引用复合索引的前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服务器库使得在一个数据库中运行一个功能齐全的MySQL服务器成为可能客户端应用程序。主要的好处是提高了嵌入式应用程序的速度和更简单的管理。你连接到libmysqld图书馆而不是libmysqlclient.这三个库之间的API是相同的。

另请参阅客户端嵌入式libmysqllibmysqlclient

生命周期的拦截器

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

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

列表

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

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

负载平衡

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

另请参阅连接器/ JJ2EE

本地主机

另请参阅连接

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

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

锁升级

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

另请参阅锁定行锁表锁

锁定模式

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

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

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

另请参阅意向锁锁定事务

锁定

保护……的制度事务查看或更改其他事务正在查询或更改的数据。的锁定策略必须平衡数据库操作的可靠性和一致性(原则)哲学),而不是良好的表现并发性.对锁定策略进行微调通常涉及选择隔离级别并确保所有数据库操作在该隔离级别下都是安全可靠的。

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

读锁

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

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

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

日志

InnoDB背景下,日志日志文件通常是指重做日志ib_logfileN文件。另一种类型InnoDBLog是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数据库中读取数据。现在,应用程序可以使用simplememcached协议,许多语言的客户端库支持,可以直接与MySQL服务器使用InnoDBNDB表。这些到MySQL表的NoSQL接口允许应用程序获得比直接发出SQL语句更高的读写性能,并且可以简化已经合并的系统的应用程序逻辑和部署配置memcached用于内存缓存。

memcached接口InnoDBtable在MySQL 5.6及更高版本中可用;看到memcached接口NDBtable在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

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

另请参阅mysqldSQL

MySQL企业备份

一种经过许可的产品热备份MySQL数据库。它在备份时提供了最高的效率和灵活性InnoDB表,但也可以备份MyISAM还有其他种类的桌子。

另请参阅热备份InnoDB

mysqlbackup命令

的命令行工具MySQL企业备份产品。它执行热备份操作InnoDB表和MyISAM还有其他种类的桌子。看到热备份MySQL企业备份热备份

mysqlclient

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

另请参阅libmysqlclient

mysqld

mysqld,也被称为MySQL服务器,是一个单一的多线程程序,它完成了MySQL安装中的大部分工作。它不会产生额外的进程。MySQL服务器管理对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

自然的关键

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

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

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

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

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

邻居页面

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

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

第二个关键锁

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

非自读

一个查询不使用选择……更新选择……共享模式锁定条款。类中允许全局表的惟一一种查询只读事务.a的反义词读锁.看到选择……为分享替换选择……共享模式锁定在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接口InnoDBtable在MySQL 5.6及更高版本中可用;看到memcached接口NDBtable在NDB Cluster 7.2及更高版本中可用;看到NDB集群的memcache接口(不再支持)

另请参阅InnoDBmemcached模式SQL

非空约束

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

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

中的特殊值。SQL,表示数据缺失。涉及a的算术运算或相等性检验价值,反过来产生一个结果。(因此,它类似于IEEE的NaN浮点概念,不是数字)。任何聚合计算,如AVG ()忽略包含值,当确定要除以多少行时。这是唯一适用于values使用SQL习语为空不是空的

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

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

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

另请参阅指数主键SQL

O

.OPT文件

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

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

ODBC

Open Database Connectivity的首字母缩写,一个行业标准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企业备份产品。

随着本地分区支持的引入InnoDBMySQL 5.7.6中的表.par不再为分区创建文件InnoDB表。分区MyISAM表格继续使用.par在MySQL 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页面固定为16kb。这个值表示一个平衡:足够大,可以容纳大多数行的数据,但又足够小,可以最小化将不需要的数据传输到内存的性能开销。不测试或不支持其他值。

从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工作量,比如OLTP应用程序。随着单个行的更新,将更少的数据复制到内存、写入磁盘、重新组织、锁定等等。

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

父表

a中的表外键对象中指向的初始列值子表.删除或更新父表中的行所产生的结果取决于在更新而且在删除子句中的外键定义。子表中具有相应值的行可以依次自动删除或更新,也可以将这些列设置为,否则手术就会被阻止。

另请参阅子表外键

部分备份

一个备份它包含了一些在MySQL数据库中,或者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应用程序的一种编程语言。这些代码通常以块的形式嵌入到网页的源代码中,并在由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),以及Connector/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表通过消除一些簿记所涉及的创建阅读观点每笔交易。只能执行非自读查询。它可以显式地从语法开始启动事务只读,或在一定条件下自动。看到非自读阅读观点事务

记录锁

一个WHERE c = 10 FOR UPDATE;的值所在的行,阻止任何其他事务插入、更新或删除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之前,它是MySQL中唯一可用的行格式InnoDB.从MySQL 5.0.3到MySQL 5.7.8,默认的行格式为紧凑的.从MySQL 5.7.9开始,默认的行格式由innodb_default_row_format配置选项,默认设置为动态.您仍然可以指定冗余与旧版本兼容的行格式InnoDB表。

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

参照完整性

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

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

关系

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

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

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

在数学上下文中,数据库中的关系是由集合论推导出来的。例如,而且a的操作符在哪里子句代表联合和交集的概念。

另请参阅约束外键归一化

相关性

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

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

可重复读取

默认的隔离级别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-锁类型的兼容性。

年代 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语法中,例如using创建模式而不是创建数据库

其他一些数据库产品进行了区分。例如,在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之前,系统表空间也包括一个或多个回滚段用于undo日志

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

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

选择性

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

另请参阅基数查询

semi-consistent读

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

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

可序列化的

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

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

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

序列化字典信息(SDI)

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

从MySQL 8.0.3开始,SDI就已经出现在所有版本中了InnoDB除临时表空间和undo表空间文件外的表空间文件。在表空间文件中存在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可以关机,但很快就会启动。如果您跳过清理操作,它就是关闭,但必须在下次重新启动时执行清除操作。

的关机模式InnoDBinnodb_fast_shutdown选择。

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

奴隶

看到副本

慢查询日志

一种日志用于MySQL服务器处理的SQL语句的性能调优。日志信息保存在文件中。您必须启用此特性才能使用它。你控制哪些类别SQL语句被记录。有关更多信息,请参见一般查询日志日志

缓慢关闭

一种关闭这是额外的InnoDB完成前的冲洗操作。也被称为干净的关闭.由配置参数指定innodb_fast_shutdown = 0或者命令SET GLOBAL 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开始,可以在实例之间复制表空间文件移动式表空间包含语句的特性抽水马桶…用于出口修改表…丢弃表空间,修改表…导入表空间.调整空间ID需要的信息在. cfg文件和表空间一起复制。看到. cfg文件file-per-table一般的表空间.ibd文件系统表空间表空间移动式表空间

稀疏文件

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

自旋

一种等待持续测试资源是否可用的操作。此技术用于通常只持有很短时间的资源,在这种情况下,在数据库中等待效率更高繁忙的循环而不是让线程进入睡眠状态并执行上下文切换。如果资源在短时间内没有变为可用,旋转循环将停止,并使用另一种等待技术。

另请参阅门闩互斥锁等待

春天

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

另请参阅J2EE

SQL

结构化查询语言是执行数据库操作的标准语言。常分为几类DDLDML,查询.MySQL包含一些额外的语句类别,例如复制.看到DDLDML查询复制

SQLState

类定义的错误代码JDBC用于应用程序异常处理的标准连接器/ J

另请参阅连接器/ JJDBC

固态硬盘

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

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

SSL

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

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

启动

启动MySQL服务器的过程。通常由中列出的程序之一完成关闭

另请参阅关闭

声明拦截器

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

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表格而且指数,用于构造高效查询执行计划.主要值为基数(不同值的数目)和表行或索引项的总数。表的统计信息表示表中的数据主键索引。a的统计数据二级索引表示该索引覆盖的行。

这些值是估计的,而不是精确计算的,因为在任何时候都是不同的交易可以从同一个表中插入和删除行。为了避免频繁地重新计算值,可以启用持续的统计数据,其中存储值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

代理键

同义词合成的关键

另请参阅合成的关键

合成的关键

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

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

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

系统表空间

一个或多个数据文件(ibdata文件)的元数据InnoDB对象的存储区域改变缓冲,以及doublewrite缓冲.它还可以包含的表和索引数据InnoDB如果表是在系统表空间中创建的,而不是file-per-table一般的表空间.system表空间中的数据和元数据适用于所有表空间数据库在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功能包括压缩,高效存储线下列,以及较大的索引键前缀。一般表空间支持所有行格式。

system表空间支持使用冗余紧凑的,动态行格式。的系统表空间支持动态行格式是在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集群也将其表分组到表空间中。看到压缩行格式数据字典数据文件file-per-table一般的表空间指数innodb_file_per_table系统表空间表格

Tcl

起源于Unix脚本世界的一种编程语言。有时由编写的代码扩展Cc++,或Java.对于开源TclAPI对于MySQL,请参见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表,用于复制到另一个服务器;运行修改表…丢弃表空间而且修改表…导入表空间在另一个服务器上,将复制的数据文件放到另一个实例中。一个单独的. cfg文件,与.ibd文件,用于更新表元数据(例如空间ID)作为导入的表空间。看到. cfg文件.ibd文件空间ID系统表空间表空间

故障排除

确定问题根源的过程。一些用于解决MySQL问题的资源包括:

  • 截断

    一个DDL删除表的全部内容,同时保持表和相关索引不变的操作。与下降.尽管在概念上它和a的结果是一样的删除带有no的语句在哪里子句,它在幕后的操作方式不同:InnoDB创建一个新的空表,删除旧表,然后重命名新表以取代旧表。因为这是一个DDL操作,所以不能这样做回滚

    如果被截断的表包含外键如果引用另一个表,则截断操作使用较慢的操作方法,每次删除一行,以便在需要时删除所引用表中的相应行删除级联条款。(MySQL 5.5及更高版本不允许这种较慢的截断形式,如果涉及外键则返回错误。在本例中,使用a删除语句代替。

    另请参阅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日志.撤销日志段存在于回滚段.一个撤销日志段可能包含多个事务的撤销日志。撤销日志段一次只能被一个事务使用,但可以在事务释放后重新使用提交回滚.也可以被称为an撤销段

另请参阅提交回滚回滚段undo日志

撤消表空间

undo表空间包含undo日志.撤消日志存在于撤消日志段,包含在回滚段.回滚段通常驻留在系统表空间中。从MySQL 5.6开始,回滚段可以驻留在undo表空间中。在MySQL 5.6和MySQL 5.7中,undo表空间的数量由innodb_undo_tablespaces配置选项。在MySQL 8.0中,初始化MySQL实例时创建了两个默认的undo表空间,并且可以使用创建undo表空间语法。

有关更多信息,请参见回滚段系统表空间undo日志撤消日志段

Unicode

以灵活和标准化的方式支持国家字符、字符集、代码页和其他国际化方面的系统。

Unicode支持是ODBC标准。连接器/ ODBC5.1是一个Unicode驱动程序,而Connector/ODBC 3.51是一个Unicode驱动程序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事务

视图

在调用时产生结果集的存储查询。视图充当一个虚拟表。

虚拟列

看到虚拟生成列

虚拟生成列

从列定义中包含的表达式计算其值的列。列值不被存储,而是在读取行时计算,就在任何值之后之前触发器。虚拟生成的列不占用存储空间。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页面