当前位置:首页 > 数码 > 核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)

核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)

admin7个月前 (04-15)数码31

简介

Savepoint 是 MySQL 中的一种机制,允许在事务中创建标记点,以便在事务失败时回滚到该标记点。Savepoint 的原理是将事务的当前状态存储在各种数据结构中,包括服务器层、binlog 和 InnoDB 存储引擎。

数据结构

1. Undo 日志序号

每个事务都有一个称为 undo_no 的属性,它存储着事务对表中记录进行的最后一个更改所生成的 undo 日志的序号。每个事务都维护自己独立的 undo 日志序号,与其他事务无关。

2. Savepoint 结构

创建 savepoint 时,服务器层、binlog 和 InnoDB 都会创建各自用于存储 savepoint 信息的结构: 服务器层 `SAVEPOINT` 对象:存储 savepoint 名称和 binlog 偏移量。 Binlog Binlog偏移量:指向 binlog 中 savepoint 事件的位置。 InnoDB `trx_named_savept_t` 对象:存储 savepoint 名称、事务对象的 `undo_no` 属性值以及前一个 savepoint 的指针。

3. 内存布局

服务器层的 `SAVEPOINT` 对象、InnoDB 的 `trx_named_savept_t` 对象和 binlog 偏移量都存储在同一块内存中。以下是对齐的内存布局: | SAVEPOINT 对象 (48 字节) | trx_named_savept_t 对象 (40 字节) | Binlog 偏移量 (8 字节) |

创建 Savepoint

1. 同名 Savepoint 查找

在创建 savepoint 之前,服务器层将检查用户线程中的 savepoint 链表是否存在同名的 savepoint。

2. 删除同名 Savepoint

如果找到同名的 savepoint,服务器层将从链表中删除它。InnoDB 也将从事务对象的 savepoint 链表中删除相应的 savepoint 结构。

3. 保存 Savepoint

删除同名 savepoint 后,服务器层将创建savepoint: 创建 `SAVEPOINT` 对象和 `trx_named_savept_t` 对象。 将 binlog 偏移量写入服务器层为它分配的内存。 将 `trx_named_savept_t` 对象添加到事务对象的 savepoint 链表。

结论

MySQL savepoint 的原理涉及在服务器层、binlog 和 InnoDB 存储引擎中维护各种数据结构。通过这些结构,事务可以创建标记点并在发生故障时回滚到这些标记点。

关于mysql数据库存储引擎描述

关于mysql数据库存储引擎描述

MySQL数据库有多种存储引擎,每种存储引擎都有其特定的特点和用途。以下是一些关于MySQL数据库存储引擎的描述:

1. InnoDB存储引擎:InnoDB是MySQL的默认存储引擎,它提供了事务支持、行级锁定和外键约束等功能。InnoDB适合于需要事务支持和复杂查询的应用程序。

2. MyISAM存储引擎:MyISAM是MySQL早期版本中常用的存储引擎,它不支持事务支持,但提供了全文搜索、表锁和全文索引等功能。MyISAM适合于不需要事务支持的应用程序。

3. Memory存储引擎:Memory存储引擎将数据存储在内存中,可以快速检索数据。Memory适合于需要快速检索数据的应用程序,但需要注意内存溢出的问题。

4. Archive存储引擎:Archive存储引擎适合于需要大量数据的备份和归档,它提供了高压缩比和低读写性能。

5. NDB Cluster存储引擎:NDB Cluster是一个分布式存储引擎,它提供了高可用性和高并发性能。NDB Cluster适合于需要高可用性和高并发性能的应用程序。

总之,MySQL数据库的存储引擎可以根据应用程序的需求进行选择,不同的存储引擎具有不同的特点和用途。

MySql引擎有哪些

深入探索数据库引擎

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。 现在许多不同的数据库管理系统都支持多种不同的数据引擎。 MySql的核心就是存储引擎。 存储引擎查看MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.1,可以在命令行窗口使用:SHOW ENGINES命令来查看MySQL使用的引擎,命令的输出为(我用的Navicat Premium):看到MySQL给用户提供了这么多存储引擎,包括处理事务安全表的引擎和出来了非事物安全表的引擎。 如果要想查看数据库默认使用哪个引擎,可以通过使用命令:SHOW VARIABLES LIKE storage_engine;来查看,查询结果为:在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。 Support列的值表示某种引擎是否能使用:YES表示可以使用、NO表示不能使用、DEFAULT表示该引擎为当前默认的存储引擎 。 下面来看一下其中几种常用的引擎。 一 、Innodb支持事务,是事务安全的,提供行级锁与外键约束,有缓冲池,用于缓冲数据和索引。 适用场景:用于事务处理,具有ACID事物支持,应用于执行大量的insert和update操作的表。 二 、MyISAM 不支持事务,不支持外键约束,不支持行级锁,操作时需要锁定整张表,不过会保存表的行数,所以当执行select count(*) from tablename时执行特别快。 适用场景:用于管理非事务表,提供高速检索及全文检索能力,适用于有大量的select操作的表,如 日志表三 、MEMORY 使用存在于内存中的内容创建表,每一个memory只实际对应一个磁盘文件。 因为是存在内存中的,所以memory访问速度非常快,而且该引擎使用hash索引,可以一次定位,不需要像B树一样从根节点查找到支节点,所以精确查询时访问速度特别快,但是非精确查找时,比如like,这种范围查找,hash就起不到作用了。 另外一旦服务关闭,表中的数据就会丢失,因为没有存到磁盘中。 适用场景:主要用于内容变化不频繁的表,或者作为中间的查找表。 对表的更新要谨慎因为数据没有被写入到磁盘中,服务关闭前要考虑好数据的存储四、 MERGEMERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。 构成一个MERGE数据表结构的各成员MyISAM数据表必须具有完全一样的结构。 每一个成员数据表的数据列必须按照同样的顺序定义同样的名字和类型,索引也必须按照同样的顺序和同样的方式定义。 除了便于同时引用多个数据表而无需发出多条查询,MERGE数据表还提供了以下一些便利。 MERGE数据表可以用来创建一个尺寸超过各个MyISAM数据表所允许的最大长度逻辑单元你看一把经过压缩的数据表包括到MERGE数据表里。 比如说,在某一年结束之后,你应该不会再往相应的日志文件里添加记录,所以你可以用myisampack工具压缩它以节省空间,而MERGE数据表仍可以像往常那样工作

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: MySQL

“核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)” 的相关文章

优化数据统计的终极指南-MySQL-提升查询性能的秘诀 (优化数据统计工具)

优化数据统计的终极指南-MySQL-提升查询性能的秘诀 (优化数据统计工具)

在业务场景中,我们经常需要统计当前已有的业务数据,例如商品库内商品的数量、每天的用户订单数量等。此时,我们需要使用统计功能来实现。 count()实现方式 对于不同的数据库引擎,co...

主从复制原理简介-MySQL (主从复制原理mysql)

主从复制原理简介-MySQL (主从复制原理mysql)

主从复制(Master-SlaveReplication)是一种数据复制技术,用于在多个数据库主机之间的数据同步。在主从复制架构中,一个主机被设置为主主机(Master),充任数据源,其余主机被设...

如何在MySQL中成功数据的版本治理和回滚操作 (如何在mysql数据库中添加数据)

如何在MySQL中成功数据的版本治理和回滚操作 (如何在mysql数据库中添加数据)

成功数据的版本治理和回滚操作在中可以经过以下几种模式成功,包含经常使用事务、备份恢复、日志和版本控制工具等。上方将详细引见这些方法。 1.经常使用事务: MySQL允许事务操作,可以经...

обеспечение-и-данных-MySQL锁机制-предотвращение-конфликтов-согласованности (翻译)

обеспечение-и-данных-MySQL锁机制-предотвращение-конфликтов-согласованности (翻译)

锁机制是一种通过对数据进行加锁来防止数据冲突和不一致的技术。MySQL 采用了两种类型的锁:共享锁和排他锁,以实现并发访问数据的同时保证数据的一致性。 共享锁 (SharedLock)...

EXPLAIN-代价模型-MySQL-浅析-提早预知索引优化战略-优化查问性能-告别自觉经常使用 (explain)

EXPLAIN-代价模型-MySQL-浅析-提早预知索引优化战略-优化查问性能-告别自觉经常使用 (explain)

背景 在中,当咱们为表创立了一个或多个索引后,通常须要在索引定义成功后,依据详细的数据状况口头EXPLN命令,才干观察到数据库实践经常使用哪个索引、能否经常使用索引。这使得咱们在参与新索引之...

MySQL-实现非中断亿级数据处理的秘密 (mysql-bin文件可以删除吗)

MySQL-实现非中断亿级数据处理的秘密 (mysql-bin文件可以删除吗)

MySQL 在海量数据管理方面表现得非常出色,能够存储上亿级别的数据,同时还具有极高的数据可靠性,几乎不会发生数据丢失的情况。这一强大的特性离不开 MySQL 的两大日志系统:binlog 和 r...

揭开其背后的神奇世界-深入探寻-索引的底层逻辑-MySQL (揭开其背后的真相)

揭开其背后的神奇世界-深入探寻-索引的底层逻辑-MySQL (揭开其背后的真相)

什么是索引? 索引是数据库系统中一种特殊的数据结构,用于快速查找数据。索引以某种方式引用(指向)数据,允许在索引上实现高级查找算法,从而提高查询速度。 索引的种类 最常见的索引类型有:...