MySQL Glossary
MySQL 8.4 Reference Manual Including MySQL NDB Cluster 8.4
These terms are commonly used in information about the MySQL database server.
A
.ARM file
: Metadata for ARCHIVE tables. Contrast with
.ARZ file. Files with this
extension are always included in backups produced by the
mysqlbackup command of the
MySQL Enterprise Backup product.
See Also [.ARZ file](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_arz_file), [MySQL Enterprise Backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysql_enterprise_backup), [mysqlbackup command](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysqlbackup_command).
.ARZ file
: Data for ARCHIVE tables. Contrast with
.ARM file. Files with this
extension are always included in backups produced by the
mysqlbackup command of the
MySQL Enterprise Backup product.
See Also [.ARM file](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_arm_file), [MySQL Enterprise Backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysql_enterprise_backup), [mysqlbackup command](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysqlbackup_command).
ACID
: An acronym standing for atomicity, consistency, isolation, and
durability. These properties are all desirable in a database
system, and are all closely tied to the notion of a
transaction. The transactional
features of InnoDB adhere to the ACID
principles.
Transactions are **atomic** units
of work that can be **committed**
or **rolled back**. When a
transaction makes multiple changes to the database, either all
the changes succeed when the transaction is committed, or all
the changes are undone when the transaction is rolled back.
The database remains in a consistent state at all times —
after each commit or rollback, and while transactions are in
progress. If related data is being updated across multiple
tables, queries see either all old values or all new values, not
a mix of old and new values.
Transactions are protected (isolated) from each other while they
are in progress; they cannot interfere with each other or see
each other's uncommitted data. This isolation is achieved
through the **locking** mechanism.
Experienced users can adjust the **isolation
level**, trading off less protection in favor of
increased performance and
**concurrency**, when they can be
sure that the transactions really do not interfere with each
other.
The results of transactions are durable: once a commit operation
succeeds, the changes made by that transaction are safe from
power failures, system crashes, race conditions, or other
potential dangers that many non-database applications are
vulnerable to. Durability typically involves writing to disk
storage, with a certain amount of redundancy to protect against
power failures or software crashes during write operations. (In
`InnoDB`, the **doublewrite
buffer** assists with durability.)
See Also [atomic](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_atomic), [commit](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_commit), [concurrency](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_concurrency), [doublewrite buffer](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_doublewrite_buffer), [isolation level](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_isolation_level), [locking](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_locking), [rollback](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_rollback), [transaction](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_transaction).
adaptive flushing : An algorithm for InnoDB tables that smooths out the I/O overhead introduced by checkpoints. Instead of flushing all modified pages from the buffer pool to the data files at once, MySQL periodically flushes small sets of modified pages. The adaptive flushing algorithm extends this process by estimating the optimal rate to perform these periodic flushes, based on the rate of flushing and how fast redo information is generated.
See Also [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool), [checkpoint](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_checkpoint), [data files](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_data_files), [flush](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_flush), [InnoDB](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_innodb), [page](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_page), [redo log](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_redo_log).
adaptive hash index
: An optimization for InnoDB tables that can
speed up lookups using = and
IN operators, by constructing a
hash index in memory. MySQL
monitors index searches for InnoDB tables,
and if queries could benefit from a hash index, it builds one
automatically for index pages
that are frequently accessed. In a sense, the adaptive hash
index configures MySQL at runtime to take advantage of ample
main memory, coming closer to the architecture of main-memory
databases. This feature is controlled by the
innodb_adaptive_hash_index
configuration option. Because this feature benefits some
workloads and not others, and the memory used for the hash index
is reserved in the buffer pool,
typically you should benchmark with this feature both enabled
and disabled.
The hash index is always built based on an existing
**B-tree** index on the table.
MySQL can build a hash index on a prefix of any length of the
key defined for the B-tree, depending on the pattern of searches
against the index. A hash index can be partial; the whole B-tree
index does not need to be cached in the buffer pool.
See Also [B-tree](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_b_tree), [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool), [hash index](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_hash_index), [page](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_page), [secondary index](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_secondary_index).
ADO.NET : An object-relational mapping (ORM) framework for applications built using .NET technologies such as ASP.NET. Such applications can interface with MySQL through the Connector/NET component.
See Also [.NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos__net), [ASP.net](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_asp_net), [Connector/NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector_net), [Mono](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mono), [Visual Studio](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_visual_studio).
AIO
: Acronym for asynchronous I/O.
You might see this acronym in InnoDB messages
or keywords.
See Also [asynchronous I/O](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_asynchronous_io).
ANSI : In ODBC, an alternative method of supporting character sets and other internationalization aspects. Contrast with Unicode. Connector/ODBC 3.51 is an ANSI driver, while Connector/ODBC 5.1 is a Unicode driver.
See Also [Connector/ODBC](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector_odbc), [ODBC](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_odbc), [Unicode](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_unicode).
API : APIs provide low-level access to the MySQL protocol and MySQL resources from client programs. Contrast with the higher-level access provided by a Connector.
See Also [C API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_c_api), [client](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_client), [connector](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector), [native C API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_native_c_api), [Perl API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_perl_api), [PHP API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_php_api), [Python API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_python_api), [Ruby API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ruby_api).
application programming interface (API) : A set of functions or procedures. An API provides a stable set of names and types for functions, procedures, parameters, and return values.
apply
: When a backup produced by the
MySQL Enterprise Backup product does not include
the most recent changes that occurred while the backup was
underway, the process of updating the backup files to include
those changes is known as the
apply step. It is specified by
the apply-log option of the
mysqlbackup command.
Before the changes are applied, we refer to the files as a
**raw backup**. After the changes
are applied, we refer to the files as a
**prepared backup**. The changes
are recorded in the
**ibbackup\_logfile** file; once the
apply step is finished, this file is no longer necessary.
See Also [hot backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_hot_backup), [ibbackup\_logfile](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ibbackup_logfile), [MySQL Enterprise Backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysql_enterprise_backup), [prepared backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_prepared_backup), [raw backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_raw_backup).
AS : A Kerberos authentication server. AS can also refer to the authentication service provided by an authentication server.
See Also [authentication server](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_authentication_server).
ASP.net : A framework for developing web-based applications using .NET technologies and languages. Such applications can interface with MySQL through the Connector/NET component.
Another technology for writing server-side web pages with MySQL
is **PHP**.
See Also [.NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos__net), [ADO.NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ado_net), [Connector/NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector_net), [Mono](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mono), [PHP](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_php), [Visual Studio](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_visual_studio).
assembly : A library of compiled code in a .NET system, accessed through Connector/NET. Stored in the GAC to allow versioning without naming conflicts.
See Also [.NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos__net), [GAC](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_gac).
asynchronous I/O
: A type of I/O operation that allows other processing to proceed
before the I/O is completed. Also known as
nonblocking I/O and abbreviated
as AIO.
InnoDB uses this type of I/O for certain
operations that can run in parallel without affecting the
reliability of the database, such as reading pages into the
buffer pool that have not
actually been requested, but might be needed soon.
Historically, `InnoDB` used asynchronous I/O on
Windows systems only. Starting with the InnoDB Plugin 1.1 and
MySQL 5.5, `InnoDB` uses asynchronous I/O on
Linux systems. This change introduces a dependency on
`libaio`. Asynchronous I/O on Linux systems is
configured using the
[`innodb_use_native_aio`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-parameters.html#sysvar_innodb_use_native_aio) option,
which is enabled by default. On other Unix-like systems, InnoDB
uses synchronous I/O only.
See Also [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool), [nonblocking I/O](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_non_blocking_io).
atomic : In the SQL context, transactions are units of work that either succeed entirely (when committed) or have no effect at all (when rolled back). The indivisible (“atomic”) property of transactions is the “A” in the acronym ACID.
See Also [ACID](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_acid), [commit](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_commit), [rollback](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_rollback), [transaction](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_transaction).
atomic DDL : An atomic DDL statement is one that combines the data dictionary updates, storage engine operations, and binary log writes associated with a DDL operation into a single, atomic transaction. The transaction is either fully committed or rolled back, even if the server halts during the operation. Atomic DDL support was added in MySQL 8.0. For more information, see Section 15.1.1, “Atomic Data Definition Statement Support”.
See Also [binary log](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_binary_log), [data dictionary](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_data_dictionary), [DDL](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ddl), [storage engine](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_storage_engine).
atomic instruction : Special instructions provided by the CPU, to ensure that critical low-level operations cannot be interrupted.
authentication server : In Kerberos, a service that provides the initial ticket needed to obtain a ticket-granting ticket (TGT) that is needed to obtain other tickets from the ticket-granting server (TGS). The authentication server (AS) combined with a TGS make up a key distribution center (KDC).
See Also [key distribution center](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_key_distribution_center), [ticket-granting server](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ticket_granting_server).
auto-increment
: A property of a table column (specified by the
AUTO_INCREMENT keyword) that automatically
adds an ascending sequence of values in the column.
It saves work for the developer, not to have to produce new
unique values when inserting new rows. It provides useful
information for the query optimizer, because the column is known
to be not null and with unique values. The values from such a
column can be used as lookup keys in various contexts, and
because they are auto-generated there is no reason to ever
change them; for this reason, primary key columns are often
specified as auto-incrementing.
Auto-increment columns can be problematic with statement-based
replication, because replaying the statements on a replica might
not produce the same set of column values as on the source, due
to timing issues. When you have an auto-incrementing primary
key, you can use statement-based replication only with the
setting
[`innodb_autoinc_lock_mode=1`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode). If
you have
[`innodb_autoinc_lock_mode=2`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode),
which allows higher concurrency for insert operations, use
**row-based replication** rather
than **statement-based
replication**. The setting
[`innodb_autoinc_lock_mode=0`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode)
should not be used except for compatibility purposes.
Consecutive lock mode
([`innodb_autoinc_lock_mode=1`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode)) is
the default setting prior to MySQL 8.0.3. As of MySQL 8.0.3,
interleaved lock mode
([`innodb_autoinc_lock_mode=2`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode)) is
the default, which reflects the change from statement-based to
row-based replication as the default replication type.
See Also [auto-increment locking](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_auto_increment_locking), [innodb\_autoinc\_lock\_mode](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_innodb_autoinc_lock_mode), [primary key](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_primary_key), [row-based replication](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_row_based_replication), [statement-based replication](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_statement_based_replication).
auto-increment locking
: The convenience of an
auto-increment primary key
involves some tradeoff with concurrency. In the simplest case,
if one transaction is inserting values into the table, any other
transactions must wait to do their own inserts into that table,
so that rows inserted by the first transaction receive
consecutive primary key values. InnoDB
includes optimizations and the
innodb_autoinc_lock_mode option
so that you can configure and optimal balance between
predictable sequences of auto-increment values and maximum
concurrency for insert
operations.
See Also [auto-increment](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_auto_increment), [concurrency](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_concurrency), [innodb\_autoinc\_lock\_mode](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_innodb_autoinc_lock_mode).
autocommit
: A setting that causes a commit
operation after each SQL
statement. This mode is not recommended for working with
InnoDB tables with
transactions that span several
statements. It can help performance for
read-only transactions on
InnoDB tables, where it minimizes overhead
from locking and generation of
undo data, especially in MySQL
5.6.4 and up. It is also appropriate for working with
MyISAM tables, where transactions
are not applicable.
See Also [commit](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_commit), [locking](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_locking), [read-only transaction](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_read_only_transaction), [SQL](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_sql), [transaction](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_transaction), [undo](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_undo).
availability : The ability to cope with, and if necessary recover from, failures on the host, including failures of MySQL, the operating system, or the hardware and maintenance activity that may otherwise cause downtime. Often paired with scalability as critical aspects of a large-scale deployment.
See Also [scalability](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_scalability).
MySQL Enterprise Backup
: A licensed product that performs hot
backups of MySQL databases. It offers the most
efficiency and flexibility when backing up
InnoDB tables, but can also back up
MyISAM and other kinds of tables.
See Also [hot backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_hot_backup), [InnoDB](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_innodb).
B
B-tree
: A tree data structure that is popular for use in database
indexes. The structure is kept sorted at all times, enabling
fast lookup for exact matches (equals operator) and ranges (for
example, greater than, less than, and BETWEEN
operators). This type of index is available for most storage
engines, such as InnoDB and
MyISAM.
Because B-tree nodes can have many children, a B-tree is not the
same as a binary tree, which is limited to 2 children per node.
Contrast with **hash index**, which
is only available in the [`MEMORY`](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/memory-storage-engine.html)
storage engine. The `MEMORY` storage engine can
also use B-tree indexes, and you should choose B-tree indexes
for `MEMORY` tables if some queries use range
operators.
The use of the term B-tree is intended as a reference to the
general class of index design. B-tree structures used by MySQL
storage engines may be regarded as variants due to
sophistications not present in a classic B-tree design. For
related information, refer to the `InnoDB` Page
Structure
[Fil
Header](https://dev.mysql.com/doc/internals/en/innodb-fil-header.html) section of the
[MySQL
Internals Manual](https://dev.mysql.com/doc/internals/en/index.html).
See Also [hash index](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_hash_index).
backticks
: Identifiers within MySQL SQL statements must be quoted using the
backtick character (`) if they contain
special characters or reserved words. For example, to refer to a
table named FOO#BAR or a column named
SELECT, you would specify the identifiers as
`FOO#BAR` and `SELECT`.
Since the backticks provide an extra level of safety, they are
used extensively in program-generated SQL statements, where the
identifier names might not be known in advance.
Many other database systems use double quotation marks
(`“`) around such special names. For
portability, you can enable `ANSI_QUOTES` mode
in MySQL and use double quotation marks instead of backticks to
qualify identifier names.
See Also [SQL](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_sql).
backup : The process of copying some or all table data and metadata from a MySQL instance, for safekeeping. Can also refer to the set of copied files. This is a crucial task for DBAs. The reverse of this process is the restore operation.
With MySQL, **physical backups**
are performed by the **MySQL Enterprise Backup**
product, and **logical backups**
are performed by the `mysqldump` command. These
techniques have different characteristics in terms of size and
representation of the backup data, and speed (especially speed
of the restore operation).
Backups are further classified as
**hot**,
**warm**, or
**cold** depending on how much they
interfere with normal database operation. (Hot backups have the
least interference, cold backups the most.)
See Also [cold backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_cold_backup), [hot backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_hot_backup), [logical backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_logical_backup), [MySQL Enterprise Backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysql_enterprise_backup), [mysqldump](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysqldump), [physical backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_physical_backup), [warm backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_warm_backup).
base column : A non-generated table column upon which a stored generated column or virtual generated column is based. In other words, a base column is a non-generated table column that is part of a generated column definition.
See Also [generated column](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_generated_column), [stored generated column](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_stored_generated_column), [virtual generated column](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_virtual_generated_column).
beta
: An early stage in the life of a software product, when it is
available only for evaluation, typically without a definite
release number or a number less than 1.
InnoDB does not use the beta designation,
preferring an early adopter
phase that can extend over several point releases, leading to a
GA release.
See Also [early adopter](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_early_adopter), [GA](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ga).
binary log : A file containing a record of all statements or row changes that attempt to change table data. The contents of the binary log can be replayed to bring replicas up to date in a replication scenario, or to bring a database up to date after restoring table data from a backup. The binary logging feature can be turned on and off, although Oracle recommends always enabling it if you use replication or perform backups.
You can examine the contents of the binary log, or replay it
during replication or recovery, by using the
[**mysqlbinlog**](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysqlbinlog.html) command. For full information
about the binary log, see [Section 7.4.4, “The Binary Log”](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/binary-log.html). For
MySQL configuration options related to the binary log, see
[Section 19.1.6.4, “Binary Logging Options and Variables”](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/replication-options-binary-log.html).
For the **MySQL Enterprise Backup** product, the file
name of the binary log and the current position within the file
are important details. To record this information for the source
when taking a backup in a replication context, you can specify
the `--slave-info` option.
Prior to MySQL 5.0, a similar capability was available, known as
the update log. In MySQL 5.0 and higher, the binary log replaces
the update log.
See Also [binlog](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_binlog), [MySQL Enterprise Backup](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mysql_enterprise_backup), [replication](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_replication).
binlog : An informal name for the binary log file. For example, you might see this abbreviation used in e-mail messages or forum discussions.
See Also [binary log](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_binary_log).
blind query expansion
: A special mode of full-text
search enabled by the WITH QUERY
EXPANSION clause. It performs the search twice, where
the search phrase for the second search is the original search
phrase concatenated with the few most highly relevant documents
from the first search. This technique is mainly applicable for
short search phrases, perhaps only a single word. It can uncover
relevant matches where the precise search term does not occur in
the document.
See Also [full-text search](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_full_text_search).
BLOB
: An SQL data type (TINYBLOB,
BLOB,
MEDIUMBLOB, and
LONGBLOB) for objects containing
any kind of binary data, of arbitrary size. Used for storing
documents, images, sound files, and other kinds of information
that cannot easily be decomposed to rows and columns within a
MySQL table. The techniques for handling BLOBs within a MySQL
application vary with each
Connector and
API. MySQL
Connector/ODBC defines
BLOB values as
LONGVARBINARY. For large, free-form
collections of character data, the industry term is
CLOB, represented by the MySQL
TEXT data types.
See Also [API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_api), [CLOB](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_clob), [connector](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector), [Connector/ODBC](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector_odbc).
bottleneck
: A portion of a system that is constrained in size or capacity,
that has the effect of limiting overall throughput. For example,
a memory area might be smaller than necessary; access to a
single required resource might prevent multiple CPU cores from
running simultaneously; or waiting for disk I/O to complete
might prevent the CPU from running at full capacity. Removing
bottlenecks tends to improve
concurrency. For example, the
ability to have multiple InnoDB
buffer pool instances reduces
contention when multiple sessions read from and write to the
buffer pool simultaneously.
See Also [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool), [concurrency](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_concurrency).
bounce : A shutdown operation immediately followed by a restart. Ideally with a relatively short warmup period so that performance and throughput quickly return to a high level.
See Also [shutdown](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_shutdown).
buddy allocator : A mechanism for managing different-sized pages in the InnoDB buffer pool.
See Also [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool), [page](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_page), [page size](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_page_size).
buffer : A memory or disk area used for temporary storage. Data is buffered in memory so that it can be written to disk efficiently, with a few large I/O operations rather than many small ones. Data is buffered on disk for greater reliability, so that it can be recovered even when a crash or other failure occurs at the worst possible time. The main types of buffers used by InnoDB are the buffer pool, the doublewrite buffer, and the change buffer.
See Also [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool), [change buffer](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_change_buffer), [crash](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_crash), [doublewrite buffer](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_doublewrite_buffer).
buffer pool
: The memory area that holds cached InnoDB data
for both tables and indexes. For efficiency of high-volume read
operations, the buffer pool is divided into
pages that can potentially hold
multiple rows. For efficiency of cache management, the buffer
pool is implemented as a linked list of pages; data that is
rarely used is aged out of the cache, using a variation of the
LRU algorithm. On systems with
large memory, you can improve concurrency by dividing the buffer
pool into multiple buffer pool
instances.
Several `InnoDB` status variables,
`INFORMATION_SCHEMA` tables, and
`performance_schema` tables help to monitor the
internal workings of the buffer pool. Starting in MySQL 5.6, you
can avoid a lengthy warmup period after restarting the server,
particularly for instances with large buffer pools, by saving
the buffer pool state at server shutdown and restoring the
buffer pool to the same state at server startup. See
[Section 17.8.3.6, “Saving and Restoring the Buffer Pool State”](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-preload-buffer-pool.html).
See Also [buffer pool instance](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool_instance), [LRU](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_lru), [page](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_page), [warm up](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_warm_up).
buffer pool instance
: Any of the multiple regions into which the
buffer pool can be divided,
controlled by the
innodb_buffer_pool_instances
configuration option. The total memory size specified by
innodb_buffer_pool_size is
divided among all buffer pool instances. Typically, having
multiple buffer pool instances is appropriate for systems that
allocate multiple gigabytes to the InnoDB
buffer pool, with each instance being one gigabyte or larger. On
systems loading or looking up large amounts of data in the
buffer pool from many concurrent sessions, having multiple
buffer pool instances reduces contention for exclusive access to
data structures that manage the buffer pool.
See Also [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool).
built-in
: The built-in InnoDB storage engine within
MySQL is the original form of distribution for the storage
engine. Contrast with the InnoDB
Plugin. Starting with MySQL 5.5, the InnoDB Plugin is
merged back into the MySQL code base as the built-in
InnoDB storage engine (known as InnoDB 1.1).
This distinction is important mainly in MySQL 5.1, where a
feature or bug fix might apply to the InnoDB Plugin but not the
built-in `InnoDB`, or vice versa.
See Also [InnoDB](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_innodb).
business rules : The relationships and sequences of actions that form the basis of business software, used to run a commercial company. Sometimes these rules are dictated by law, other times by company policy. Careful planning ensures that the relationships encoded and enforced by the database, and the actions performed through application logic, accurately reflect the real policies of the company and can handle real-life situations.
For example, an employee leaving a company might trigger a
sequence of actions from the human resources department. The
human resources database might also need the flexibility to
represent data about a person who has been hired, but not yet
started work. Closing an account at an online service might
result in data being removed from a database, or the data might
be moved or flagged so that it could be recovered if the account
is re-opened. A company might establish policies regarding
salary maximums, minimums, and adjustments, in addition to basic
sanity checks such as the salary not being a negative number. A
retail database might not allow a purchase with the same serial
number to be returned more than once, or might not allow credit
card purchases above a certain value, while a database used to
detect fraud might allow these kinds of things.
See Also [relational](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_relational).
C
.cfg file
: A metadata file used with the InnoDB
transportable tablespace
feature. It is produced by the command FLUSH TABLES ...
FOR EXPORT, puts one or more tables in a consistent
state that can be copied to another server. The
.cfg file is copied along with the
corresponding .ibd file, and
used to adjust the internal values of the
.ibd file, such as the
space ID, during the
ALTER TABLE ... IMPORT TABLESPACE step.
See Also [.ibd file](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_ibd_file), [space ID](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_space_id), [transportable tablespace](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_transportable_tablespace).
C : A programming language that combines portability with performance and access to low-level hardware features, making it a popular choice for writing operating systems, drivers, and other kinds of system software. Many complex applications, languages, and reusable modules feature pieces written in C, tied together with high-level components written in other languages. Its core syntax is familiar to C++, Java, and C# developers.
See Also [C API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_c_api), [C++](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_cplusplus), [C#](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_csharp), [Java](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_java).
C API : The C API code is distributed with MySQL. It is included in the libmysqlclient library and enables C programs to access a database.
See Also [API](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_api), [C](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_c), [libmysqlclient](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_libmysqlclient).
C# : A programming language combining strong typing and object-oriented features, running within the Microsoft .NET framework or its open-source counterpart Mono. Often used for creating applications with the ASP.net framework. Its syntax is familiar to C, C++ and Java developers.
See Also [.NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos__net), [ASP.net](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_asp_net), [C](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_c), [Connector/NET](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector_net), [C++](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_cplusplus), [Java](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_java), [Mono](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_mono).
C++ : A programming language with core syntax familiar to C developers. Provides access to low-level operations for performance, combined with higher-level data types, object-oriented features, and garbage collection. To write C++ applications for MySQL, you use the Connector/C++ component.
See Also [C](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_c), [Connector/C++](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_connector_c__).
cache
: The general term for any memory area that stores copies of data
for frequent or high-speed retrieval. In
InnoDB, the primary kind of cache structure
is the buffer pool.
See Also [buffer](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer), [buffer pool](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_buffer_pool).
cardinality
: The number of different values in a table
column. When queries refer to
columns that have an associated
index, the cardinality of each
column influences which access method is most efficient. For
example, for a column with a unique
constraint, the number of different values is equal
to the number of rows in the table. If a table has a million
rows but only 10 different values for a particular column, each
value occurs (on average) 100,000 times. A query such as
SELECT c1 FROM t1 WHERE c1 = 50; thus might
return 1 row or a huge number of rows, and the database server
might process the query differently depending on the cardinality
of c1.
If the values in a column have a very uneven distribution, the
cardinality might not be a good way to determine the best query
plan. For example, `SELECT c1 FROM t1 WHERE c1 =
x;` might return 1 row when `x=50` and
a million rows when `x=30`. In such a case, you
might need to use **index hints**
to pass along advice about which lookup method is more efficient
for a particular query.
Cardinality can also apply to the number of distinct values
present in multiple columns, as in a
**composite index**.
See Also [column](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_column), [composite index](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_composite_index), [index](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_index), [index hint](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_index_hint), [persistent statistics](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_persistent_statistics), [random dive](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_random_dive), [selectivity](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_selectivity), [unique constraint](https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/glossary.html#glos_unique_constraint).
change buffer
: A special data structure that records changes to
pages in
secondary indexes. These values
could result from SQL INSERT,
UPDATE, or
DELETE statements
(DML). The set of features
involving the change buffer is known collectively as
change buffering, consisting of
insert buffering,
delete buffering, and
purge buffering.
Changes are only recorded in the cha
(本文超出站点单文档体积上限,已截断)
