作者:7七月
来源:林间有风
-
大家在工作时,是否遇到过这样的问题:
-
一个接口的调用速度很慢,却不知道为什么慢?
当我们的电商项目在用户下订单后,是需要扣除掉商品的库存的,但是如果用户超时支付,我们如何还原商品的库存?在还原的时候是否需要考虑数据的一致性?比如假如数据库宕机了,这些库存没有还原怎么办?
对于很多程序员来说,SQL是一个非常熟悉却又往往被忽视的语言。
SQL是一种DSL(领域特定语言),作为程序员同数据库沟通的工具,是我们程序员必会的一种语言。
但我们往往重视Java、Python等GPL(通用编程语言),却并不会非常重视SQL。大量程序员认为SQL只需要会简单的Select Where等语句就够了。
所以,我们的数据库查询很慢,项目的整体运行速度很差,SQL写的又臭又长,数据一致性无法保证;不会用锁来保证数据一致性,不会用索引来加快查询效率,滥用like语句,更不知道什么是悲观锁和乐观锁;也不知道如何去优化SQL。
我们可能会花数年的时间研究Java、Python,但我们却很少花时间去深入学习SQL。
现在由于缓存的流行,很大程度上解决了查询慢的问题。因为对于一个慢查询,你可以选择将数据提前查询出来存储在缓存中,可以说缓存看起来是一种“包治百病”的良方。
但大家忽视了一个很重要的问题,缓存的成本是极高的。一个数据一旦被缓存后,必然带来诸如数据同步、一致性、更新、雪崩等一系列问题。所以对于一个项目来讲,应该遵循“先优化原生数据库查询,将数据库查询性能提升到上限后,再考虑缓存”的原则。
而且对于SQL,我们很可能存在一种误区:
-
一直对SQL处于一种好像自己会,但遇到查询慢的问题时,又不知道如何分析解决的状态。
-
因为一段GPL代码出现问题,我们可以很轻易的结合错误信息推断出程序的逻辑问题,但SQL如果查询很慢,由于它是没有错误提示的,所以要解决慢查询等问题,就必须要求程序员掌握基本的SQL调优手法。
包括但不仅限于:
-
常用SQL分析工具、Join的性能调优、索引的知识来优化查询;深入了解悲观锁、乐观锁、数据库事务、脏读、幻读等概念来解决数据一致性的问题。
-
毫不夸张的说,不考虑GPL和DSL在语言功能上的区别,没有比SQL更值得学习的语言了(事实上,如果你愿意SQL也可以像Java一样写逻辑)。
之前咱们7七月老师在学习SQL的过程中,遇到的最大问题就是,大多数教程要不就是讲解太浅,比如脏读、幻读等概念只是简单谈谈,并未谈到实际的问题;要不就是太过于学术化,并没有结合程序员的实际需求。
所以,7七月老师给咱们带来了关于SQL的系列直播课程。目前咱们第一期视频直播《听7七月讲MySQL与SQL进阶知识》已经结束啦。
如果有没有参与的小伙伴,不要错过第二期视频直播《SQL必知必会第二期》
这次关于SQL的直播课有以下几个特点(来自7七月的讲述):
-
我一直认为直播是不适合做实用技术的,直播只适合讲方法论,谈概念,看似纵横万里,谈天说地,其实并没有太大实用价值。之前看过一个直播写代码的,太不流畅了,没有几个人能耐心的看下去,一次直播4个小时,其实代码量和知识量太少。但直播如果永远是在讲方法论,没有实际的代码量,长期下去是没有人再去看直播的。
-
但这次的直播讲SQL和实战是没区别的,免费的实战课,实打实的讲技术,写代码,实操、演示。我会提前录制好基础视频,在直播时播放,并跟大家互动,解答一些实时的疑问。可能你觉得这不算直播,但我不管,我的职责是保证最好的教学质量,让同学们能真正学到技术,其他的都不重要。我坐在计算机前陪你聊天,那就是直播。
-
SQL的内容非常多,一次讲完是不可能的。所以我们可能会有多期的分段直播,每次内容不多,但保证每期都能学到真正的技术。
-
希望大家保持轻松的心情,就当是你大学老师给你在上课。你可以旷课,走走神,但你也可以认真听课,反正也没考试。
在之前全栈课里,7七月老师增加了二周Java深度理论知识,从最简单的面向对象开始逐步讲解Interface、工厂方法,最后引申出IOC容器与SpringBoot的核心机制依赖注入。
因为老师觉得这部分内容非常重要,学Java就是要理解如何面向抽象编程。因此这就导致了时长的增加。
全栈课预计的120小时时长是不够的。老师的课程很细致,所以时间永远都不够用。只能把一部分更重要的知识以直播的这种形式来讲解,所以直播也是全栈课的一部分。
正在学习全栈课的同学务必要听直播,你就当是老师额外新增的全栈课内容即可。
没有学习全栈课程的同学也务必要听直播,因为咱们可以免费享受全栈课程的一部分内容。
讲师介绍
7七,全栈工程师。十年研发及团队管理经验,对程序员面临的各种问题深有体会;精通Python、Java、Node.js、JavaScript等语言,对Web的基础研发、高并发处理与分布式有非常深入的理解。课程讲解深入浅出,极为擅长培养学生的编程思维。
直播主题
《SQL必知必会第二期》
直播时间
4月8日(周三)晚8点
直播大纲
-
深入讲解SQL中cross join、inner join 、leftjoin等不同的join原理与应用
-
深入讲解事务与隔离级别(脏读、幻读、不可重复读)等
(温馨提示:如果【事务】内容此次直播不能讲完,下次直播咱们继续讲述)
适合人群
想了解SQL的开发者,不区分语言
参与方式
扫描下方海报,加小姐姐好友,回复【直播】即可~
热门评论
直播时间:4月8日(周三)晚8点开始哦