三年 crud,一周学会 mysql,助我拿到阿里研发 offer-爱代码爱编程
前言
MySQL 近两年一直稳居第二,随时有可能超过 Oracle 计晋升为第一名,因为 MySQL 的性能一直在被优化,同时安全机制也是逐渐成熟,更重要的是开源免费的。
目前大部分的互联网的首选也仍然是 MySQL,所以作为一名开发人员,掌握好 MySQL 的使用是非常有必要的,那么如何能够达到“精通”MySQL 的程度,那就需要耗费不少心思了。那么如何学习 MySQL 呢?今天就来好好谈谈。
下面介绍我学习 MySQL 的三个步骤,一周就搞定了 MySQL,让我顺顺利利拿下了阿里的研发岗 offer。
第一步:梳理 MySQL,列出结构图
无论是学习什么知识和技能,学会梳理是非常重要的,对于一个知识的梳理,一方面能够加速记忆,另一方面能够使得脑海知识点的整体更清晰完整,所以我学习 MySQL 的第一步就是梳理 MySQL。
对于 MySQL 的梳理,我也特整理了这么一个结构图,包含了 MySQL 相关的主要核心知识,真正做到了一目了然:
MySQL 笔记图(Xmind)
第二步:从基础到实战,统统搞定
1.从基础入门,解密 MySQL
2.MySQL 性能优化的 21 个最佳实践
3.关于 MySQL,我的个人小项目
之前写了一版简单的 shell 脚本,能够实现简单的 MySQL Group Replication 环境的测试快速部署,大概就 1 分多钟的时间就快速创建多个实例节点,如果要学习尝鲜 MGR 的话还是推荐试试的。
自己也手工测试过几次,还能用。说不上高大上,但是能够基本满足需求,今天又抽空完善了一下,在一个全新的环境中部署了一把,还算比较顺利。
我简单说说这个小的项目,也希望大家齐心协力,把它逐步完善起来。
github 上的截图如下:
如果要实现快速部署 MGR,下面是一些基本的步骤。
1. 首先需要下载MySQL软件,配置/etc/hosts文件,下载二进制包都不需要什么安装了,直接解压放入指定的目录即可,比如/usr/local/mysql。目前最新的版本是官方的5.7.19
第三步:吃透面试题,顺利进大厂
1.24 个必须掌握的数据库面试问题
-
为什么用自增列作为主键
-
为什么使用数据索引能提高效率
-
B+树索引和哈希索引的区别
-
哈希索引的优势
-
哈希索引不适用的场景
-
B 树和 B+树的区别
-
为什么说 B+比 B 树更适合实际应用中操作系统的文件索引和数据库索引?
-
MySQL 联合索引
-
什么情况下应不建或少建索引
-
什么是表分区?
-
表分区与分表的区别
-
表分区有什么好处?
-
分区表的限制因素
-
如何判断当前 MySQL 是否支持分区?
-
MySQL 支持的分区类型有哪些?
-
四种隔离级别
-
关于 MVVC
-
在 MVCC 并发控制中,读操作可以分成两类
-
行级锁定的优点
-
行级锁定的缺点
-
MySQL 优化
-
key 和 index 的区别
-
Mysql 中 MyISAM 和 InnoDB 的区别有哪些?
-
数据库表创建注意事项
2.MySQL 数据库高级工程师岗位面试题
3.BATJ 一线互联网常问 MySQL 精选 55 题
另附阿里面试题:
(由于篇幅问题,接下来的内容我只列出了阿里面试官的问题,自己能答上来的大概只有一半)
-
你能说说为什么 B+树相对于 B 树在查询上会更加优胜吗?
-
除了上面这个范围查询的,你还能说出其他的一些区别吗?
-
刚刚我们聊到 B+ Tree,那你知道 B+Tree 的叶子节点都可以存哪些东西吗?
-
聚簇索引和非聚簇索引,在查询数据的时候有区别吗?
-
刚刚你提到主键索引查询只会查一次,而非主键索引需要回表查询多次。是所有情况都是这样的吗?非主键索引一定会查询多次吗?
联合索引、最左前缀匹配
-
你们在创建索引的时候都会考虑哪些因素呢?你们有用过联合索引吗?
-
那你们在创建联合索引的时候,需要做联合索引多个字段之间顺序你们是如何选择的呢?
索引下推、查询优化
-
你知道在 MySQL 5.6 中,对索引做了哪些优化吗?
-
你们创建的那么多索引,到底有没有生效,或者说你们的 SQL 语句有没有使用索引查询你们有统计过吗?
-
那排查的时候,有什么手段可以知道有没有走索引查询呢?
-
那什么情况下会发生明明创建了索引,但是执行的时候并没有通过索引呢?
-
哦,索引有关的知识我们暂时就问这么多吧。你们线上数据的事务隔离级别是什么呀?
总结
“免费”、“强大”、“成熟”,这三点就足以使得 MySQL 站在数据库领域的顶峰,笑傲江湖。所以,精通 MySQL,提升自我竞争力,定能缩短与一线大厂的距离。