- 实际案例帮助理解多种场景下 SQL 的优化技巧与原理
- 精心绘制原理图辅助深入理解 B+ 树索引原理
- 掌握在 MySQL 的锁机制下如何减少锁冲突、提高并发的相关技术
- 具备高效事务系统的实现能力
- 讲师的实际工作经验总结与干货分享
- 每个小节搭配对应讨论题目,帮助深入理解学习成果
互联网刚开始进入国内时,使用比较多的都是昂贵的商业数据库。但在最近几年,一批开源数据库开始慢慢成为主流,其中最为突出的则是 MySQL。
根据 DB-Engines 七月份的最新统计(如下图,截图内容来源于:https://dbengines.com/en/ranking_osvsc ), MySQL 仍然是最受欢迎的开源数据库:
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 的 SQL “结构化查询语言”,是用于访问数据库的最常用标准化语言。MySQL 软件采用了 GPL(GNU 通用公共许可证),由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本,而选择 MySQL 作为其网站数据库。
综上所述,MySQL 的优势如下:
・MySQL 是开源的,无需支付额外费用;
・MySQL 使用标准的 SQL 数据语言形式;
・MySQL 可以运行于多个系统上,并且支持多种语言,包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等;
・MySQL 对 PHP 有很好的支持,PHP 是目前最流行的 Web 开发语言;
・MySQL 可以定制, 采用 GPL 协议,可修改源码来开发自己的 MySQL 系统。
从 MySQL 作为最流行的关系型数据库管理系统,以及在众多数据库中的明显优势来讲,可想而知,企业对 MySQL 的相关人才需求量是非常大的。那要怎么去学习 MySQL 呢?有很多人觉得学习 MySQL 只要学会怎么写 SQL 语句就行,这种观点其实是片面的。很多时候,等正式业务的数据量和 QPS 上来后,可能会由于部分低效率的 SQL 而拖慢整个数据库,也有可能由于事务设计不合理导致死锁,甚至可能有被 SQL 注入的风险等,所以表设计、SQL 优化、事务、锁等也必须要引起我们的重视。
本专栏的目的不仅是一起讨论如何高效、安全地使用 MySQL,更希望大家通过专栏内容的学习,成为能够对数据库或者 SQL 语句进行优化的综合型数据库使用者,进阶自己在数据库领域的相关技能。
讲师马听,一线 DBA (数据工程师)老兵。擅长 MySQL 优化, 技术公众号 《MySQL 数据库联盟》运营者。
本专栏分为 5 个模块,共 32 小节,课程结构与知识脉络如下:
第一部分:SQL 优化
本部分介绍了 SQL 的常见优化方式,如 join、order by、group by、insert、count (*) 等。
第二部分:MySQL 索引
本部分主要对 “某个字段加唯一索引还是普通索引?”,“某条查询某个条件字段有索引,为什么不走这个索引?” 等相关问题给予解答,此外还介绍了索引的原理和联合索引的一些特性。
第三部分:MySQL 锁
本部分介绍了常见的锁场景。对于一个数据库来说,如何保证数据访问的一致性、有效性显得格外重要,因此使用者也应该去探究数据库的锁机制。
第四部分:事务
数据库正确执行的四个基本要素:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
本部分将进行详细描述 MySQL 是通过哪种机制去实现满足这四个数据库正确执行的基本要素。
第五部分:MySQL 的一些其它相关经验