标签分类 热门分类
当前位置:首页 > 数据库电子书 > MySQL电子书网盘下载
MySQL技术内幕:InnoDB存储引擎 MySQL技术内幕:InnoDB存储引擎
柯南721

柯南721 提供上传

资源
19
粉丝
40
喜欢
299
评论
15

    MySQL技术内幕:InnoDB存储引擎 PDF 第2版

    MySQL电子书
    • 发布时间:

    给大家带来的一篇关于MySQL相关的电子书资源,介绍了关于MySQL、技术内幕、InnoDB、存储引擎方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小39.3 MB,姜承尧编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.9,更多相关的学习资源可以参阅 数据库电子书、等栏目。

  • MySQL技术内幕:InnoDB存储引擎 PDF 下载
  • 下载地址:https://pan.baidu.com/s/17shptEHit1JrUpkQ_kKl5
  • 分享码:vhv3
  • MySQL技术内幕:InnoDB存储引擎

    《MySQL技术内幕:InnoDB存储引擎(第2版)》由中国杰出MySQL权威专家亲身绘制,世界各国多名数据库查询权威专家联手强烈推荐。做为国内唯一二本有关InnoDB的著作,《MySQL技术内幕:InnoDB存储引擎(第2版)》的第1版备受五星好评,第2版不但对于最新消息的MySQL 5.6对有关內容开展了全方位的填补,还依据广大读者的意见反馈对第1版中存在的问题开展了健全,《MySQL技术内幕:InnoDB存储引擎(第2版)》大概重写了60%的內容。《MySQL技术内幕:InnoDB存储引擎(第2版)》从源码的视角深度解读了InnoDB的系统架构、保持基本原理、工作方案,并得出了很多最好实践活动,能协助你系统软件而深层次地把握InnoDB,更关键的是,它能让你设计管理性能、高可用性的数据库出示极佳的具体指导。

    《MySQL技术内幕:InnoDB存储引擎(第2版)》总共12章,最先宏观经济地详细介绍了MySQL的系统架构和各种各样普遍的存储引擎及其他们中间的较为;然后以InnoDB的內部保持为突破口,逐个详尽解读了InnoDB存储引擎內部的每个程序模块的保持基本原理,包含InnoDB存储引擎的系统架构、运行内存中的数据结构、应用场景InnoDB存储引擎的表和页的物理学存储、数据库索引与优化算法、文档、锁、事务管理、备份与恢复,及其InnoDB的特性调优等关键的专业知识;最终对InnoDB存储引擎源码的编译和调节干了详细介绍,对大伙儿阅读文章和了解InnoDB的源码有关键的指导作用。

    《MySQL技术内幕:InnoDB存储引擎(第2版)》合适全部期待搭建和管理方法性能、高可用性的MySQL数据库的开发人员和DBA阅读文章。

    目录

    • 推荐序
    • 前言
    • 第1章 MySQL体系结构和存储引擎 1
    • 1.1 定义数据库和实例 1
    • 1.2 MySQL体系结构 3
    • 1.3 MySQL存储引擎 5
    • 1.3.1 InnoDB存储引擎 6
    • 1.3.2 MyISAM存储引擎 7
    • 1.3.3 NDB存储引擎 7
    • 1.3.4 Memory存储引擎 8
    • 1.3.5 Archive存储引擎 9
    • 1.3.6 Federated存储引擎 9
    • 1.3.7 Maria存储引擎 9
    • 1.3.8 其他存储引擎 9
    • 1.4 各存储引擎之间的比较 10
    • 1.5 连接MySQL 13
    • 1.5.1 TCP/IP 13
    • 1.5.2 命名管道和共享内存 15
    • 1.5.3 UNIX域套接字 15
    • 1.6 小结 15
    • 第2章 InnoDB存储引擎 17
    • 2.1 InnoDB存储引擎概述 17
    • 2.2 InnoDB存储引擎的版本 18
    • 2.3 InnoDB体系架构 19
    • 2.3.1 后台线程 19
    • 2.3.2 内存 22
    • 2.4 Checkpoint技术 32
    • 2.5 Master Thread工作方式 36
    • 2.5.1 InnoDB 1.0.x版本之前的Master Thread 36
    • 2.5.2 InnoDB1.2.x版本之前的Master Thread 41
    • 2.5.3 InnoDB1.2.x版本的Master Thread 45
    • 2.6 InnoDB关键特性 45
    • 2.6.1 插入缓冲 46
    • 2.6.2 两次写 53
    • 2.6.3 自适应哈希索引 55
    • 2.6.4 异步IO 57
    • 2.6.5 刷新邻接页 58
    • 2.7 启动、关闭与恢复 58
    • 2.8 小结 61
    • 第3章 文件 62
    • 3.1 参数文件 62
    • 3.1.1 什么是参数 63
    • 3.1.2 参数类型 64
    • 3.2 日志文件 65
    • 3.2.1 错误日志 66
    • 3.2.2 慢查询日志 67
    • 3.2.3 查询日志 72
    • 3.2.4 二进制日志 73
    • 3.3 套接字文件 83
    • 3.4 pid文件 83
    • 3.5 表结构定义文件 84
    • 3.6 InnoDB存储引擎文件 84
    • 3.6.1 表空间文件 85
    • 3.6.2 重做日志文件 86
    • 3.7 小结 90
    • 第4章 表 91
    • 4.1 索引组织表 91
    • 4.2 InnoDB逻辑存储结构 93
    • 4.2.1 表空间 93
    • 4.2.2 段 95
    • 4.2.3 区 95
    • 4.2.4 页 101
    • 4.2.5 行 101
    • 4.3 InnoDB行记录格式 102
    • 4.3.1 Compact行记录格式 103
    • 4.3.2 Redundant行记录格式 106
    • 4.3.3 行溢出数据 110
    • 4.3.4 Compressed和Dynamic行记录格式 117
    • 4.3.5 CHAR的行结构存储 117
    • 4.4 InnoDB数据页结构 120
    • 4.4.1 File Header 121
    • 4.4.2 Page Header 122
    • 4.4.3 Infimum和Supremum Records 123
    • 4.4.4 User Records和Free Space 123
    • 4.4.5 Page Directory 124
    • 4.4.6 File Trailer 124
    • 4.4.7 InnoDB数据页结构示例分析 125
    • 4.5 Named File Formats机制 132
    • 4.6 约束 134
    • 4.6.1 数据完整性 134
    • 4.6.2 约束的创建和查找 135
    • 4.6.3 约束和索引的区别 137
    • 4.6.4 对错误数据的约束 137
    • 4.6.5 ENUM和SET约束 139
    • 4.6.6 触发器与约束 139
    • 4.6.7 外键约束 142
    • 4.7 视图 144
    • 4.7.1 视图的作用 144
    • 4.7.2 物化视图 147
    • 4.8 分区表 152
    • 4.8.1 分区概述 152
    • 4.8.2 分区类型 155
    • 4.8.3 子分区 168
    • 4.8.4 分区中的NULL值 172
    • 4.8.5 分区和性能 176
    • 4.8.6 在表和分区间交换数据 180
    • 4.9 小结 182
    • 第5章 索引与算法 183
    • 5.1 InnoDB存储引擎索引概述 183
    • 5.2 数据结构与算法 184
    • 5.2.1 二分查找法 184
    • 5.2.2 二叉查找树和平衡二叉树 185
    • 5.3 B+树 187
    • 5.3.1 B+树的插入操作 187
    • 5.3.2 B+树的删除操作 190
    • 5.4 B+树索引 191
    • 5.4.1 聚集索引 192
    • 5.4.2 辅助索引 196
    • 5.4.3 B+树索引的分裂 200
    • 5.4.4 B+树索引的管理 202
    • 5.5 Cardinality值 210
    • 5.5.1 什么是Cardinality 210
    • 5.5.2 InnoDB存储引擎的Cardinality统计 212
    • 5.6 B+树索引的使用 215
    • 5.6.1 不同应用中B+树索引的使用 215
    • 5.6.2 联合索引 215
    • 5.6.3 覆盖索引 218
    • 5.6.4 优化器选择不使用索引的情况 219
    • 5.6.5 索引提示 221
    • 5.6.6 Multi-Range Read优化 223
    • 5.6.7 Index Condition Pushdown(ICP)优化 226
    • 5.7 哈希算法 227
    • 5.7.1 哈希表 228
    • 5.7.2 InnoDB存储引擎中的哈希算法 229
    • 5.7.3 自适应哈希索引 230
    • 5.8 全文检索 231
    • 5.8.1 概述 231
    • 5.8.2 倒排索引 232
    • 5.8.3 InnoDB全文检索 233
    • 5.8.4 全文检索 240
    • 5.9 小结 248
    • 第6章 锁 249
    • 6.1 什么是锁 249
    • 6.2 lock与latch 250
    • 6.3 InnoDB存储引擎中的锁 252
    • 6.3.1 锁的类型 252
    • 6.3.2 一致性非锁定读 258
    • 6.3.3 一致性锁定读 261
    • 6.3.4 自增长与锁 262
    • 6.3.5 外键和锁 264
    • 6.4 锁的算法 265
    • 6.4.1 行锁的3种算法 265
    • 6.4.2 解决Phantom Problem 269
    • 6.5 锁问题 271
    • 6.5.1 脏读 271
    • 6.5.2 不可重复读 273
    • 6.5.3 丢失更新 274
    • 6.6 阻塞 276
    • 6.7 死锁 278
    • 6.7.1 死锁的概念 278
    • 6.7.2 死锁概率 280
    • 6.7.3 死锁的示例 281
    • 6.8 锁升级 283
    • 6.9 小结 284
    • 第7章 事务 285
    • 7.1 认识事务 285
    • 7.1.1 概述 285
    • 7.1.2 分类 287
    • 7.2 事务的实现 294
    • 7.2.1 redo 294
    • 7.2.2 undo 305
    • 7.2.3 purge 317
    • 7.2.4 group commit 319
    • 7.3 事务控制语句 323
    • 7.4 隐式提交的SQL语句 328
    • 7.5 对于事务操作的统计 329
    • 7.6 事务的隔离级别 330
    • 7.7 分布式事务 335
    • 7.7.1 MySQL数据库分布式事务 335
    • 7.7.2 内部XA事务 340
    • 7.8 不好的事务习惯 341
    • 7.8.1 在循环中提交 341
    • 7.8.2 使用自动提交 343
    • 7.8.3 使用自动回滚 344
    • 7.9 长事务 347
    • 7.10 小结 349
    • 第8章 备份与恢复 350
    • 8.1 备份与恢复概述 350
    • 8.2 冷备 352
    • 8.3 逻辑备份 353
    • 8.3.1 mysqldump 353
    • 8.3.2 SELECT...INTO OUTFILE 360
    • 8.3.3 逻辑备份的恢复 362
    • 8.3.4 LOAD DATA INFILE 362
    • 8.3.5 mysqlimport 364
    • 8.4 二进制日志备份与恢复 366
    • 8.5 热备 367
    • 8.5.1 ibbackup 367
    • 8.5.2 XtraBackup 368
    • 8.5.3 XtraBackup实现增量备份 370
    • 8.6 快照备份 372
    • 8.7 复制 376
    • 8.7.1 复制的工作原理 376
    • 8.7.2 快照+复制的备份架构 380
    • 8.8 小结 382
    • 第9章 性能调优 383
    • 9.1 选择合适的CPU 383
    • 9.2 内存的重要性 384
    • 9.3 硬盘对数据库性能的影响 387
    • 9.3.1 传统机械硬盘 387
    • 9.3.2 固态硬盘 387
    • 9.4 合理地设置RAID 389
    • 9.4.1 RAID类型 389
    • 9.4.2 RAID Write Back功能 392
    • 9.4.3 RAID配置工具 394
    • 9.5 操作系统的选择 397
    • 9.6 不同的文件系统对数据库性能的影响 398
    • 9.7 选择合适的基准测试工具 399
    • 9.7.1 sysbench 399
    • 9.7.2 mysql-tpcc 405
    • 9.8 小结 410
    • 第10章 InnoDB存储引擎源代码的编译和调试 411
    • 10.1 获取InnoDB存储引擎源代码 411
    • 10.2 InnoDB源代码结构 413
    • 10.3 MySQL 5.1版本编译和调试InnoDB源代码 415
    • 10.3.1 Windows下的调试 415
    • 10.3.2 Linux下的调试 418
    • 10.4 cmake方式编译和调试InnoDB存储引擎 423
    • 10.5 小结 424

    上一篇:应用随机过程 概率模型导论  下一篇:大数据挖掘:系统方法与实例分析

    展开 +

    收起 -

     
    MySQL 相关电子书
    关于MySQL的学习笔记
    网友NO.558979

    MySQL中Innodb的事务隔离级别和锁的关系的讲解教程

    前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。 一次封锁or两段锁? 因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,然后全部锁住,在方法运行之后,再全部解锁。这种方式可以有效的避免循环死锁,但在数据库中却不适用,因为在事务开始阶段,数据库并不知道会用到哪些数据。 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段(所以叫两段锁) 加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁(共享锁,其它事务可以继续加共享锁,但不能加排它锁),在进行写操作之前要申请并获得X锁(排它锁,其它事务不能再获得任何锁)。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。 解锁阶段:当事务释放了一个封……

    网友NO.367027

    MySQL InnoDB 二级索引的排序示例详解

    排序问题 最近看了极客时间上 《MySQL实战45讲》,纠正了一直以来对 InnoDB 二级索引的一个理解不到位,正好把相关内容总结下。 PS: 本文的所有测试基于 MySQL 8.0.13 。 先把问题抛出来,下面的 SQL 所创建的表,有两个查询语句,哪个索引是非必须的? CREATE TABLE `geek` ( `a` int(11) NOT NULL, `b` int(11) NOT NULL, `c` int(11) NOT NULL, `d` int(11) NOT NULL, PRIMARY KEY (`a`,`b`), KEY `c` (`c`), KEY `ca` (`c`,`a`), KEY `cb` (`c`,`b`)) ENGINE=InnoDB;select * from geek where c=N order by a limit 1;select * from geek where c=N order by b limit 1; 作者给的答案是索引 c 和 ca 的数据模型是一样的,因此 ca 是多余的。为啥?? 我们知道,二级索引里存放的不是行的位置,而是主键的值,也知道索引是有序的。 如果 c 与 ca 的数据模型一样,那么就要求二级索引的叶子节点不仅是按索引列排序、而且还按关联的主键值进行排序。 我以前的理解是 二级索引只按索引列进行排序,主键值是不排序的。 问了专栏作者,得到的答复是:索引 c 就是按照 cab 这样排序,(二级索引))有保证主键算进去、还是有序的。(PS:非原话,前后问了三次得到)。 本着 先问是不是,再问为什么 的思路,进行一番探究。 是不是? 如果能直接看 InnoDB 的数据文件,那就可以直接看出是不是遵循了这样的排序规则。可惜那……

    网友NO.567222

    MySQL存储引擎中MyISAM和InnoDB区别详解

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。 以下是一些细节和具体实现的差别: ◆1.InnoDB不支持FULLTEXT类型的索引。 ◆2.InnoDB 中不保存表的具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的。 ◆3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。 ◆4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。 ◆5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。 另外,InnoDB表的行锁也不是绝对的,假如在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%” 两种类型最主……

    网友NO.781782

    MySQL中InnoDB存储引擎的锁的基本使用教程

    MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 各种锁特点 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生冲突的概率最高,并发度最低 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高 页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般 InnoDB存储引擎的锁 InnoDB存储引擎实现了如下两种锁 1、共享锁(S Lock),允许事务读一行数据 2、排他锁(X Lock),允许事务更新或者删除一行数据 共享锁和排他锁的兼容如下图所示 一致性的非锁定读 一致性的非锁定行读(consistent nonlocking read)是指InnoDB存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中行的数据。如果读取的行正在执行DELETE、UPDATE操作,这是读取操作不会因此而会等待行上锁的释放,相反,InnoDB会去读取行的一个快照数据。 之所以称其为非锁定读,因为不需要等待访问的行上X锁的释放。快照数据是指改行之前版本的数据,该实现是通过undo段来实现的。但是在不同事务隔离级别下,读取的方式不同,并不是每个事务隔离……

    Copyright 2018-2020 xz577.com 码农之家

    电子书资源由网友、会员提供上传,本站记录提供者的基本信息及资源来路

    鸣谢: “ 码小辫 ” 公众号提供回调API服务、“ 脚本CDN ”提供网站加速(本站寻求更多赞助支持)

    版权投诉 / 书籍推广 / 赞助:520161757@qq.com

    上传资源(网友、会员均可提供)

    查看最新会员资料及资源信息