前两天,我跟一个面试官聊天,发现一个普遍现象,不少候选人,对数据库的认知,还处在比较基础的阶段,以为会写“增删改查”、做表关联就足够了,那些工作中经常出现的问题,却支支吾吾答不上来,比如:
- count(*) 慢该如何解决?
- 对于千万级的大表,MySQL 要怎么优化?
- SQL 使用 Join 好,还是多次 Select 好?
- 1000 多万条数据,建了索引还是慢,该怎么办?
仔细想想,我当初在用 MySQL 的过程中,遇到的问题也是五花八门,从开发技巧到管理维护,从性能问题到安全问题。第一个感受就是,MySQL 本身是个设计优良的系统,其中有很多巧妙的设计思路,比如 WAL 机制、索引的实现、缓存的处理方式等等,掌握好这些,能解决日常工作中的很多问题。
那会儿,也没少在网上找资料,虽说有所收获,但内容大多脱离真实的软件开发,看的时候各种明白,上手实操就原形毕露了。后来刷微博,看到诸霸转发了数据库大佬——丁奇的专栏《MySQL 实战 45 讲》。
当年学下来,让我对 MySQL 的理解上了一个新的高度。毫不夸张的说,这是我看过的最好的 MySQL 教程,口碑一级棒,已经超过 77000 人订阅了。
但凡你对数据库有点了解,就应该听过丁奇的名字。他先后在百度、阿里、腾讯任职,从事 MySQL 相关工作 10 多年了。在阿里跟褚霸共事,参与了阿里云关系型数据库服务内核的开发,负责开源分支 AliSQL,现任腾讯云数据库负责人,可以说是数据库领域名副其实的大佬了。