MySQL实战45讲
林晓斌
网名丁奇,前阿里资深技术专家
立即订阅
43177 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 这一次,让我们一起来搞懂MySQL
免费
基础篇 (8讲)
01 | 基础架构:一条SQL查询语句是如何执行的?
02 | 日志系统:一条SQL更新语句是如何执行的?
03 | 事务隔离:为什么你改了我还看不见?
04 | 深入浅出索引(上)
05 | 深入浅出索引(下)
06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
07 | 行锁功过:怎么减少行锁对性能的影响?
08 | 事务到底是隔离的还是不隔离的?
实践篇 (37讲)
09 | 普通索引和唯一索引,应该怎么选择?
10 | MySQL为什么有时候会选错索引?
11 | 怎么给字符串字段加索引?
12 | 为什么我的MySQL会“抖”一下?
13 | 为什么表数据删掉一半,表文件大小不变?
14 | count(*)这么慢,我该怎么办?
15 | 答疑文章(一):日志和索引相关问题
16 | “order by”是怎么工作的?
17 | 如何正确地显示随机消息?
18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?
19 | 为什么我只查一行的语句,也执行这么慢?
20 | 幻读是什么,幻读有什么问题?
21 | 为什么我只改一行的语句,锁这么多?
22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
23 | MySQL是怎么保证数据不丢的?
24 | MySQL是怎么保证主备一致的?
25 | MySQL是怎么保证高可用的?
26 | 备库为什么会延迟好几个小时?
27 | 主库出问题了,从库怎么办?
28 | 读写分离有哪些坑?
29 | 如何判断一个数据库是不是出问题了?
30 | 答疑文章(二):用动态的观点看加锁
31 | 误删数据后除了跑路,还能怎么办?
32 | 为什么还有kill不掉的语句?
33 | 我查这么多数据,会不会把数据库内存打爆?
34 | 到底可不可以使用join?
35 | join语句怎么优化?
36 | 为什么临时表可以重名?
37 | 什么时候会使用内部临时表?
38 | 都说InnoDB好,那还要不要使用Memory引擎?
39 | 自增主键为什么不是连续的?
40 | insert语句的锁为什么这么多?
41 | 怎么最快地复制一张表?
42 | grant之后要跟着flush privileges吗?
43 | 要不要使用分区表?
44 | 答疑文章(三):说一说这些好问题
45 | 自增id用完怎么办?
特别放送 (1讲)
直播回顾 | 林晓斌:我的 MySQL 心路历程
结束语 (1讲)
结束语 | 点线网面,一起构建MySQL知识网络
MySQL实战45讲
登录|注册

直播回顾 | 林晓斌:我的 MySQL 心路历程

林晓斌 2018-12-18
在专栏上线后的 11 月 21 日,我来到极客时间做了一场直播,主题就是“我的 MySQL 心路历程”。今天,我特意将这个直播的回顾文章,放在了专栏下面,希望你可以从我这些年和 MySQL 打交道的经历中,找到对你有所帮助的点。
这里,我先和你说一下,在这个直播中,我主要分享的内容:
我和 MySQL 打交道的经历;
你为什么要了解数据库原理;
我建议的 MySQL 学习路径;
DBA 的修炼之道。

我的经历

以丰富的经历进入百度

我是福州大学毕业的,据我了解,那时候我们学校的应届生很难直接进入百度,都要考到浙江大学读个研究生才行。没想到的是,我投递了简历后居然进了面试。
入职以后,我跑去问当时的面试官,为什么我的简历可以通过筛选?他们说:“因为你的简历厚啊”。我在读书的时候,确实做了很多项目,也实习过不少公司,所以简历里面的经历就显得很丰富了。
在面试的时候,有个让我印象很深刻的事儿。面试官问我说,你有这么多实习经历,有没有什么比较好玩儿的事?我想了想答道,跟你说个数据量很大的事儿 ,在跟移动做日志分析的时候我碰到了几千万行的数据。他听完以后就笑了。
后来,我进了百度才知道,几千万行那都是小数据。

开始尝试看源码解决问题

加入百度后,我是在贴吧做后端程序,比如权限系统等等。其实很简单,就是写一个 C 语言程序,响应客户端请求,然后返回结果。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《MySQL实战45讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(48)

  • 小确幸
    专栏跟到现在,发现老师真的很负责,每篇的很多评论都认真回复。

    昨天回顾了去年2月份老大分享的数据库方面的内容,当时一脸懵逼的内容,现在看了一遍,无压力了 感觉超级棒~

    我是软件工程师,平时工作用的是sql server。虽然和mysql不同,不过底层原理都是类似的。最大的收获是老师说的方法论和数据库的原理(以前只知道how,不会去追究why),当我们深入了解底层后,感觉大不同。

    实迷途而未远,觉今是而昨非~

    多谢老师~
    2018-12-18
    52
  • 悟空
    谢谢老师,让我体会到一个真正做技术人的态度,感谢
    2018-12-18
    18
  • 极客007
    老师,我们公司原来一直用oracle,现在逐渐迁移到了postgresql,他们的底层实现和mysql有相似之处没
    2018-12-18
    13
  • 杰之7
    通过这一节的阅读老师的心路历程,给我的第一个感受是老师敢做,很多人包括我自己都是有退缩心理的,但阅读老师的文章,老师是勇往的在向前走。

    阅读到后面,越来越能感受到老师文章讲述的计算机基础学科的重要性,这其中就会锻炼人的耐心和技术水准,在老师开发数据库做源码分析时,我想又何止C和C++呢。必定会涉及到计算机操作内存,文件等内容,还有其他一些内容等。

    对老师给的多写SQL,尽量少用界面软件,我也非常认同,也是我们熟悉Mysql的必经之路,可以让我们对数据底层的东西建立起我们的感觉,图形界面用多了会让我们失去这项能力。

    不敢奢望最后能走多远,能有老师带着学习成长就值得。


    作者回复: 👍🤝

    2019-01-14
    8
  • Zzz
    林老师,关于贴吧系统权限脏页刷新的那个例子,有个疑问:既然“MySQL 里面就只有我那一个 select 全表扫描的请求“,为什么会有脏页呢?本来我想的是不是系统崩溃后MySQL在通过redo log恢复,但是恢复不是应该发在MySQL重启后,为select语句提供服务之前吗,它们应该已经刷新到磁盘了。那脏页是哪来的呢?

    作者回复: crash recovery 过程中产生的

    2019-01-22
    7
  • 滔滔
    老师,想问一个关于加锁的问题,在mysql中有很多种锁,比如意向锁,行锁,gap锁,页面锁等等,往往一条复杂的sql语句的执行过程中要加很多的锁,通常情况下,是否存在一个锁申请的队列,并发的事务都向这个队列中提出自己想加的锁的申请,然后引擎根据队列中的顺序依次加锁,还是说加锁过程是原子的一次完成的呢?比如说一个update语句走全表扫描,在rr隔离级别下,会对每一条记录加x锁以及gap锁,这些锁是一次性加上的吗?

    作者回复: 不是一次性,你这个问题很好,在第21篇会讲到

    2018-12-18
    4
  • 姚伟
    老师说的了解数据库原理就是要去读懂MySQL的源代码吗?

    作者回复: 不一定要。

    我见过很多经验丰富的数据库专家,他们对原理理解非常透彻,业务架构设计很有经验,也是很厉害的

    2018-12-18
    3
  • Aliliin
    学习用对方法真的很重要,感谢老师。
    2018-12-18
    3
  • One day
    工作几年也大都是CURD,然后知道的就是索引的用法创建方式等等,和一些锁的概念以及实现方式,却不知道底层的具体是怎么一步步实现的,为什么sql这样一执行的结果就是这个样子,做的多就是分页查询以及联合查询等等。这个专栏不仅让我知道sql到底是怎么执行的,innDb和myAsm的区别,为什么这样建立索引等等,最后最重要的是学习方法,mysql也许会有更新,但是老师的方法确实一直受用,由衷感谢了...
    2018-12-18
    2
  • Ahmed
    老师好,很喜欢您的课程,我刚毕业入职不久,对大数据很感兴趣,但是公司的大数据开发岗位好像和想象的不太一样。更多的是写SQL,python或者shell脚本处理数据,做报表和客户打交道。想问的是,这是不是就是大数据开发的一种(听说阿里也有这种岗位),未来前景怎么样,技术方向有哪些发展或者说自己需要掌握什么技能?谢谢啦
    2019-07-11
    1
  • godtrue
    此篇不费脑费心,感谢老师的分享,成为技术大牛不是一朝一夕的事,拥有天赋的人会快一点没有天赋的人也有机会。练武不练功,到老一场空。基础很重要呀!没有内功只有招式,想成为高手几乎是不可能。基础是啥?在计算界,我觉得就是:
    计算机组成原理
    计算机操作系统原理
    编译原理
    计算机数据库原理
    计算网络原理
    算法及数据结构
    这些如果能掌握的好,就好似张无忌练会了九阳神功,再学别的又快又好,否则他们总会在你前进的路上乱抛石头。
    我就常被砸的鼻青脸肿,这些内功的修炼也不是一朝一夕的,路漫漫其修远兮,吾将上下而求索。
    2019-06-30
    1
  • 最初的印象
    视频链接:https://new.qq.com/omn/20181217/20181217A06I3V.html
    2019-06-11
    1
  • janey
    为什么没有测试怎么学MySQL?业务是MySQL紧耦合的,所以买了这门课,学到这一讲,有一些反复看了几遍,当时觉得懂了,再回头觉得需要分析的时候又忘了……主要接触不到实际的业务,测试时除非客户反馈,太关注单个sql的性能的话对测试效率是不可接受的。边矛盾边学习……

    作者回复: 性能测试的时候如果碰到好多慢查询,会需要你去看原因吗?还是就是直接贴给开发就好了😆

    2019-03-02
    1
  • liuq
    看了您的心路历程,我丧失了最后的一丝幻想,人与人的差距太大了,我意识到再怎么努力也达不到您刚毕业时的水平

    作者回复: 额… 怎么都不会晚的,我直到大一暑假才开始学写代码,进百度的时候旁边都是清北的同届毕业生,已经实习了一年半,我还从SVN学起,就是抓紧点时间就好了

    2019-01-08
    1
  • Nic-愛
    阅读丁奇老师的 MySQL 心路历程受益匪浅,那么2019 年第一个问题请教下丁奇老师,后续对 MySQL 2PC,3PC方面会做详细的讲解吗?在3PC场景中 MySQL 怎么保证数据的一致性?

    作者回复: 2PC已经有啦,你往后看哦😄

    2019-01-02
    1
  • 墨萧
    连接失败也不会重连,仍然用原来断掉的连接,所以就报错了。请问老师,怎么重连呢,我在连接url加上了&autoReconnect=true ,好像不起作用啊

    作者回复: 有些框架有bug,一般都会提供close然后再connect的方法给程序调用的吧?

    2018-12-19
    1
  • 小罗希冀
    请问一下,怎么判断数据是顺序写还是随机写?为啥日志之类的写操作是顺序写?
    2018-12-18
    1
  • 小华
    第一次写留言,虽然看起来有点吃力,但是多看几遍,还是能看懂的,支持丁奇老师,希望自己也能坚持下去
    2018-12-18
    1
  • 高高石头小花菇
    沙发
    2018-12-18
    1
  • 😍😯天空之称
    哈哈,我真是守着更新的
    2018-12-18
    1
收起评论
48
返回
顶部