- 开发工程师
- 运维工程师
- MySQL DBA
- 架构师
- 其他 MySQL 爱好者
讲师“马听”最新力作《DBA数据库工程师》:https://class.imooc.com/sale/dba
互联网刚开始进入国内时,使用比较多的都是昂贵的商业数据库。但在最近几年,一批开源数据库开始慢慢成为主流,其中最为突出的则是 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 锁
本部分介绍了常见的锁场景。对于一个数据库来说,如何保证数据访问的一致性、有效性显得格外重要,因此使用者也应该去探究数据库的锁机制。
第四部分:事务
数据库正确执行的四个基本要素:
本部分将进行详细描述 MySQL 是通过哪种机制去实现满足这四个数据库正确执行的基本要素。
第五部分:MySQL 的一些其它相关经验
本部分主要讨论讲师个人在使用 MySQL 的过程中曾讨论过的一些重要问题,如读写分离、查询缓存、分库分表等。
我完全看完的,还在我们公司做了分享... 谢谢老师,学到了很多。
不得不说,结尾处的四个生活实例可太形象了!!为老师点赞!!
很喜欢老师的这种专栏写作风格,重点突出,通俗易懂,与实际情况结合等等
嗯,总结的不错,点赞。
收益丰富
不得不说,MyCAT 真的是神来之笔!!!
文章写得很精彩,可是工作中遇到过难以优化而又因为业务需求不得不执行低效率查询的SQL语句,这样的问题应该如何去解决?
我就看明白了个慢查询这三个字 抓狂 我目前不是计算机专业 救救孩子的头发吧 嘿嘿嘿(老师讲的很好哦 推荐 )
老师写的真好,解除了多年的疑惑,和不解
谢谢老师分享
买啦,我数据库一直就会一点增删改查什么的,弱弱的问下老师,这样能够看懂嘛!期待这次能有提高。
老师,问一个问题,什么时候使用聚集索引?什么时候使用辅助索引呢?咱们课件中的查询语句,使用哪个的多呢?
老师您好,unique_subquery和index_subquery,基于老师创建的两个表,始终无法在explain的时候实现type为这两个值的,还请老师指导一下实现这两个属性值的sql语句。
工作这几年为了解决平时遇到MySQL的问题也看过很多大V的文章,这次可以系统的学习下,挺好
老师好,我刚毕业入职不久,对大数据很感兴趣,现在在做大数据,但是公司的大数据开发岗位好像和想象的不太一样。更多的是写SQL,python或者shell脚本处理数据。想问的是,这个技术方向我自己需不需要掌握SQL优化的技能?谢谢啦
《高性能MySQL》这本书看完了,学习到了很多优化的技巧,不过很多都是基于之前的版本。跟着这个MySQL优化的专栏再学习一遍,希望能够学习一些新的版本的知识就更好了。
老师您好: 首先要感谢您的分享总结,您以上的知识扩展在我的线上环境都出现过。 一般情况都是慢sql 语句没有使用索引,我们所有线上的数据库,全部部署了实时kill 脚本,针对查询语句全部进行一个阀值的制定,例如是5秒,超过以后自动kill,这样会保证线上的稳定。 二就是在测试环境严格把控没有使用索引的语句。希望能够了解到更多地优化技巧。
通过开篇这一节的阅读,我感受到了老师的真心传授,推荐了好几本我看过的书了,特别实在,我也是大学时候就开始自学数据库了,没有那么多实际的工作经验,所以就只能先跟着前人的脚步来走,看看别人是怎么来做优化的,踩过的坑遇到的麻烦。 希望老师会有很多工作的实际场景在文章里,谢谢
慕前端7009556
慕雪3119260
leeshowmuke