《高性能MySQL》第四版发布后,收到了很多读者的反馈,其中关注最多的是作为一个初学者,应该如何能够较为系统的学习MySQL,从而应对日常工作或者获得更好的职业发展。于是和多个业内朋友讨论后,整理了一些MySQL学习的推荐资源,供初学者参考。

本文分成几部分,包括业界专家的经验、推荐书籍、视频/音频资源、其他资源或者学习方式、MySQL学习沟通群、抽奖赠书等。

业界专家的经验

阿里云的数据库专家 Yangyidba

提问:刚刚入行时,有哪些资料给你了帮助?

正式接触 MySQL 是2011年底,当时的公司的数据库版本主要是 5.5 版本和少量 5.1 版本。因为之前学Oracle的经验是查看官方文档,学习MySQL 资料主要是 “官方文档” 和当时的淘宝DBA团队组织的技术大学的技术分享,学习MySQL技术的技术特性和经典案例。

其实就现在而言,MySQL 官方文档依然是最好的学习资料和教材, 里面非常详细的说明 MySQL的基础架构,redo,undo,读写逻辑,字段类型,锁,存储引擎,主从复制,MGR ,性能优化等等。把官方文档通读一遍,基本上能超越60-70%左右的DBA,为什么不是更高呢?因为学习技术是为了使用技能。

提问:进一步了解 MySQL/数据库,哪些资料给了你帮助?

换个回答的方式,哪些因素帮助我提升数据库技能水平?总结起来大概三个方面:

1. 掌握基础知识之后,会有 “纸上来得终觉浅,绝知此事要躬行”” 的想法。基于对各种MySQL 技术知识点和 功能特性的理解,搭建单节点,主备模式环境 做各种功能测试,并且将知识点的验证或者分析过程下来写博客,比如死锁,能将常见的20个死锁常见分析过程总结下来,相信死锁问题再也难不倒你了。

2. 如果是第一条是模拟考,那么真实的业务场景则是实战演练,在海量的业务场景下,层出不穷的业务问题和技术难点驱动 DBA 对 数据库的使用和限制了解的更多。比如:

  • truncat表 如何恢复?

  • 如果有500g binlog,如何加速 binlog 应用?

  • 如何删除3T的大表?

  • 秒杀场景下数据库设计和优化?

  • 如何排查业务访问db RT异常?

  • 为什么业务写完立即查询当时查不到?

3. 和优秀的同事或者优秀的人同行,比如有解决不了的疑惑可以咨询内核开发。

提问:现在回头来看,哪些资料你觉得是最推荐的,分别对于初入学,和深入学习的人来说?

对于初学者而言,首要目标是 夯实基础,学好基础/理论知识。

  • 官方文档

  • 《高性能MySQL》

  • 《MySQL性能调优与架构设计》

  • 《MySQL技术内幕:InnoDB存储引擎》

对于深入学习的人来说, 单独的数据库学习是没有意义的,必须服务好具体的业务场景才能发挥其价值。推荐:

  • 《数据密集型应用系统设计》

  • 《性能之巅》

  • 《漫画算法》

学习和总结各种业务场景下的数据库架构设计 ,数据库高可用,容灾,强红包,秒杀,直播弹幕等等。

匿名大佬 数年前就是阿里P9

对于初学者,建议自己手动安装常见的架构,比如最简单的一主一备,作为验证环境。找一些操作案例较多的博客或公众号文章,照着作者的思路执行。

然后再自己设计一些执行案例,先自己推导结果,再执行验证,在验证过程中加深理解或者勘误。

内核学习也可以延用这个方法,在验证过程中设想如果是自己实现这个功能的,会怎么写,然后通过阅读源码理解作者的设计思路。就是看源码要带着问题去看,找只要主要流程,GDB去调试单步执行。

阿里集团DBA团队 Leader 某陈姓大佬

推荐的重要学习资料包括:

  • MySQL 官方文档

  • 《MySQL 技术内幕:InnoDB 存储引擎》

  • MySQL 周边组件的文档与源码,如percona toolkit、MHA等

  • 初学者:丁奇 45 讲、MySQL 官方文档

深入学习:主要还是积累、排错,云数据库相关还是需要看下技术相关的论文。

推荐书籍与资源

MySQL作为当前最流行的关系型数据库,相关的书籍也非常多,这里罗列基本推荐如下:

MySQL相关的书籍

文档是最全面和权威的参考,而其他三本都是,根据豆瓣网友打分进行推荐的。第一本《MySQL是怎样运行的》适用于完全的初学者,内容由浅到深。第二本《高性能MySQL》则从“优化”为入口,非常系统介绍了MySQL的架构、优化,是一本非常好的进阶书籍。第三本是《MySQL技术内幕 InnoDB存储引擎》,这本书深入的介绍了MySQL核心组件InnoDB存储引擎,涵盖了数据库的事务原理、调度、物理存储、锁等知识。

另外,其实MySQL领域还有很多书籍偏重各有不同,这里不一一推荐了。

1、《MySQL是怎样运行的》

这本书于2020年出版,是一本比较新的书籍,整个书籍也是围绕其标题展开《MySQL是怎样运行的:从根儿上理解 MySQL》。这本书最大的特点是,全书有非常清晰的脉络,可以说是由“入门到精通”,书中放弃了一定的完整性(这个可以去看MySQL文档),而是非常接地气的从零开始,用了很多形象的比喻介绍MySQL数据库的各个概念。

同时,该书籍在每个章节对相关的概念也都进入了非常深入的讨论,例如,关于索引的介绍,从什么事索引、索引的物理结构开始介绍,然后,开始介绍MySQL的索引在查询、排序等场景的使用,最后,再介绍一些常见的索引优化技巧,包括普通索引、前缀索引、覆盖索引等。

总得来说,这本书是最近几年,面向于初学者非常不错的一本书。

2、《高性能MySQL》

《高性能MySQL》则从“优化”为入口,将MySQL相关的知识点聚合在一起,包括了查询性能优化(SQL优化)、高性能索引、库表结构(Schema)优化等,也包括了服务器配置(硬件和软件)优化、架构优化(包括了复制、只读节点、分片)等,还介绍了部分云服务商的MySQL等内容,是一本非常适合进阶阅读的书籍。

该书籍的作者、译者,也都是一直活跃在数据库领域第一线的数据库开发者,对于MySQL实践有着非常丰富经验。这也保障概书籍整体质量不错,不仅可以作为系统的阅读使用,也可以作为一个参考手册,可以根据自己工作需要,不定期的翻阅其中的部分章节。

3、《MySQL技术内幕 InnoDB存储引擎》

这本书则以InnoDB为切入点,非常深入的介绍了InnoDB或者说数据库的原理。InnoDB可以说是MySQL最为核心的组件,其原理不仅仅适用于MySQL,也几乎适用于大多数关系型数据库系统。

具体的,概书籍覆盖的内容包括了MySQL/InnoDB物理存储结构、索引、锁、事务等等。本书底层原理为出发点,帮助开发者理解MySQL行为、特点。

本书非常适合,对MySQL已经有一定程度了解,又希望更加深入了解其底层实现原理的人,或者是工作中需要对MySQL源码层进行修改或者定制的数据库内核开发者。

4、用好MySQL官方文档

MySQL官方文档可以说是最为权威、更新最为及时、质量也应该是最高的MySQL学习资料了。在早期,市面上还没有那么书籍的时候,我个人也是通过精读MySQL官方文档,以此为深入学习MySQL、甚至是深入学习数据库原理的知识库。

但是,官方文档为了保证完整性、准确性,会导致其看起来非常冗长、繁琐,有时候则感觉是在隔靴挠痒,偏向于介绍实现方式或原理以及MySQL提供的功能,而不会介绍读者最需要的最佳实践。例如,官方文档会详细介绍每个字段类型和参数详情,但是不会告诉你,哪些字段类型应该多用,哪些字段类型应该少用。

了解了官方文档的这些特性之后,官方文档阅读的几个要点总结如下:

  • 在阅读MySQL官方文档之前,需要先花些时间了解文档的整体架构,方便后续阅读查阅;

  • 在需要了解某个具体MySQL知识点时,建议可以精读MySQL文档;

  • 如果希望系统的了解某个MySQL特效的时候,可以完整的阅读;

  • MySQL文档MySQL官方文档最新的都是英文的,需要有一定的英文阅读能力。

总得来说,多阅读官方文档,虽然刚开始会觉得有些晦涩,坚持下来,你会发现收获巨大。

另外,阅读官方文档也要注意:也正是因为官方文档注重保障完整性、准确性,所以必定会繁琐、冗长,而不怎么介绍最佳实践经验,甚至一些主流的应用等,例如官方文档也只会将内容限定在MySQL本身,而不会包括硬件、软件或者云环境的相关的内容。

5、视频/音频资源

现在也越来越多的人通过视频的方式去在线的学习各类知识,B站上也有一些面相MySQL初学者的视频资源,质量我不太好评价,不过作为文字、书籍的补充学习,看一些视频学习还是非常不错的。大家可以去B站搜索一下“MySQL 初学者”就有很多的相关视频了,质量良莠不齐,需要大家自己甄别适合自己的。这里仅推荐一下由极客时间推出的《MySQL实战45讲》。

《MySQL实战45讲》

该系列价格也非常便宜,可以说是买不了吃亏、买不了上当,反倒是容易买到自己不能全部看完/听完的懊恼:《MySQL实战45讲》。

其他资源或者学习方式

1、使用Google/Baidu或者ChatGPT

通常,对于某个非常具体的知识点或者行业/场景最佳实践,在文档中都不会覆盖,但是,因为MySQL的用户量极大,在互联网上也有非常多的分享和讨论,从初阶到高阶,面相各个级别的内容都有,可以说是一个大宝库,用好了也是可以事半功倍的。

2、多总结、多分享、多交流

学习本身通常都是无趣的,如果学习的知识不能够很快的在实际工作中使用,也很容易忘记。另一个非常好的学习方法,不仅仅限于学习MySQL,就是分享很总结。一方面,可以让你系统的把一个知识点了解的比较完整和透彻,也可以帮你更好的记录,大大加深理解与记忆。

3、学以致用

也许你学习MySQL的原因可能只是因为面试、解决一个工作中的问题、增长知识或者只是兴趣,无论是哪个原因促使你学习,动手练习并在工作中使用这些知识,都是非常有效的。如果,你对MySQL或者数据库很有兴趣,那么则建议在当前的公司,找一个与数据库更近的岗位工作,这样自然可以事半功倍。

4、MySQL源代码

MySQL是一个开源数据库,另一个独天得厚的资源是MySQL源代码。不过,MySQL发展的时间已经非常长了,其代码复杂度也比较高,可以考虑从一两个小的模块、小的功能点着手,去学习、验证。

5、学术论文

当如果需要了解某个具体模块的来龙去脉以及设计思想的时候,有时候去查找一些经典的数据库领域论文可以很好的帮助你解决相关的疑问。有一套大部头《Readings in Database Systems》可以作为参考或者开始,不过内容较多,需要花费大量时间,总得来说不太适合初学者。

小结

对于不同基础的人,学习的重点和方法是各有不同的,所以本文会列举主要的MySQL数据库的学习资源和方法,读者需要结合自己的实际情况选择合适的方法。如果你有好的经验分享,可以在留言评论谈谈你的经验。

orczhou 是《高性能MySQL》的书籍的译者,同时也是来自 NineData(www.ninedata.cloud)的工程师。NineData向企业、开发者提供高效、安全的数据库 SQL 开发、数据库备份、数据复制/迁移/集成、数据对比等功能,是一个 SaaS 服务开箱即用,可以快速提升企业 SQL 开发效率,保障企业数据安全。


感谢点赞、转发一下,你们的支持会鼓励我们持续输出更多高质量的技术文章!欢迎关注我们的公众号「云数据库技术」,可以参与抽取10本MySQL书籍,提升数据库技能,让每个人用好数据和云。

MySQL这几本书,初学者必看!相关推荐

  1. arma模型_Eviews经典案例 | 初学者必看!ARMA模型精讲

    [本期分析师介绍]希音老师,<数据分析学堂>金牌分析师,对eviews的时间序列.ARMA.VAR.VECM.ARCH.GARCH等操作有深入的研究和实战经验,累计服务客户1000+.今天 ...

  2. 简单的CreateRemoteThread例程-初学者必看

    简单的CreateRemoteThread例程-初学者必看 // _remotethreaddemo.cpp : Defines the entry point for the console app ...

  3. myeclipse文档链接oracle,[数据库]MyEclipse 连接Oracle数据库(初学者必看)

    [数据库]MyEclipse 连接Oracle数据库(初学者必看) 0 2015-05-06 22:03:18 前言:刚接触Oracle数据库,便有一个需求,编写控制台程序,实现主人登录.数据库为Or ...

  4. led驱动电源初学者必看_初学者:如何在Windows 8中查看Metro应用程序的已用驱动器空间...

    led驱动电源初学者必看 In Windows 8 there is no obvious way of checking how much space each Metro app is takin ...

  5. lua菜鸟教程_初学者必看:Lua入门学习教程

    Lua入门学习教程是本文要介绍的内容,主要是来对Lua入门的一个学习,Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言.不幸的是,网上很少有关于这个语言的在线教程.我主要通过阅读其源代码来了 ...

  6. Qt Designer入门教程 初学者必看

    在Linux下,一个非常流行的RAD工具就是Qt Designer.它是嵌入式公司 Trolltech的Qt软件包的一个组成部分. Qt Designer入门教程 初学者必看是本文要介绍的内容,不说这 ...

  7. 计算机键盘分区,电脑初学者必看键盘五个分区功能知识.doc

    文档介绍: 电脑初学者必看键盘五个分区功能知识,电脑初学者必看键盘基本分区,初学者熟悉键盘,初学者熟悉键盘图片,美发初学者分区要多久,初学者熟悉键盘视频,电脑键盘功能介绍,钢琴键盘示意图简谱,键盘26 ...

  8. 初学者必看篇之国产数据库---达梦

    初学者必看篇之国产数据库-达梦 需要了解的可以点进去看看----达梦官网 首先,写这篇文章的目的是为了把学到的新知识做个总结梳理,同时我也希望在学习的过程中把一些需要注意的细节和大家分享,正所谓,共同 ...

  9. 至PJ初学者!(初学者必看)

    至PJ初学者!(初学者必看)                               dOSKEY lEE 首先,请您先明确几个问题: 1.您为什么学习PJ? 2.您想通过什么途径学习PJ? 3. ...

  10. mysql+数据库连接标识_新人必看!连接到MySQL数据库的两种方法

    原标题:新人必看!连接到MySQL数据库的两种方法 使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysq ...

最新文章

  1. 22张精炼图笔记,深度学习专项学习必备
  2. bash 脚本的自解压流程
  3. pearsonr() python_Python 来算算一线城市的二手房价格指数相关性
  4. python计算多次_Python – 只计算一次属性并多次使用结果(不同的方法)
  5. 关于jQuery Mobile 的pageinit,pageshow,以及data-ajax
  6. 没有检测到磁盘 请关闭计算机并至少,【基本计算机问题】计算机不是遇到非常严重的问题,请看这里解答...
  7. linux下的pdf分割合并软件
  8. c语言怎么添加搜索功能,C语言实现二叉搜索树的创建、插入、删除和查找
  9. html label 背景图片,Qt添加窗口背景图片、Label图片显示、、Label文字显示
  10. 创建一个ROS工作空间(ROS Workspace)过程中遇到的问题
  11. 关于双击此电脑、回收站、控制面板等提示找不到应用程序解决方案
  12. 超全面!新晋设计神器Figma 深度评测
  13. 现代x64的APIC中断控制器架构
  14. 快乐生活的1000+篇文章总结
  15. 1词法分析PaddleNLP / examples / lexical_analysis
  16. 重学 PyTorch 第四天:Module 和 Optimizer
  17. 【渝粤教育】电大中专计算机职业素养 (9)作业 题库
  18. 用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事
  19. Android 跳转到新浪微博
  20. 微软数学app 面向从小学,初中到高中各个级别和类型的数学问题

热门文章

  1. 「AWS」入门安装aws cli
  2. 【特征选择_论文阅读_毕业论文】01_张璐_西电_基于深度空间特征学习的极化SAR图像分类_2019
  3. 仿闲鱼 底部菜单html,GitHub - 494293346/rotateMenu: 仿闲鱼首页,“底部加号弹出菜单选项” 界面,动画效果可能跟闲鱼有点不一样...
  4. Java 15 正式发布, 14 个新特性,刷新你的认知!!
  5. 玩游戏学c语言(一)EasyX图像库安装
  6. 闪亮登场!在树莓派上点亮LED灯的简单详细方法
  7. gadecod matlab,【预测模型】基于遗传算法优化BP神经网络房价预测matlab源码
  8. IPS屏有哪些优缺点?
  9. 【福利】微信小程序130个精选Demo合集+123套源码视频
  10. 加固技术一路“升级打怪”,会封顶于第五代虚机源码保护技术吗?