【MySQL技术内幕】17-InnoDB逻辑存储结构
从 InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。页在一些文档中有时也称为块(block), Inno...
从 InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。页在一些文档中有时也称为块(block), Inno...
随着 InnoDB存储引擎的发展,新的页数据结构有时用来支持新的功能特性。比如前面提到的 InnoDB1.0x版本提供了新的页数据结构来支持表压缩功能,完全的溢出( Off page)大变长字符类型字段的存储。这些新的页数据结构和之前版本的...
1、数据完整性 关系型数据库系统和文件系统的一个不同点是,关系数据库本身能保证存储数据的完整性,不需要应用程序的控制,而文件系统一般需要在程序端进行控制。当前几乎所有的关系型数据库都提供了约束( constraint)机制,该机制提供了一条...
之前介绍的文件都是 MySQL数据库本身的文件,和存储引擎无关。除了这些文件外,每个表存储引擎还有其自己独有的文件。本节将具体介绍与 InnoDB存储引擎密切相关的文件,这些文件包括重做日志文件、表空间文件。 1、表空间文件 InnoDB采...
在 InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表( index organized table)。在 InnoDB存储引擎表中,每张表都有个主键( Primary Key),如果在创建表时没有显式地定...
1、索引管理 索引的创建和删除可以通过两种方法,一种是 ALTER TABLE,另一种是 CREATE/DROP INDEX。通过 ALTER TABLE创建索引的语法为: CREATE/ DROP INDEX的语法同样很简单: 用户可以设...
在 MySQL数据库中,视图(view)是一个命名的虚表,它由一个SQL查询来定义,可以当做表使用。与持久表( permanent table)不同的是,视图中的数据没有实际的物理存储。 1、视图的作用 视图在数据库中发挥着重要的作用。视图...
1、分区概述 分区功能并不是在存储引擎层完成的,因此不是只有 InnoDB存储引擎支持分区,常见的存储引擎 MyISAM、NDB等都支持。但也并不是所有的存储引擎都支持,如CSV、 FEDORATED、 MERGE等就不支持。在使用分区功能...
1、概述 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。 事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都做修改,要么都不做,这就是事务的目的,也是事务模型区别与文件系统的重要特征之一。...
事务隔离性由锁来实现。原子性、一致性、持久性通过数据库的redo log和undo log来完成。redo log称为重做日志,用来保证事务的原子性和持久性。undo log用来保证事务的一致性。 有的DBA或许会认为undo是redo的逆...
InnoDB存储引擎支持以下几种常见的索引: B+树索引 全文索引 哈希索引 前面已经提到过, InnoDB存储引擎支持的哈希索引是自适应的, InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中生成哈希索...
B+树中,所有记录节点都按照键值的大小顺序放在同一层叶子节点,各个叶子节点指针进行连接。 图中指针是单向的,但是书上的图是双向的,而且旋转应该也是双向才能完成) B+树插入处理 LeafPage满 IndexPage满 操作 No No 直...
B+树索引页的分裂并不总是从页的中间记录开始,这样可能会导致页空间的浪费。原因参考https://blog.csdn.net/shenchaohao12321/article/details/83243314 InnoDB存储引擎的 Pag...
1、不同应用中B+树索引的使用 在了解了B+树索引的本质和实现后,下一个需要考虑的问题是怎样正确地使用B+树索引,这不是一个简单的问题。这里所总结的可能并不适用于所有的应用场合。我所能做的只是概括一个大概的方向。在实际的生产环境使用中,每个...
InnodB存储引擎使用哈希算法来对字典进行查找,其冲突机制采用链表方式,哈希函数采用除法散列方式。对于缓冲池页的哈希表来说,在缓冲池中的Page页都有争chain指针,它指向相同哈希函数值的页。而对于除法散列,m的取值为略大于2倍的缓冲池...