资讯专栏INFORMATION COLUMN

MySQL™ 参考手册(MySQL术语表A)

aboutU / 1356人阅读

MySQL术语表A

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

.ARM文件

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

.ARZ文件

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

ACID

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

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

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

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

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

自适应冲洗

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

自适应哈希索引

InnoDB表的优化,通过在内存中构造一个哈希索引,可以使用=IN操作符加速查找,MySQL监视对InnoDB表的索引搜索,如果查询可以从哈希索引中获益,它会为经常访问的索引页自动构建一个索引。从某种意义上说,自适应哈希索引在运行时配置MySQL以利用充足的主内存,这更接近于主内存数据库的体系结构,这个特性由innodb_adaptive_hash_index配置选项控制,由于该特性对某些工作负载有好处,但对其他工作负载没有好处,而且用于哈希索引的内存保留在缓冲池中,因此通常应该使用启用和禁用该特性来进行基准测试。

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

在MySQL 5.6或更高版本中,利用InnoDB表快速单值查找的另一种方法是使用InnoDB memcached插件。

AIO

异步I/O的缩写,你可能在InnoDB消息或关键字中看到这个缩略词。

应用程序编程接口(API)

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

apply

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

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

异步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。

原子

在SQL上下文中,事务是工作单元,要么完全成功(提交时),要么完全无效(回滚时),事务不可分割(“atomic”)属性是ACID中的“A”。

原子DDL

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

原子指令

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

自动递增

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

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

对于基于语句的复制,自动递增列可能会有问题,因为由于时间问题,在从服务器上重新执行语句可能不会生成与主服务器上相同的列值集。当你有一个自动递增的主键时,你只能在设置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包含优化和innodb_autoinc_lock_mode选项,这样你就可以在可预测的自动递增值序列和插入操作的最大并发性之间进行配置和优化平衡。

自动提交

在每个SQL语句之后引发提交操作的设置,不推荐使用这种模式来处理具有跨多个语句的事务的InnoDB表。它可以帮助InnoDB表上的只读事务的性能,尤其是在MySQL 5.6.4及以上版本中,它将锁定和生成撤销数据带来的开销降到最低,它也适用于处理不适用事务的MyISAM表。

可用性

能够处理主机上的故障,并在必要时从故障中恢复,包括MySQL、操作系统或可能导致停机的硬件和维护活动的故障,通常,可伸缩性是大规模部署的关键方面。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49346.html

相关文章

  • MySQL参考手册(目录)

    MySQL™ 参考手册 此文档分别记录了MySQL 8.0到8.0.19,以及基于NDB 8.0版到8.0.18-ndb-8.0.18的NDB Cluster版本。它可能包括尚未发布的MySQL版本功能的文档,有关已发布的版本的信息,请参阅MySQL 8.0发行说明。 MySQL 8.0的特性。本手册描述的特性没有包含在每个MySQL 8.0版本中,此类特性可能不包含在许可给你的MySQL 8.0...

    habren 评论0 收藏0
  • MySQL参考手册(使用多个

    使用多个表 pet表记录你拥有的宠物,如果你想记录关于他们的其他信息,比如他们生活中的事件,比如去看兽医或者当幼崽出生时,需要另一张表,这张表应该是什么样的?它需要包含以下信息: 宠物名称,以便你了解每个事件所属的动物。 日期,以便你知道事件发生的时间。 描述事件的字段。 如果你希望能够对事件进行分类,则有事件类型字段。 考虑到这些因素,event表的CREATE TABLE语句可能如下所示:...

    沈建明 评论0 收藏0
  • MySQL参考手册MySQL程序概述)

    MySQL程序概述 MySQL安装中有许多不同的程序,本节将对它们进行简要概述,除了NDB集群程序之外,后面的部分提供了每个程序的更详细描述,每个程序的描述都指示其调用语法及其支持的选项。 大多数MySQL发行版都包含所有这些程序,除了那些特定于平台的程序(例如,服务器启动脚本不用于Windows)。RPM发行版更加专门化,一个RPM用于服务器,另一个RPM用于客户机程序,等等。可能你的发行版不包...

    ctriptech 评论0 收藏0
  • MySQL参考手册(获取有关数据库和的信息)

    获取有关数据库和表的信息 如果你忘记了数据库或表的名称,或者给定表的结构是什么(例如,它的列被称为什么),该怎么办?MySQL通过几个语句来解决这个问题,这些语句提供有关它支持的数据库和表的信息。 你之前已经看过SHOW DATABASES,它列出了服务器管理的数据库,要找出当前选择的数据库,请使用DATABASE()函数: mysql> SELECT DATABASE(); +---------...

    legendaryedu 评论0 收藏0
  • MySQL参考手册(常见查询的示例)

    常见查询的示例 以下是如何解决MySQL的一些常见问题的示例。 一些示例使用shop表为某些商人(经销商)保留每件商品的价格(商品编号),假设每个商人的每件商品只有一个固定价格,那么(article、dealer)是记录的主键。 启动命令行工具mysql并选择一个数据库: shell> mysql your-database-name 要创建和填充示例表,请使用以下语句: CREATE TABLE...

    Terry_Tai 评论0 收藏0

发表评论

0条评论

aboutU

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<