目录
前言
如何“系统”学习mysql?比如需要看哪些书籍,哪些资料?我曾研读过以下几本书:《高性能mysql》,简朝阳的mysql优化,innodb存储引擎。我个人感觉前两本是告诉读者知其然,第三本是告诉读者所以然。这三本书是有一种渐进的关系的,如果没有前两本的积累和一定的工作经验,直接看第三本的效果是不太好的。MySQL性能调优视频教程。
学习数据库知识,或者狭义说学习mysql,其学习过程比较曲折,没人谁能告诉你,只要看过某几本书,掌握好哪些知识就算是精通、掌握mysql了。知识面是非常广,知识点是零散的,不像学习编程语言那么系统、那么直接明了。
这也是我感觉比较迷茫的地方,怎样才能系统学习?现在我工作之余有空就在阅读英文版的官方参考手册,一则培养看英文技术文档的能力,二则希望通过官方文档来系统学习,不希望只通过一两篇技术文档、一两个案例这样零散的学习方式。
小编对MySQL已经有很好的理解,但我还是想从这里分享一些MySQL学习的技巧以及经验给大家。
MySQL学习的技巧以及经验
1.系统学习数据库,最要紧的是把基本功打牢,所以《数据库系统概念 原书第六版》是一本不可多得的好书,任何数据库背后的原理基本上都是想通的,其他的都是不同厂商或组织做的改进和优化;
2.如果对MySQL题体系结构、原理性的东西没搞明白,就阅读优化相关的书,我觉得是徒劳,因为原理不懂,何谈优化?所以这里可以推荐两本本书籍:《深入理解MySQL》(人民邮件出版社 Charles A Bell著 杨涛等译)、《深入理解MySQL核心技术》(O'REILLY出版社 中国电力出版社 Sasha Pachev著 李芳等译);
3.对原理性的东西弄彻底后,再加上足够多的操练,现在可以看些优化、高可用、备份与恢复、集群、优化的书,比如前辈提到的《高性能MySQL》(O'REILLY出版社 电子工业出版社 Baron Schwartz等著 王小东等译)、《MySQL性能调优与架构设计》(简朝阳),其他的书籍比如《高可用MySQL——构建健壮的数据中心》(O'REILLY出版社 电子工业出版社 Charles Bell等著 宁青等译)……(欢迎补充)
4.再深层次可以研究下MySQL源码,内部实现机制等等。这里我也不知路向;
5.Linux方面的知识想必前辈已经非常熟练,在此不赘述。
如何理解高级MySQL DBA必备素养以及技能
现在有人认为学oracle很有出路,有人认为学mysql前途更大,还有人觉得nosql才是未来的数据库趋势,您是怎么看待这样的观点?有关关系型数据库和非关系型数据库的争议,您又怎么看?
我学习oracle的时候oracle数据库还为广泛应用,DBA也比较少,算是懵懂的在正确的时间进了正确的门。2001年到2006年真的是DBA学习成长的黄金时期,那时候涌现了一堆有影响力的人。这不是说现在的oracle DBA技能就比那时候的差,而是现在的确算不上黄金时期了,因为oracle已经广泛应用了。但是现在这个时段就是做数据库服务的好时期,而我们那时候想做却不成气候。
2006年的时候我招了个应届生叫简朝阳,后来我建议他重点学习mysql,并给予了很大的自由度和计划到他,帮助他成长,后来他写了本书,同时自己成长的非常快,在mysql领域也是非常有影响力。当时之所以建议他学习mysql,是因为oracle的硬件实施整体成本非常高,一用上小型机和SAN存储,oracle费用其实不足total费用的20%。一方面为了公司节约成本考虑,另一方面也感觉到这是未来的趋势,大环境给予了他这个机遇,而我只是提前做出了判断并引导了他。
现在由于互联网企业的发展,好像nosql发展的迅猛,这其实不过是在特定场景解决特定问题罢了。我认为未来十年nosql可以取代RDBMS是个伪命题,其实发展到后来两者趋势逐渐一致,nosql想要通用也得具有RDBMS的很多特征,就越长越像了。Google最近出的数据库,其实我看很多特点和概念也类似oracle呢,概念上大家都没什么新鲜玩意,都是在规模上的量变导致质变。而一般用户解决规模问题最简单的是硬件、网络的突破,这更容易带来数据库应用的发展。
所以我更主张大家透过现象去看技术的实质,研究各种技术的特点背后的优劣到底是怎么回事,这样才有自己的看法。Oracle、mysql、nosql都是一些具体的数据管理的表现形式,他们主要面对什么客户、解决什么问题、带来什么价值,看透了这些,我们就不会被表象所牵引。当然,我认为管理好数据之后,发掘数据价值是一个很重要的事情。
MYSQL 重要参数的作用
包括副作用哪些呢?
- 是key_buffer_size、
- tmp_table_size、
- sort_buffer_size、
- innodb_buffer_size、
- innodb_log_file_size、
- innodb_flush_logs_at_trx_commit、
- max_tmp_tables 等等!
SHELL,要熟练; shell具体指的是啥,能否举例说明一本书籍,说搞懂了这本书籍,shell就算熟练了?
PYTHON , PERL 懂一种。 不懂,看来还得去买一本书,慢慢修炼了。
性能测试要会; 没有弄过,如何做,用啥工具,如何看测试过后的各种测试数据。
LINUX 熟练操作; linux操作都包括哪些方面呢?能举几个例子说明一下吗?
MySQL入门必看
入门要让初学者看懂才是最重要的,而不是整那些高大上的东西。为了帮助刚毕业找工作,或者想转行成为数据分析师工作的朋友,我会用下面内容教会你怎样用最快速、最容易理解的方式学会数据库和SQL,并使用SQL进行数据分析。为了更多小伙伴可以清晰了解mysql中的核心知识点,小编这里总结了一份详细的思维导图。需要领取原图的话可以点这里哦 !
1.入门
2.简单查询
3.汇总分析
4.复杂查询
5.多表查询
6.求职面试题
7.检验SQL的学习效果
第一部分:入门
学习以下内容:
1)了解数据库的基本概念
2)如何安装数据库?
3)表的创建、删除和更新
4)数据的插入、删除和更新数据
第二部分:简单查询
学习以下内容:
1)基本的查询语句
2) 如何指定查询条件?
3)注释和 SQL 语句注意事项
4)学会运算符指定复杂的查询条件
5)字符串模糊查询
第三部分:汇总分析
学习以下内容:
1)如何进行汇总分析?
2)如何对数据分组?
3)如何对分组结果指定条件?
4)用 SQL 解决业务问题的套路是什么?
5)如何对查询结果排序?
6)如何看懂 SQL 报错信息?
第四部分:复杂查询
学习以下内容:
1)视图(什么是视图,如何使用,有什么用,注意事项)
2)子查询、标量子查询、关联子查询
3)各种常用函数
第五部分:多表查询
在有多张表的情况下,表和表之间的运算和联系就变得很重要,这部分学习多个表如何查询:
1)表的加法
2)联结,包括交叉联结、内联结、左联结、右联结、全联结
3)一张图记住各种联结
4)联结应用案例
5)case表达式
第六部分:求职面试题
书中自有黄金屋!
1.MySQL技术内幕:InnoDB存储引擎
学习MySQL的使用,首推姜承尧的《MySQL技术内幕:InnoDB存储引擎》,这本书确实做到了由渐入深、深入浅出,是中国人写的最赞的MySQL技术书籍,符合国人的思维方式和阅读习惯,而且,这本书简直就是面试宝典,对于近期有求职MySQL相关岗位的朋友,可以认真阅读,对找工作有很大的帮助。当然,也有人说这本书入门难度较大,这个就自己取舍了,个人建议就以这本书入门即可,有不懂的地方可以求助官方手册和google。
2.MySQL的官方手册
我刚开始学习MySQL的时候误区就是,没有好好阅读MySQL的官方手册。例如,我刚开始很难理解InnoDB的锁,尤其是各个情况下如何加锁,这个问题在我师弟进入百度做DBA时,也困扰了他一阵子,我们两还讨论来讨论去,其实,MySQL官方手册已经写得清清楚楚,什么样的SQL语句加什么样的锁,当然,MySQL的官方手册非常庞大,一时半会很难看完,建议先看InnoDB相关的部分。
3.MySQL排错指南
《MySQL排错指南》是2015年夏天引入中国的书籍,这本书可以说是DBA速成指南,介绍的内容其实比较简单,但是也非常实用,对于DBA这个讲究经验的工种,这本书就是传授经验的,可能对有较多工作经验的DBA来说,这本书基本没有什么用,但是,对于刚入职场的新人,或学校里的学生,这本书会有较大的帮助,非常推荐。
4.高性能MySQL
《高性能MySQL》是MySQL领域的经典之作,拥有广泛的影响力,学习MySQL的朋友都应该有所耳闻,所以我就不作过多介绍,唯一的建议就是仔细看、认真看、多看几遍,我每次看都会有不小的收获。这就是一本虽然书很厚,但是需要一页一页、一行一行都认真看的书。
5.数据库索引设计与优化
如果认真学习完前面几本书,基本上都已经对MySQL掌握得不错了,但是,如果不了解如何设计一个好的索引,仍然不能成为牛逼的DBA,牛逼的DBA和不牛逼的DBA,一半就是看对索引的掌握情况,《数据库索引设计与优化》就是从普通DBA走向牛逼DBA的捷径,这本书在淘宝内部非常推崇,但是在中国名气却不是很大,很多人不了解。这本书也是今年夏天刚有中文版本的,非常值得入手以后跟着练习,虽然知道的人不多,豆瓣上也几乎没有什么评价,但是,强烈推荐、吐血推荐!
6.Effective MySQL系列
《Effective MySQL系列》是指:
- Effective MySQL Replication Techniques in Depth
- Effective MySQL之SQL语句最优化
- Effective MySQL之备份与恢复
这一系列并不如前面推荐的好,其中,我只看了前两本,这几本书只能算是小册子,如果有时间可以看看,对某一个”模块”进入深入了解。
7.MySQL的源码
关于MySQL源码的书非常少,还好现在市面上有两本不错的书,而且刚好一本讲server层,一本讲innodb存储引擎层,对于学习MySQL源码会很有帮助,至少能够更加快速地了解MySQL的原理和宏观结构,然后再深入细节。此外,还有一些博客或PPT将得也很不错,这里推荐最好的几份材料。
登博的分享《深入MySQL源码》,相信很多想了解MySQL源码的朋友已经知道这份PPT,就不过多介绍,不过,要多说一句,登博的参考资料里列出的几个博客,都要关注一下,干货满满,是学习MySQL必须关注的博客。
8 InnoDB - A journey to the core
《InnoDB - A journey to the core》 是MySQL大牛Jeremy Cole写的PPT,介绍InnoDB的存储模块,即表空间、区、段、页的格式、记录的格式、槽等等。是学习Innodb存储的最好的材料。感谢Jeremy Cole!
9.深入理解MySQL核心技术
《深入理解MySQL核心技术》是第一本关于MySQL源码的书,着重介绍了MySQL的Server层,重点介绍了宏观架构,对于刚开始学习MySQL源码的人,相信会有很大的帮助,我在学习MySQL源码的过程中,反复的翻阅了几遍,这本书刚开始看的时候会很痛苦,但是,对于研究MySQL源码,非常有帮助,就看你是否需要,如果没有研究MySQL源码的决心,这本书应该会被唾弃。
10.MySQL内核:InnoDB存储引擎
我们组的同事写的《MySQL内核:InnoDB存储引擎》,可能宇宙范围内这本书就数我学得最认真了,虽然书中有很多编辑错误,但是,平心而论,还是写得非常好的,相对于《深入理解MySQL核心技术》,可读性更强一些,建议研究Innodb存储引擎的朋友,可以了解一下,先对Innodb有一个宏观的概念,对大致原理有一个整体的了解,然后再深入细节,肯定会比自己从头开始研究会快很多,这本书可以帮助你事半功倍。
11.MariaDB原理与实现
《MariaDB原理与实现》我也买了一本,还不错,MariaDB讲的并不多,重点讲了Group Commit、线程池和复制的实现,都是MySQL Server层的知识,对MySQL Server层感兴趣的可以参考一下。
希望这里推荐的材料对学习MySQL的同学、朋友有所帮助,大家共同进步。
最后来自小编的福利
小编这里总结了【免费领取 MySQL笔记500多页资料集锦+1000道互联网大厂Java工程师面试题、spring、mybatis、jvm,Zookeeper,spring】 点我 免费领取 ,免费获取,编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。
部分资料图片: