第41期:两本《MySQL》2选1|已结束

互联网企业在近20年的崛起过程中,最应该感谢的是开源软件提供的支撑。包括操作系统、数据库、Web Server 在内的各种开源技术,以低成本的方式协助企业快速推出服务,赢得商业上的成功。
互联网时代最重要的资源是数据,所以存储数据的数据库是企业最重要的基础设施。有一款开源关系型数据库是大多数企业搭建服务环境的首选,那就是MySQL
说 MySQL 是全世界最流行的关系型数据库一点都不夸张,因为它的市场占有率达到 43% 以上。也许你看这篇文章时产生的数据,就在用 MySQL 管理。
MySQL 能从一众关系型数据库产品中脱颖而出,并不仅仅是因为它开源免费,还在于其高效的读写性能、长时间稳定运行的能力、部署简便灵活,以及活跃的社区支持。大量的使用与反馈也助推 MySQL 更加成熟,终有如今的地位。
数据库不仅对企业重要,对互联网行业里的技术人来说也同样重要。
有的朋友可能会有疑问:“我不是做数据库的,只要会写 SQL 语句就行了,其他的难题就交给DBA(数据库管理员)解决是不是就可以了?”

还真是不可以,我们来说说这是为什么。

用好 MySQL 是技术人的基本盘

在技术人的职业生涯中,除了专注于数据库技术的 DBA,无论是做开发岗、运维岗还是测试岗,也都需要透彻了解 MySQL,因为决定系统服务质量的关键节点就在这里。
如果程序员只会写 SQL 语句,慢查询影响了用户体验,不会优化怎么行?对于运维来说,如果不清楚 MySQL 的底层原理,怎么实施主从同步、读写分离,做好数据备份和恢复呢?
所以,熟悉 MySQL 就和掌握编程语言一样重要,是技术人的职业技能基本盘中重要的一部分。
但是不经过系统化的学习,技术人很可能会掉进一个陷阱,就是对于搜索得来的结果不加分辨地去使用。可想而知,要么是别人的方案在自己的环境里不适用,要么解决一个问题又引入新的问题,疲于应付。
不想让 MySQL 成为职业生涯的瓶颈,那就静下心来学透它吧。不必畏惧网上浩如烟海的资料,要筑牢 MySQL 的基本盘,看两本好书就够了。这两本书分别是《MySQL是怎样使用的:快速入门MySQL》《MySQL是怎样运行的:从根儿上理解MySQL》

image

image

前一本是小白入门,后一本是高手进阶。这两本书不是堆砌术语的枯燥说明书,而是相当生动有趣,有示例有代码,有图有真相,不信你翻开看看。

打稳底盘:学会使用 MySQL

如果你是零基础的朋友,看到这里请不要放弃,因为这一章就是专门为你准备的。
MySQL 属于关系型数据库,那么一定要把关系型数据库的理论学完才能上手实操吗?完全不必,看《MySQL是怎样使用的:快速入门MySQL》就可以。看这直白的书名就知道,它注重的就是从实践入手,以练促学
在学习本书时,可以分为三个阶段:

▮ 安装 MySQL 服务。书中详细描述了在 Windows 平台上的安装过程,并说明如何启动与关闭服务;

▮ 创建数据库与表。书中说明了命令行工具的使用方法,学会使用MySQL客户端程序连接数据库服务。接下来执行创建数据库,定义表数据类型、创建数据表,插入一些测试数据等任务;

▮ 掌握查询数据的方法。SQL 是通用的结构化查询语言,应用系统通过 SQL 取得数据并呈现出来。书中详细说明了分组查询、子查询、连接查询、并集查询等技术,这是学习者要投入最多的时间去反复练习和熟练运用的知识。

能将一个数据查询请求快速编写为一条 SQL 语言指令,使用 MySQL 的底盘就打稳了。再进一步,如果要优化复杂应用系统的查询效率,解决慢查询问题的瓶颈,那就一定要知道 MySQL 的底层知识。
让我们继续前进,成为 MySQL 的高手吧。

成为高手:摸透底层,MySQL 进阶

MySQL 是一款开源软件,对于喜欢追根究底的朋友来说,一头扎到代码里去就是摸透底层最直接的办法。但我不建议你这样做,因为 MySQL 有着 2000 多万行代码,体量巨大,架构十分复杂,贸然进入只会陷在代码的迷宫里。
要怎么摸透 MySQL 的底层呢?一个好办法就是站在前行者的肩膀上来学习。现在就可以来看《MySQL是怎样运行的:从根儿上理解MySQL》了。我们一起在书中探索一下MySQL 的根上都是什么。
数据库软件最重要的核心部件是存储引擎,MySQL 默认使用的是 InnoDB 存储引擎。InnoDB 被设计为处理大容量数据时可以最大化性能,也就是说在 CPU 运行周期内尽可能多地计算数据。
InnoDB 本身的架构和实现是非常复杂的,但书中没有一上来就列举一堆让人眼花缭乱的概念,而是从 InnoDB 的页结构说起。以 COMPACT 和 REDUNDANT 行格式为例,说明一条记录是如何被存储的。

image

记录真实数据的两条记录

清楚了数据的存储格式,接下来最重要的议题就是 InnoDB 实现数据快速查询的原理——B+树索引。书中先对 B+树的数据结构与算法进行了介绍,然后说明了 InnoDB 索引的两种类型:聚簇索引与二级索引。

image

新建 B+树

理解了 InnoDB 的索引技术的原理,书中就对创建和使用索引提出了具体的建议。因为 B+ 树索引在时间和空间上都有开销,所以书中提出了具体的建议,包括只为用于搜索、排序或分组的列创建索引、索引列的类型尽量小、尽量使用覆盖索引进行查询等。
有了关于数据页结构与 B+ 树索引的知识,就可以深入讲解查询优化技术了。从基于成本的优化到基于规则的优化,还说明了 EXPLAIN 与 optimizer trace 工具辅助分析查询优化的方法。掌握了这些妙招,相信做开发的朋友再也不会对如何优化慢查询感到无从下手了。

本书还对 InnoDB 的 Redo、Undo、锁等重要议题进行了同样细致入微的说明。把这本书啃透,无论是程序员、运维还是 DBA,以后再遇到 MySQL 相关的任何问题,都必定能一眼看穿本质,难题在谈笑间就迎刃而解了。

社区赠书

本次福利将送出 10 本书(MySQL是怎样使用的:快速入门MySQLMySQL是怎样运行的:从根儿上理解MySQL》2选1),点击链接也可直接优惠购买

截止时间:还需要支付积分,就还有赠书额度,先到先得

领取方式

第一步:支付积分即可兑换,复制“ 积分支付订单号 ”

第二步:在本站种私信我这些内容:积分支付订单号、活动书名、快递信息(姓名、电话、地址)

没有积分怎么办?

社区鼓励高质量的技术交流,所以只要发布有价值内容均可获得积分!

哪些内容算高质量?

1. 高质量的技术分享,原创、翻译、转载均可

2. 高质量的提问与回答,注意阅读《提问的艺术》

3. 分享优质Java与Spring的相关开源项目,板块:https://spring4all.com/forum/55.html

4. 分享优质资源(学习、软件等各种你觉得不错的资源),板块:https://spring4all.com/forum/123.html

5. 分享能够提高效率的软件工具,板块:https://spring4all.com/forum/53.html

另外,内容不错,获得精华贴、或者热门帖还有额外加分哦~

THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容