专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 MySQL InnoDB存储引擎详解

MySQL InnoDB存储引擎详解

更新时间:2022-08-05 09:46:06 来源:动力节点 浏览1105次

InnoDB是MySQL存储引擎之一,现在我们想确定 MySQL InnoDB 存储引擎的特别之处。以下是它的主要优点:

InnoDB 基于 ACID 并支持提交和回滚操作。此外,它不太可能崩溃,因此用户的数据仍然受到保护。

由于行级锁定,多用户性能成为可能。

由于 InnoDB 表有效地组织数据,因此优化了基于主键的查询。每个 InnoDB 表中都有一个称为聚集索引的主键索引。该索引排列数据以减少主键查询的 I/O。

MySQL InnoDB 支持外键约束,这允许实现和维护数据完整性。

InnoDB 也可以与 MariaDB 服务器一起使用。在这种情况下,InnoDB 提供外键、XA 事务和带有保存点的事务。

InnoDB 集群

每家公司的政策都以提供最安全、最稳定的数据流为前提。但是如何实现和保证呢?答案在于 MySQL InnoDB Cluster,它为 MySQL 提供了一个方便的解决方案。通过 AdminAPI 和 MySQL Shell 的参与,您可以轻松管理多个 MySQL 服务器实例以作为单个 InnoDB Cluster 工作。

MySQL InnoDB Cluster 的组件包括:

MySQL 路由器(安全路由到数据库节点)

MySQL 组复制(相互复制的多个数据库服务器)

MySQL Shell(MySQL 的配置工具,有助于启用具有容错能力的拓扑)

看看这一切如何在单个 InnoDB 集群中协同工作:

创建 InnoDB 表

为了创建 InnoDB 表,您只需在 CREATE TABLE 语句中指定。例如:ENGINE = InnoDB

创建表Emp ( EmpID     SMALLINT UNSIGNED NOT NULL , YearBorn YEAR NOT NULL , CityBorn VARCHAR ( 40 ) NOT NULL DEFAULT 'Unknown' ) ENGINE = INNODB ;

InnoDB 服务器变量和性能调优技巧

以下是可用的 InnoDB 服务器变量列表,这些变量有助于加速和优化 MySQL 数据库和 InnoDB 存储引擎之间的性能和交互:

innodb_flush_log_at_trx_commit

innodb_buffer_pool_size

innodb_buffer_pool_instances

innodb_file_per_table

innodb_force_recovery

innodb_lock_wait_timeout

innodb_large_prefix

innodb_flush_method

innodb_thread_concurrency

innodb_log_buffer_size

innodb_io_capacity

innodb_strict_mode

innodb_autoinc_lock_mode

innodb_read_io_threads

innodb_data_file_path

处理 InnoDB 中最常见的错误

InnoDB 中的错误处理并不总是与指定的 SQL 标准相同。例如,SQL 语句中的错误必须导致该语句的回滚。至于 InnoDB,在某些情况下,失败的语句会回滚;在其他情况下,整个事务都会回滚。

表空间空间不足会导致错误,并且 SQL 语句会回滚。Table is full

除非在所述语句中指定了 IGNORE 选项,否则重复键错误会导致语句回滚。

锁定等待超时会导致正在等待锁定但面临超时的语句回滚。

该错误还会回滚相应的语句。row too long

事务死锁会导致整个事务回滚,之后应该重试。

其他错误一般会被 MySQL 代码层检测到,从而导致相关语句的回滚。

以上就是关于“MySQL InnoDB存储引擎详解”,大家如果对此比较感兴趣,想了解更多相关知识,不妨来关注一下动力节点的MySQL教程,里面的课程内容由浅到深,细致全面,很适合没有基础的小白学习,希望对大家能够有帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>