高性能MySQL第四版-1

主要列出与第三版的区别

第一章、MySQL架构

MySQL逻辑架构

左右分别是第三和第四版。

第四版架构图里把第二层的“查询缓存”去掉了,也去掉了对应的文字描述。

连接管理和安全

“每个 客户 端 连接 都会 在 服务器 进程 中 拥有 一个 线程” 

第四版对这句话增加了一个前提 “默认情况下”

优化与执行

第三版中说“对于 SELECT 语句, 在 解析 查询 之前, 服务器 会 先 检查 查询 缓存。。。。”

第四版指出,由于并发的增加,缓存反而会成为瓶颈。因此在5.7.20版本,查询缓存被作为废弃特性。到了8.0版本,查询缓存完全被移除。应用程序可以自己用memcached或Redis缓存查询结果。

并发控制

第三版使用“ Unix 系统 的 email box ”为例。

第四版改用spreadsheet(Google的excel)做例子。

表锁

第三版这段被删了:“尽管 存储 引擎 可以 管理 自己的 锁, MySQL 本身 还是 会使 用 各种 有效 的 表 锁 来 实现 不同 的 目的。。。。。。”

行锁

第三版说“服务器 层 完全 不了解 存储 引擎 中的 锁 实现。”

第四版改成 “服务器 层 几乎 不了解 存储 引擎 中的 锁 实现。” 并增加了注解,说明有元数据锁,以及“应用层锁功能”。

事务

隔离级别

第四版在批注里给了两篇文章的链接,供数据库新人了解SQL的隔离级别:A Critique of ANSI SQL Isolation Levels | the morning paper (acolyer.org)Consistency Models (jepsen.io)

MySQL中的事务

第三版谈到了其他存储引擎如  和 NDB Cluster, XtraDB 和 PBXT。 

第四版只讲 InnoDB

在事务中混合使用存储 引擎

第四版增加了一个警告:在应用程序中最好不要混合使用多引擎。

隐式和显式锁定

第三版为  SELECTLOCK IN SHARE MODE

第四版改成8.0版本的写法  SELECTFOR SHARE

多版本并发控制

第三版说每个记录后面有两个隐藏列,并分了增删改查四种情况来描述InnoDb的mvcc操作

第四版把这部分描述全部重写了,并增加了一幅图来说明

每个事务开始时会分配一个事务ID,当该事务改写了一条记录,就会往Undo日志里面写一条Undo记录,其中带有该事务的ID,而回滚指针会指向这条Undo记录。这个机制也是事务回滚所需要的。

当另一个会话事务来读取记录时,InnoDb会比较这个会话里面的事务ID和记录里面的事务ID。如果记录状态对该事务应当不可见(比如修改记录的事务还没提交),那就会一直跟踪UndoLog记录,直到这条记录里面的事务ID符合对本会话事务可见的条件。这个跟踪过程可能会一直循环,循环结束的条件有可能是发现这条记录已经被删了。

事务中删除记录是通过设置记录中“info flag”的“删除位”来实现的。在UndoLog中被记录为“清除删除掩码”。

另外第四版还给了两篇博客链接来了解InnoDb的数据结构和mvcc。

The physical structure of records in InnoDB – Jeremy Cole (jcole.us)

The basics of the InnoDB undo logging and history system – Jeremy Cole (jcole.us)

感觉第四版这里写的也不是很清晰。

复制

第三版没有这一节,属于第四版新增内容。

这里简单介绍了复制,第9章会详细说明。

在源节点上,每个复制节点对应一个复制客户端的线程,并在发生写操作时被唤醒并发送新数据。

生产环境必须配置复制而且最少三个,最好还是不同地理位置的(云上的话就是不同区域)。

这些年的主要更新有:全局事务标识、多源复制、并行复制、半同步复制。

数据文件结构

第三版没有这一节,属于第四版新增内容。

8.0表的元数据被重新设计,放到数据字典表中。表的结构信息支持事务和原子定义修改。还增加了字典对象缓存,减少了服务器获取表元数据时的IO操作,更加高效。

InnoDB引擎

第三版除了InnoDB引擎之外还介绍了好几个其他的引擎。

第四版只介绍了InnoDB,其他引擎内容都删了。

此外还删除了“InnoDB的历史”这一节。

删除了这段  “在 MySQL 4. 1 以后 的 版本 中, InnoDB 可以 将 每个 表 的 数据 和 索引 存放 在 单独 的 文件 中。 InnoDB 也可以 使用 裸 设备 作为 表 空间 的 存储 介质, 但 现代 的 文件 系统 使得 裸 设备 不再 是 必要 的 选择。”

删除了这段 InnoDB 的 存储 格式 是 平台 独立 的, 也就是说 可以 将 数据 和 索引 文件 从 Intel 平台 复制 到 PowerPC 或者 Sun SPARC 平台。

增加了一段:5.6版本开始引入了在线DDL,刚开始仅有限的使用场景,在5.7和8.0有扩展。某些特定的表变更不需要全表锁也不需要外部工具,第6章会介绍。

JSON文档支持

为第四版新增内容

5.7引入JSON类型,支持自动校验和存储优化。还引入了支持JSON文档操作的SQL函数。8.0.7还支持在JSON数组上建立多值索引。第6章会介绍

数据字典变更

为第四版新增内容

8.0的另一个大变化是表的元信息存储,不再是保存到文件里面,而是移到数据字典里面,使用InnoDB表存储。这样在崩溃-恢复场景下,表的变更也也能通过事务化的方式来处理了。以前备份时需要依赖表的元数据文件来获取表的定义,现在也改成查新的数据字典来获取。

原子DDL

8.0引入。这样多个ddl语句就可以保证一起成功或者一起回滚。

版本变迁和开发模式

第三版有这两节,第四版全删了。

总结

第四版删除了第三版的这两段:

MySQL 最初 基于 ISAM 构建( 后来 被 MyISAM 取代), 其后 陆续 添加 了 更多 的 存储 引擎 和 事务 支持。 MySQL 有 一些 怪异 的 行为 是由 于 历史 遗留 导致 的。。。

当然, 存储 引擎 API 的 架构 也有 一些 缺点。 有时候 选择 多 并非 好事, 而在 MySQL 5. 0 和 MySQL 5. 1 中有 太多 的 存储 引擎 可以 选择。 InnoDB 对于 95% 以上 的 用户 来说 都是 最佳 选择。。。

并增加说明InnoDB是主要的发展方向,而且本书也主要讲InnoDB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Paperback: 1224 pages Data: September 8, 2008 Description: The unexpected pleasure of reading books about databases is that they are often written by authors with highly organized minds. Paul DuBois and his editors at New Riders have assembled MySQL with a clarity and lucidity that inspires confidence in the subject matter: a (nearly) freely redistributable SQL-interpreting database client/server primarily geared for Unix systems but maintained for Windows platforms as well. What isn't "free" about MySQL (the application) is its server's commercial use; all clients and noncommercial server use are free. DuBois's tome isn't free either, but its list price is modest in light of its value and the value of its namesake. The volume is superbly organized into 12 chapters and 10 appendices and contains a concise table of contents and a comprehensive 50-page index. It is peppered with references to the online HTML documentation that comes with the source and binary distributions (which are available and easy to install in stable rpm and tar releases.) The first third of MySQL is an excellent instruction tool for database newbies; the second third is a detailed reference for MySQL developers; and the last third consists of clearly annotated appendices, including C, Perl (but not Python), and PHP interfaces. Perhaps as an indication of the collective will of the developers of MySQL, DuBois does not separate Windows 95/98/NT design or development specifics from its main discussions. Platform-independent design is a goal, not a reality, and users will have to rely on newsgroups and mailing lists for details. Moreover, security issues are addressed in a mere 18 pages, a large part of which is devoted to standard Unix file and network-access permissions. Next to nothing is mentioned about defense against common hacking strategies, the use of secure shell interfaces, or access encryption. Although it is nearly 800 pages in length, DuBois's book is thankfully not encyclopedic. It is a valuable précis of the MySQL database, and its easy-to-skim look and feel will make it an excellent browse for database experts who want to know what is and is not possible within MySQL, the application.
高性能MySQL 第4版》是一本深入介绍MySQL数据库的性能优化和调优的权威图书。本书是数据库领域的经典之作,通过对MySQL的内部原理和架构的深度解析,教读者如何优化MySQL的性能,提升数据库的响应速度和吞吐量。 本书的第四版相比前几版进行了全面的更新和扩充,涵盖了MySQL 5.7和MySQL 8.0版本的新特性和改进。书中详细介绍了MySQL的体系架构、索引优化、查询性能优化、锁与事务处理、主从复制、备份恢复等重要主题,通过理论与实践相结合的方式,向读者传授了一系列提升MySQL性能的方法和技巧。 《高性能MySQL 第4版》全面且系统地介绍了MySQL数据库的性能调优策略,不仅帮助读者深入理解MySQL的工作原理,还提供了大量实用的优化案例和实践经验。读者可以通过本书学习到如何正确选择和创建索引、优化查询语句、调整数据库参数、利用缓存和分区等方法,从而有效地提高MySQL数据库的性能。 此外,本书还介绍了与MySQL性能密切相关的主从复制和备份恢复等技术,使读者能够更好地理解和应用这些关键技术来保证数据库的高可用性和数据安全性。 总而言之,《高性能MySQL 第4版》是一本适合MySQL开发人员、DBA以及对数据库性能优化感兴趣的读者的经典著作。通过学习本书,读者能够系统地掌握MySQL性能调优的核心思想和方法,帮助他们解决实际应用中遇到的性能问题,提升数据库的运行效率和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值