首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
MySQL技术内幕-InnoDB存储引擎
hsfxuebao
创建于2023-05-26
订阅专栏
MySQL技术内幕-InnoDB存储引擎 读书笔记
等 15 人订阅
共42篇文章
创建于2023-05-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【MySQL技术内幕】6.1-锁、lock和latch
锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。 InnoDB存储引擎会在行级别上对表数据上锁,这固然不错。不过 InnoDB存储引擎也会在数据库内部其他多个地方使用锁,从而允许对多种不同资源提供并发访问。例如,操作缓冲池中的LRU列表,删除、添…
【MySQL技术内幕】5.8-全文检索
全文检索( Full-Text Search)是将存储于数据库中的整本书或整篇文章中的任意内容信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。 在之前的 MySQL数据库中, InnoDB存储引擎并不支持全文检索技术。大多数的…
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
InnodB存储引擎使用哈希算法来对字典进行查找,其冲突机制采用链表方式,哈希函数采用除法散列方式。对于缓冲池页的哈希表来说,在缓冲池中的Page页都有争chain指针,它指向相同哈希函数值的页。而对于除法散列,m的取值为略大于2倍的缓冲池页数量的质数。例如:当前参数 inno…
【MySQL技术内幕】5.6-B+树索引的使用
在了解了B+树索引的本质和实现后,下一个需要考虑的问题是怎样正确地使用B+树索引,这不是一个简单的问题。这里所总结的可能并不适用于所有的应用场合。我所能做的只是概括一个大概的方向。在实际的生产环境使用中,每个DBA和开发人员,还是需要根据自己的具体生产环境来使用索引,并观察索引…
【MySQL技术内幕】5.4-B+树索引
Innodb中每张表都会有一个聚集索引,其行记录存在该索引的叶子节点上。 页中的记录也是双向链表进行维护,物理上可以不按照顺序存储。 所有索引只能定位到页,不能通过索引定位到具体的行,到页后通过Page Directory确定行。 聚集索引的另一个好处是,它对于主键的排序查找和…
【MySQL技术内幕】4.8-分区表
分区功能并不是在存储引擎层完成的,因此不是只有 InnoDB存储引擎支持分区,常见的存储引擎 MyISAM、NDB等都支持。但也并不是所有的存储引擎都支持,如CSV、 FEDORATED、 MERGE等就不支持。在使用分区功能前,应该对选择的存储引擎对分区的支持有所了解。 My…
【MySQL技术内幕】5.1-InnoDB存储引擎索引概述
1. InnoDB存储引擎索引概述 前面已经提到过, InnoDB存储引擎支持的哈希索引是自适应的, InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引。 B+树索引就是传统意义上的索引,这是目前关系型数据库系统中查找最为常用和最…
【MySQL技术内幕】4.6-约束
关系型数据库系统和文件系统的一个不同点是,关系数据库本身能保证存储数据的完整性,不需要应用程序的控制,而文件系统一般需要在程序端进行控制。当前几乎所有的关系型数据库都提供了约束( constraint)机制,该机制提供了一条强大而简易的途径来保证数据库中数据的完整性。一般来说,…
【MySQL技术内幕】4.5-Named File Formats机制
随着 InnoDB存储引擎的发展,新的页数据结构有时用来支持新的功能特性。比如前面提到的 InnoDB1.0x版本提供了新的页数据结构来支持表压缩功能,完全的溢出( Off page)大变长字符类型字段的存储。这些新的页数据结构和之前版本的页并不兼容,因此从InnoDB 1.0…
【MySQL技术内幕】4.4-InnoDB数据页结构
相信通过前面几个小节的介绍,读者已经知道页是 InnoDB存储引擎管理数据库的最小磁盘单位。页类型为B-Tree Node的页存放的即是表中行的实际数据了。在这一节中,我们将从底层具体地介绍 InnoDB数据页的内部存储结构注意 InnoDB公司本身并没有详细介绍其页结构的实现…
【MySQL技术内幕】4.2-InnoDB行记录格式
InnoDB存储引擎和大多数数据库一样(如 Oracle和 Microsoft SQL Server数据库),记录是以行的形式存储的。这意味着页中保存着表中一行行的数据。在 InnoDB1.0.x版本之前, InnoDB存储引擎提供了 Compact和 Redundant两种格…
【MySQL技术内幕】4.2-InnoDB逻辑存储结构
从 InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。页在一些文档中有时也称为块(block), InnoDB存储引擎的逻辑存储结构大致如图所示…
【MySQL技术内幕】4.1-索引组织表
在 InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表( index organized table)。在 InnoDB存储引擎表中,每张表都有个主键( Primary Key),如果在创建表时没有显式地定义主键,则 InnoDB存储引擎会按如…
【MySQL技术内幕】3.3-套接字文件、pid文件和表结构定义文件
前面提到过,在UNIX系统下本地连接 MySQL可以采用UNIX域套接字方式,这种方式需要一个套接字(socket)文件。套接字文件可由参数socket控制。一般在/tmp目录下,名为 mysql.sock: 当 MySQL实例启动时,会将自己的进程ID写入一个文件中——该文件…
【MySQL技术内幕】3.2-日志文件
日志文件记录了影响 MySQL数据库的各种类型活动。 MySQL数据库中常见的日志文件有: 这些日志文件可以帮助DBA对 MySQL数据库的运行状态进行诊断,从而更好地进行数据库层面的优化。 错误日志文件对 MySQL的启动、运行、关闭过程进行了记录。 MySQL DBA在遇到…
【MySQL技术内幕】3.1-参数文件
当 MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等。在默认情况下, MySQL实例会按照一定的顺序在指定的位置进行读取,用户只需通过以下命令来寻找即可。 MySQL数据库参数文…
【MySQL技术内幕】2.7-启动关闭与恢复
InnoDB是 MySQL数据库的存储引擎之一,因此 InnoDB存储引擎的启动和关闭,更准确的是指在 MySQL实例的启动过程中对 InnoDB存储引擎的处理过程。 在关闭时,参数 innodb_fast_shutdown影响着表的存储引擎为 InnoDB的行为。该参数可取值…
【MySQL技术内幕】2.6-InnoDB关键特性
Insert Buffer 可能是 InnoDB 存储引擎关键特性中最令人激动与兴奋的一个功能。不过这个名字可能会让人认为插人缓冲是缓冲池中的一个组成部分。其实不然, InnoDB 缓冲池中有 Insert Buffer 信息固然不错,但是 Insert Buffer和数据页一…
【MySQL技术内幕】2.5-Master Thread工作方式
InnoDB 存储引擎的主要工作都是在一个单独的后台线程 Master Thread 中完成的,这一节将具体解释该线程的具体实现及该线程可能存在的问题。 Master Thread 具有最高的线程优先级别。其内部由多个循环( loop )组成:主循环 ( loop )、后台循环…
【MySQL技术内幕】2.4-Checkpoint技术
前面已经讲到了,缓冲池的设计目的为了协调CPU速度与磁盘速度的鸿沟。因此页的操作首先都是在缓冲池中完成的。如果一条DML语句,如Update或Delete改变了页中的记录,那么此时页是脏的,即缓冲池中的页的版本要比磁盘的新。数据库需要将新版本的页从缓冲池刷新到磁盘。 倘若每次一…
下一页