
mysql的原理和源码
文章平均质量分 96
迷雾总会解
我来,我见,我征服!
展开
-
Innodb存储引擎-备份和恢复(分类、冷备、热备、逻辑备份、二进制日志备份和恢复、快照备份、复制)
对于MySQL数据库来说,官方没有提供真正的增量备份的方法,大部分是通过二进制日志来实现的。这种方法与真正的增量备份相比,效率还是很低的。假设有一个100G的数据库,如果通过二进制日志来完成备份,可能同一个页需要多次执行SQL语句来完成重做的工作。但是对于真正的增量备份来说,只需要记录当前每个页最后的检查点的LSN。如果大于之前完全备份时的LSN,则备份该页,否则不用备份。这大大加快了备份的速度以及缩短了恢复的时间,同时这也是xtrabackup工具增量备份的原理。原创 2022-12-18 22:02:16 · 1441 阅读 · 0 评论 -
Innodb存储引擎-锁(数据库锁的查看、快照读&当前读、MVCC、自增长与锁、外键与锁、行锁、并发事务的问题、阻塞、死锁、锁升级、锁的实现)
锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理**对共享资源的并发访问**,InnoDB 存储引擎会在行级别上对表数据上锁,这固然不错。不过**InnoDB 存储引擎也会在数据库内部其他多个地方使用锁,从而允许对多种不同资源提供并发访问**。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。对于锁,用户可能对某个特定的关系数据库系统的锁定模型有一定的经验,但这并不意味着知道其他数据库。也就是说,它们各自对于锁的实现完全不同。对于MyISAM 引擎,其锁是表锁设计原创 2022-12-18 21:59:15 · 800 阅读 · 0 评论 -
Innodb存储引擎-索引和算法(B+树索引、Cardinality、联合索引、覆盖索引、MRR优化、ICP优化、哈希索引、全文索引)
对于其他数据库,如Oracle Ilg, 用户可以选择手工在事务提交时,或者固定间隔时间时将倒排索引的更新刷新到磁盘。对于InnoDB 存储引擎而言,其。原创 2022-12-18 21:53:07 · 800 阅读 · 0 评论 -
Innodb存储引擎-idb文件格式解析
将这两个值与File Header中的FIL_PAGE_SPACE_OR_CHKSUM和 FIL_PAGE_LSN值进行比较,看是否一致(checksum 的比较需要通过 InnoDB 的 checksum 函数来进行比较,不是简单的等值比较),以此来保证页的完整性(not corrupted)。在默认配置下,InnoDB存储引擎每次从磁盘读取一个页就会检测该页的完整性,原创 2022-12-18 21:45:36 · 5222 阅读 · 1 评论 -
Innodb存储引擎-表(约束、视图、物化视图、分区表)
分区功能并不是在存储引擎层完成的,因此不是只有InnoDB存储引擎支持分区,常见的存储引擎 MyISAM、NDB等都支持。但也并不是所有的存储引擎都支持, 如CSV、FEDORATED、MERGE等就不支持。在使用分区功能前,应该对选择的存储引擎对分区的支持有所了解。MySQL 数据库在5.1版本时添加了对分区的支持。分区的过程是将一个表或索引分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。原创 2022-12-18 21:34:41 · 632 阅读 · 0 评论 -
Innodb存储引擎-表(逻辑存储结构、行记录格式、数据页结构)
而最后的部分就是实际存储的每个列的数据了。实际数据根据索引类型存储方式不一样,分为:聚簇索引非叶子节点、聚簇索引叶子节点、二级索引非叶子节点、二级索引叶子节点。格式如下:聚簇索引非叶子节点:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YpCqoME2-1671369272992)(null)]聚簇索引叶子节点:二级索引非叶子节点:二级索引叶子节点:接着创建一张和表mytest内容完全一样但行格式为redundant的表mytest2:原创 2022-12-18 21:29:10 · 749 阅读 · 0 评论 -
Innodb存储引擎-文件(参数文件.cnf、日志文件、套接字文件.sock、pid文件.pid、表结构定义文件.frm、表空间文件ibdata1、重做日志文件)
因为MySQL插件式存储引擎的体系结构的关系,MySQL数据的存储是根据表进行的,每个表都会有与之对应的文件。但不论采用何种存储引擎,MySQL都有一个以frm为后缀名的文件,这个文件记录了该表的表结构定义。frm还用来存放视图的定义。原创 2022-12-18 21:10:13 · 422 阅读 · 0 评论 -
Innodb存储引擎-执行流程分析和二阶段提交分析
客户端与MySQL Server建立连接,发送语句给MySQL Server,接收到后如果是查询语句会先去查询缓存中看,有的话就直接返回了,(新版本的MySQL已经废除了查询缓存,命中率太低了),如果是缓存没有或者是非查询语句,会进行语法分析并创建一个解析树,然后进行优化,(解析器知道语句是要执行什么,会评估使用各种索引的代价,然后去使用索引,以及调节表的连接顺序)然后调用innodb引擎的接口来执行语句。在InnoDB中,不 光事务修改的数据库表数据是异步刷盘的,连Redo Log的写入本身也是异步的。原创 2022-12-18 21:05:11 · 1075 阅读 · 0 评论 -
Innodb存储引擎-体系架构、checkpoint、Master Thread工作方式、Insert Buffer、double write、自适应哈希索引、异步IO、预读、刷新邻接页、启动关闭恢复
InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracle数据库的架构。通常来说,InnoDB 存储引擎是OLTP应用中核心表的首选存储引擎。同时,也正是因为InnoDB的存在,才使MySQL数据库变得更有魅力。InnoDB存储引擎最早由InnobaseOy公司开发,被包括在MySQL数据库所有的二进制发行版本中,从MySQL 5.5版本开始是默认的表存储引擎(之前的版本InnoDB存储引擎仅在Windows下为默认的存储引擎)。原创 2022-12-18 20:44:59 · 437 阅读 · 0 评论 -
Innodb存储引擎-Mysql体系结构和存储引擎
数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可以是fim、 MYD、MYI、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但是定义仍然不变。实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。这两个词有时可以互换使用,不过两者的概念完全不同。在MySQL数据库中,实例与数据库的关通常系是一一对应的,即一个实例对应一个数据库原创 2022-12-18 20:32:51 · 213 阅读 · 0 评论