为了账号安全,请及时绑定邮箱和手机立即绑定

【MySQL心得】拼来的才是人生,等来的只能是命运

流水淙淙,岁月无痕。人生百年,白驹过隙,大学4年一晃而过。在这4年里有过迷茫、有过堕落,最终找到人生方向却已到大三。

有人说教育的本质不是讲鸡蛋装满篮子,而是为你点亮一盏灯。可是为什么我感觉大学的学习中,甚至连鸡蛋都没有,关键时候还有要靠自己。

依稀记得在14年10月的某个中午,茫茫然躺在床上刷微博,新浪微博的推荐应用中出现了慕课网,当时觉得还是挺新鲜的,就尝试下载了下(其实再此之前也用过不少的学习编程的平台,因为课程质量太差就没有继续下去)。首先给我的感觉就是:慕课网的视频都很短,可以很好利用碎片化的时间进行学习。于是立马下床打开网站:当时就在想,开发这个网站的技术人员一定很厉害,动画特效做得如此绚丽。我在慕课网学的第一门课程就是html,当时花了一周的时间学完了,虽然对于大多数人来说并不是什么了不起的成就,但是对我来说挺满足的,毕竟自己第一次学完了一门课程并做出了自己的作品。之后参加了慕课网的活动90天慕女神助力计划,每天学习然后写总结,编程习惯在潜移默化中渐渐养成。

有人说大学毕业就等于失业,尤其对于一些不知名的大学尤其如此。看着身边的一个个同学陆陆续续进入培训机构,自己也在慢慢为找工作的事情着急了。在今年2月份的时候到处找实习,也是由于各种原因简历被拒绝,压根没有收到面试机会!最后没办法去了广州的一家外包公司,进入公司才发现公司代码还是02年的老系统,竟然将SQL语句写到jsp页面中,我也是醉了。由于在慕课网也学过Java,这些简单的jsp对我来说毫无压力,从一开始就感觉到这个公司不适合长久发展。于是白天完成公司代码,晚上回家自己看书和慕课网的视频,期间又参见了百度前端技术学院,自己创建了一个队伍,最后由于知识水平达不到,只做完了第二阶段。实习了2个月后去学校毕业答辩,当时我用node.js+mongoDB+redis+vue.js完成了一个手机端的商城应用,结果老师看都没看,果然毕业设计就是走走过场啊。答辩之后更新了下简历,收到几家公司的面试邀请,顺利收到了offer,在此特别感谢慕课网!

以上为我在慕课网的学习和找工作的故事,接下来切入正题,聊聊MySQL优化。

很长一段时间我对数据库的认知仅仅停留在基本的CRUD上,直到接触了打造扛得住的MySQL架构这门课程。在一个大型的系统中数据库一直是性能的瓶颈,因此出现了很多的缓存技术,例如redis和memcached,但是如果数据库本身的设计不当,再怎么缓存优化也是收效甚微。这门课程简直有一种惊艳的感觉!我竟然第一次知道MySQL数据库背后还有如此常用的数据结构,例如:hash索引底层实现是hash表,B树索引底层数据结构是B+树;操作系统知识也在数据库中应用得淋漓尽致,例如:顺序IO要快于随机IO,RAID的分级,内存分页以及页的换入换出。

技术分为术和道两种,具体的做事方法是术,做事的原理和原则称为道。很多具体的技术很快就会从独门绝技到普及,最后落伍。追求书的人一辈子很辛苦。只有掌握了道才能够做到游刃有余。追求“术”的人多半抱有侥幸心理,想走捷径。但是宝剑锋从磨砺出,梅花香自苦寒来,真正做好一件事没有捷径,需要10000小时的专业训练和努力。 ——吴军·《数学之类》

做好MySQL性能优化,理解其背后的数据结构至关重要。除了这一点外,这门课程也指出了一些数据库设计中常见的一些误区,例如:很多人误以为int(10)int(4)浪费更多的存储空间,实际上这是不对的,只有charvarchar类型数据宽度才是有意义的。很多人喜欢使用varchar类型,但是却不知道对于定长字符串(例如md5值)或者频繁更新的长度相近的字符串,使用char类型更为合适。因为varchar需要占用额外的字节存储字符串长度,更新的时候也会产生碎片。针对业务的需求选择合适的数据类型至关重要,因为正式上线后再次修改数据库结构将会是一场灾难。

课程的后面部分介绍了SQL调优,如何通过慢查日志和SQL的查询计划发现有问题的SQL。理解这一部分需要了解从SQL语句发出到得到结果这期间都发生了什么,哪些过程造成了查询效率低下,请看如下的MySQL体系结构图:

MySQL体系结构

MySQL的查询缓存使用的是大小写敏感的哈希实现,只有相同的SQL才会命中缓存,查询解析器就是分析SQL语句的语法生成一颗抽象语法树,而查询优化器则是根据查询计划选择MySQL自己认为合适的计划执行。接下来就是存储引擎层。存储引擎使用InnoDB即可支持大多数应用场景,但是想archive这种存储引擎就比较适合用于log,ETL这种只读应用中。

关于MySQL优化,还需要大量的配置,例如磁盘和操作系统配置,网络和内存参数等等。

人生不止眼前的苟且,还有诗和远方。最后一句话和大家共勉:拼来的才是人生,等来的只能是命运。最后用慕课网讲师@liuyubobobo老师的话收尾吧:如果学习的硬件和软件资源已经具备,那么接下来的事情就是保持一颗永远向上的心,如果学习累了,遇到困难了,遇到挫折了,那么就想想那些精美的、绝妙的app,想想这些app将来也会出自你的手中,相信每一位同学都可以成为IOS开发大师的。

点击查看更多内容
55人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消