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,缩写为AIO。
InnoDB
对某些操作使用这种类型的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、操作系统或可能导致停机的硬件和维护活动的故障,通常,可伸缩性是大规模部署的关键方面。