探索MySQL 8.0 新事务数据字典:存储有关数据库对象的信息

MySQL 8 带来了重大的架构转变,用更高效、更可靠的事务数据字典 (TDD) 取代了传统的基于 MyISAM 的系统表。此次升级极大地改进了元数据的管理和存储,从而为各种数据库对象带来更好的可靠性和可扩展性。在这篇博文中,我们将通过实际示例探讨 MySQL 8 事务数据字典的复杂性、其优势及其实际应用。

作为 MySQL 8 InnoDB 存储引擎的核心,事务数据字典 (TDD) 在存储有关数据库对象(例如表、索引、约束、触发器等)的关键元数据方面发挥着基础作用。这种创新的架构取代了过时的基于MyISAM的系统表,有效地使数据字典信息的处理变得事务化并符合ACID原则。

事务数据字典 (TDD) 的主要目标是增强 MySQL 数据库的整体性能、稳定性和可扩展性。它通过显着减少系统表锁的争用并最大限度地减少磁盘 I/O 来实现这一目标,最终提高并发性和可靠性。

在 MySQL 5.7 中,mysql 系统数据库由数据目录中名为“mysql”的子目录表示。然而,这种机制在 MySQL 8.0 中被更高级的事务数据字典 (TDD) 取代。数据字典表现在被合并到一个名为“ mysql.ibd ”的 InnoDB 表空间中,该表空间位于 MySQL 数据目录中。“mysql.ibd”表空间文件必须保留在其指定位置并保留其名称,因为它不能被任何其他表空间修改或使用。

字典数据受益于为存储在 InnoDB 表中的用户数据提供的相同保护,通过提交、回滚和崩溃恢复功能确保数据完整性。这种集成允许对系统数据进行更加一致的管理,从而增强数据库的整体可靠性和一致性。

交易数据字典的好处

我们来探讨一下MySQL 8事务数据字典的优势:

  1. 原子事务:TDD 确保数据库模式更改作为原子事务执行。这意味着与创建或更改数据库对象相关的所有修改要么成功,要么什么都不发生。因此,即使操作遇到错误或失败,数据库仍保持一致。
  2. 改进的并发性:随着基于 MyISAM 的系统表的删除,全局锁的争用显着减少。因此,多个事务可以同时访问和修改数据字典的不同部分,从而获得更好的整体性能和可扩展性。
  3. 崩溃恢复和数据一致性:由于TDD在事务日志中记录模式更改,因此崩溃恢复变得更加可靠。在崩溃期间,MySQL 可以重播记录的更改以确保数据一致性,而无需依赖 MyISAM 修复过程。

在 TDD 中存储有关数据库对象的信息

现在,让我们通过示例来看看 MySQL 8 事务数据字典如何存储有关各种数据库对象的信息:

创建新表

考虑以下 SQL 查询来创建一个简单的表:


1

2

3

4

5

CREATE TABLE employees (

    id INT PRIMARY KEY AUTO_INCREMENT,

    name VARCHAR(50) NOT NULL,

    department VARCHAR(30)

);

TDD 记录表的元数据,包括列名、数据类型、约束和索引。此信息存储在事务存储中,确保模式更改的原子性。

修改表结构

假设我们要向“employees”表添加一个新列“salary”:


1

ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2);

TDD 将这种更改作为事务处理。它将有关新列的信息存储在日志缓冲区中,一旦事务提交,数据字典就会相应更新。

索引和约束

MySQL 8 TDD 存储有关表上定义的索引和约束的信息。例如:


1

CREATE INDEX idx_department ON employees (department);

此索引创建作为事务记录在数据字典中,从而可以在恢复期间重建数据库的状态。

数据字典视图

MySQL提供了多种数据字典视图,允许用户直接查询元数据信息。一些基本的数据字典视图包括:

INFORMATION_SCHEMA.TABLES:提供有关数据库中表的详细信息。INFORMATION_SCHEMA.COLUMNS:包含有关表列的信息。INFORMATION_SCHEMA.INNODB_INDEXES:提供有关InnoDB表索引的信息。INFORMATION_SCHEMA.TABLE_CONSTRAINTS:提供有关表约束的信息。


结论

MySQL 8 事务数据字典在管理数据库对象元数据方面是一个游戏规则改变者。通过引入原子事务和改进的并发性,确保更好的性能和数据一致性。通过本博客中讨论的示例,我们了解了 TDD 如何有效存储有关数据库对象的信息并促进崩溃恢复。

采用 MySQL 8 并利用事务数据字典的优势无疑将带来更强大、更高效的数据库系统,使其成为任何基于 MySQL 的应用程序的重要升级。


文章来源:https://www.percona.com/blog/mysql-8-new-transaction-data-dictionary-storing-information-about-database-objects/


免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论