关于SQL的学习与思考
一些感想:
毕业后至2019年前,忙于项目,忙于项目相关的技术栈学习,忙于拓展技术栈,忙于毕业后的职场生活,慢慢地忽略了一些基础、本质的东西,好像也忘记了自己怎么从菜鸟开始的,又何时将某些方面的学习止步于菜鸟水平的。
2019年下半年,自己所有参与的项目陆续接近尾声,也开始参与公司的大数据开发培训,着手技术转型,从一直繁忙的状态渐进停下来后,很多想法慢慢涌出来,开始进入了职业规划困惑、迷惘的阶段,我一直认为自己是个菜鸟,无非是在某些方面有了更多的项目实践经验,踩了更多的坑,认识了更多的同行,听了更多不同但版本类似的开涮、开发踩坑&上线故事。我知道自己的工作一直以来更像是个CRUD guy,如果不再改变,不仅仅是止步不前,大浪淘沙的行业规则下,要么成为被洗净的沙石,要么沦为污泥浊水。
认识到这个问题后,我开始回归基础,首先是对关系型数据库进行了理论学习、实践,又针对性的对MySQL进行系统的学习(一直进行中)。
老当益壮的SQL
有一段时间,周围的同事开始讨论NoSQL,言下之意好像SQL不再是主流,要赶紧的学习NoSQL(总有那么些个看到表象就咋咋呼呼的人), 作为只用过Redis作为缓存的NoSQL小白,我也有点慌,因为一直基于SSM做企业级WEB应用开发,数据库主要用的Oracle、MySQL,可以说是没有接触过NoSQL。后来,换了工作后,心里一直有这个梗,开始在业余时间学习Redis、MongoDB。
SQL、NoSQL 都是主流,在架构设计开发时更多的是看你的业务场景更适用于哪种方式或者兼有。
回顾下自己学习过程
搭建本地学习环境
如果你是用Windows系统,推荐通过vagrant + Oracle VM VirtualBox安装Linux。
vagrant 官网
注:
1、MySQL很多管理工具,比如MMM和MHA都是基于Liunx开发的,所以建议在Liunx系统下使用MySQL.
2、vagrant官网的英文doc阅读理解起来并不难,需要耐心,尽量不要看中文翻译版。
大概的学习框架/学习方向
- MySQL系统架构及几种存储引擎、各自的优势
- MySQL基准测试工具:mysqlslap,sysbench
- MySQL架构设计及优化方案
- MySQL读写分离如何实现
- MySQL大数据表更新优化
- MySQL索引的优化
- 分库分表的实现
- 数据库如何监控
- 了解影响MySQL性能的各个因素及解决方案
- 如何建立高性能高可用MySQL集群
- 如何在不影响业务的前提下进行主从切换