SQL必知必会
陈旸
清华大学计算机博士
立即订阅
10179 人已学习
课程目录
已完结 49 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨SQL可能是你掌握的最有用的技能
免费
第一章:SQL语法基础篇 (19讲)
01丨了解SQL:一门半衰期很长的语言
02丨DBMS的前世今生
03丨学会用数据库的方式思考SQL是如何执行的
04丨使用DDL创建数据库&数据表时需要注意什么?
05丨检索数据:你还在SELECT * 么?
06丨数据过滤:SQL数据过滤都有哪些方法?
07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?
08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?
09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?
10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?
11丨SQL99是如何使用连接的,与SQL92的区别是什么?
12丨视图在SQL中的作用是什么,它是怎样工作的?
13丨什么是存储过程,在实际项目中用得多么?
14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?
15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
16丨游标:当我们需要逐条处理数据时,该怎么做?
17丨如何使用Python操作MySQL?
18丨SQLAlchemy:如何使用Python ORM框架来操作MySQL?
19丨基础篇总结:如何理解查询优化、通配符以及存储过程?
第二章:SQL性能优化篇 (18讲)
20丨当我们思考数据库调优的时候,都有哪些维度可以选择?
21丨范式设计:数据表的范式有哪些,3NF指的是什么?
22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?
23丨索引的概览:用还是不用索引,这是一个问题
24丨索引的原理:我们为什么用B+树来做索引?
25丨Hash索引的底层原理是什么?
26丨索引的使用原则:如何通过索引让SQL查询效率最大化?
27丨从数据页的角度理解B+树查询
28丨从磁盘I/O的角度理解SQL查询的成本
29丨为什么没有理想的索引?
30丨锁:悲观锁和乐观锁是什么?
31丨为什么大部分RDBMS都会支持MVCC?
32丨查询优化器是如何工作的?
33丨如何使用性能分析工具定位SQL执行慢的原因?
34丨答疑篇:关于索引以及缓冲池的一些解惑
35丨数据库主从同步的作用是什么,如何解决数据不一致问题?
36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?
37丨SQL注入:你的SQL是如何被注入的?
第三章:认识DBMS (7讲)
38丨如何在Excel中使用SQL语言?
39丨WebSQL:如何在H5中存储一个本地数据库?
40丨SQLite:为什么微信用SQLite存储聊天记录?
41丨初识Redis:Redis为什么会这么快?
42丨如何使用Redis来实现多用户抢票问题
43丨如何使用Redis搭建玩家排行榜?
44丨DBMS篇总结和答疑:用SQLite做词云
第四章:SQL项目实战 (3讲)
45丨数据清洗:如何使用SQL对数据进行清洗?
46丨数据集成:如何对各种数据库进行集成和转换?
47丨如何利用SQL对零售数据进行分析?
结束语 (1讲)
结束语 | 互联网的下半场是数据驱动的时代
SQL必知必会
登录|注册

20丨当我们思考数据库调优的时候,都有哪些维度可以选择?

陈旸 2019-07-26
从这一篇开始,我们正式进入了 SQL 性能优化篇。在这一模块中,我们会关注如何提升 SQL 查询的效率。你可以思考一下,如何你是一名 DBA 或者开发人员,都有哪些维度可以进行数据库调优?
其实关于数据库调优的知识点非常分散。不同的 DBMS,不同的公司,不同的职位,不同的项目遇到的问题都不尽相同。为了能让你对数据库调优有一个整体的概览,我把这些知识点做了一个梳理,希望能对你有一些帮助。
今天的课程你需要掌握以下几个方面的内容:
数据库调优的目标是什么?
如果要进行调优,都有哪些维度可以选择?
如何思考和分析数据库调优这件事?

数据库调优的目标

简单来说,数据库调优的目的就是要让数据库运行得更快,也就是说响应的时间更快,吞吐量更大。
不过随着用户量的不断增加,以及应用程序复杂度的提升,我们很难用“更快”去定义数据库调优的目标,因为用户在不同时间段访问服务器遇到的瓶颈不同,比如双十一促销的时候会带来大规模的并发访问;还有用户在进行不同业务操作的时候,数据库的事务处理和 SQL 查询都会有所不同。因此我们还需要更加精细的定位,去确定调优的目标。
如何确定呢?一般情况下,有两种方式可以得到反馈。

用户的反馈

用户是我们的服务对象,因此他们的反馈是最直接的。虽然他们不会直接提出技术建议,但是有些问题往往是用户第一时间发现的。我们要重视用户的反馈,找到和数据相关的问题。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《SQL必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

  • 庞鑫华
    老师,网上的说法是5.5之后都建议使用InnoDB了,不建议MyIsam了,这点您怎么看

    作者回复: 我觉得不能一概而论。需要先了解InnoDB和MyISAM各自的特点:
    InnoDB支持事务和行级锁,是MySQL默认的存储引擎
    MyISAM只支持表级锁,非事务安全性,更适合读取数据库的情况,
    小型的应用,如果需要大量的SELECT查询,可以考虑MyISAM。如果是事务处理应用需要选择InnoDB。
    两种引擎各有特点,另外在MySQL中不同的数据表也可以选择不同的存储引擎。

    2019-07-26
    1
    7
  • 我知道了嗯
    目前线上mysql的版本是5.6,有一张表的数据已经到了一亿,目前就对两个唯一流水号建了索引,我想对插入时间也建索引,这个会导致数据库奔溃嘛,另外我可以通过复制一年以前的数据到另外一张表并且删除当前表的数据嘛?
    2019-07-26
    2
    4
  • grey927
    老师你好,这部分内容,希望有些具体的实验用例,或者您可以推荐一些比较好的将数据库性能优化的书么?

    作者回复: 这个部分算是优化篇的概览,所以知识点比较多。我会在后面的章节陆续进行介绍的。

    2019-07-26
    1
    3
  • Coool
    先选择好的装备,再选择好的作战路线,必要时请外援

    作者回复: 对的 总结的不错

    2019-10-23
    2
  • 一步
    对于mysql主从,主库写,从库读。这样的话从库的表引擎是不是可以和主库的不一样(主库使用InnoDB引擎),使用MyISAM引擎了呢?希望老师解答
    2019-07-26
    2
  • 盒子妮
    上面有个朋友说的很对,还可以通过修改参数进行优化。另外,还可以从硬件层面考虑优化
    2019-08-02
    1
  • leslie
    其实纵向切分就是分成主从表:不过主从表最大的隐患是如果此表过于重要必然带来大量的级联查询。
    其实在优化方面可能您忽略了一点:参数优化。即用用了第三方库,参数优化还是可以一定程度的提升性能;应当是三者结合吧。
    2019-07-27
    1
  • 许童童
    前者可以理解为单兵作战,尽可能提升单兵的能力。
    后者相当于直接组团,一起对外作战。

    作者回复: 对 可以这么理解

    2019-07-26
    1
  • ballgod
    老师会有专门的讲解B-数和B+数还有红黑树之类的章节吗? 网上看到好多关于为什么mysql使用B+数的问题,很多讲的不是很清楚。
    2019-12-02
  • 张磊
    老师,您好,我想问下, 哪里 可以 买到 , 你专门 比较 系统的 讲解 mysql 优化的 课程 , 或者 您给 推荐下 买 哪个 课程 可以 学习到这方面的 课程 。 谢谢。 期待您的 回复。

    作者回复: 除了买课,还有两种比较直接的方式,一个是看大厂最新的应用,比如网易,微众银行的MySQL优化实践分享。还有一个方式就是能参与到真实的项目中来,多交流

    2019-11-06
  • ruvikvan
    我有一个问题老师,我在用联合索引(a,b,c)我在查询 (b)、(c)、(a,c)、(b,c) 都走了索引。但是根据最左原则不是应该不走索引吗?mysql版本是5.7
    2019-09-18
    1
  • 森鱼
    这一章突然好抽象

    作者回复: 这个从整体做个介绍,也就是如果我们想要优化数据库都有哪些角度可以进行考虑。

    2019-09-09
  • 张小倔
    到了这个“优化阶段“,还真就少人了 ?

    作者回复: 坚持下来就会有收获,付出越多收获越多,加油

    2019-09-05
    1
  • 文艺科技青年
    这个课程买的太值了

    作者回复: 谢谢 希望能有帮助

    2019-09-02
  • yezhulin99
    列式存储数据库也不一定就是NoSQL哦, SAP HANA 了解下?

    作者回复: 恩 SAP HANA将交易型数据库和分析型数据库合二为一。传统的关系型数据库更多是行式存储,现在很多数据库也逐渐具备多种功能。

    2019-08-08
    1
  • zw_learn_2
    老师你好,请问比较好用的业务应用服务器资源监控工具有哪些?
    2019-08-01
  • 渴望飞的哺乳类
    老师您好,请问文中“通常在重复度超过10%的情况下,可以不创建这个字段的索引。”这个10%是如何分析得来的,是经验所得吗?
    2019-07-28
    3
  • 林彦
    请问老师索引列的位置对索引使用的影响,除了文中提到的表达式计算造成的索引失效,还有没有什么例子?
    另外表达式计算和索引列的位置这2者的关系我有点不太明白是如何建立的。
    2019-07-27
  • Geek_6cfaa7
    老师,竖向分割和横向分割后,要完整或多表查询就要进行跨服务器查询吗?另外一个不明白的地方,读写分开后,如果我想读我写过的内容,这个怎么办,是后台要做数据同步吗?望解答,谢谢啦
    2019-07-26
    1
  • 一叶知秋
    打卡

    作者回复: Thanks

    2019-07-26
收起评论
20
返回
顶部