美文网首页数据库操作相关程序员Java 杂谈
「mysql优化专题」本专题总结终章(13)

「mysql优化专题」本专题总结终章(13)

作者: Java进阶架构师 | 来源:发表于2018-01-04 15:04 被阅读308次

    一个月过去了,【mysql优化专题】围绕着mysql优化进行了十三篇的优化文章,下面进行一次完整的总结!我尝试用最简短最通俗易懂的话阐述明白每篇文章,让本专题画上完美的句号!坚持到文末,留下你宝贵的评论!

    目录:

    一、为什么要进行mysql优化?(重点)

    二、增删改优化,多数人都会忽略的优化

    三、关于单表查询,可以这么优化

    四、关于多表查询,不得不看的优化

    五、索引优化(重点中的重点)

    六、表的优化,分表分库(重点)

    七、存储过程和存储函数教学

    八、视图应用优化详解

    九、引擎(InnoDB,MyISAM)的内存优化

    十、通过慢查询日志定位优化

    十一、满分主从复制面试宝典(重点)

    十二、高可用性、负载均衡的mysql集群解决方案(重点)

    一、这大概是一篇最好的mysql优化入门文章(1)

    为什么要进行mysql优化?究竟在优化什么。这篇为你开启入门之旅。

    二、90%程序员都会忽略的增删改优化(2)

    增删改优化,大多数人都会忽略的优化。

    三、单表查询优化的一些小总结,非索引设计(3)

    查询缓存,不要滥用语句,等等,这里有一些关于单表查询的总结。值得一看。

    四、你们要的多表查询优化来啦!请查收(4)

    应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。

    还有很多很多的点我们需要注意,详细内容请点击第四篇。

    五、索引优化:90%程序员面试都用得上的索引优化手册(5)

    关于索引,分为以下几点来讲解:

    1、索引的概述(什么是索引,索引的优缺点)

    2、索引的基本使用(创建索引)

    3、索引的基本原理(面试重点)

    4、索引的数据结构(B树,hash)

    5、创建索引的原则(重中之重,面试必问!敬请收藏!)

    掌握了以上重点,索引l优化还有什么难得到你呢?

    六、优化之路高级进阶——表的设计及优化(6)

    关于表的优化,那就有更多的内容可以优化了,小到字段属性的选取,三放式的取舍,大到分库分表,增量查询等等,互联网大型分布式项目,怎么可能再跟以前一样粗陋?作为准备进阶架构师的你,好意思说表都搞不定?

    七、90%程序员没听过的存储过程和存储函数教学(7)

    储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。

    八、视图应用竟然还可以这么优化?不得不收藏(8)

    什么是视图?视图是基于 SQL 语句的结果集的可视化的表。视图并不在数据库中以存储的数据值集形式存在,而是存在于实际引用的数据库表中,视图的构成可以是单表查询,多表联合查询,分组查询以及计算(表达式)查询等。

    九、详解引擎(InnoDB,MyISAM)的内存优化攻略?(9)

    InnoDB用一块内存区域做I/O缓存池,该缓存池不仅用来缓存InnoDB的索引块,而且也用来缓存InnoDB的数据块。

    十、什么是慢查询?如何通过慢查询日志优化?(10)

    MySQL会记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为慢查询。mysql中有许许多多的日志,错误日志,通用日志,更新日志,二进制日志(就是用来进行主从复制的日志),慢查询日志等。

    十一、主从复制面试宝典!面试官都没你懂得多!(11)

    1、什么是主从复制

    2、主从复制的作用(重点)

    3、主从复制的原理(重中之重)

    4、三步轻松构建主从

    5、必问面试题干货分析(最最重要的点)

    十二、高可用性、负载均衡的mysql集群解决方案(12)

    一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接。连接有两个,一个是客户端与后端的连接,另一个是后端与数据库的连接。客户端与后端中可以利用类似nginx的负载均衡解决,而数据库层是最脆弱的一层,一般在应用设计时在上游就需要把请求拦截掉,数据库层只承担“能力范围内”的访问请求,所以,我们通过在服务层引入队列和缓存,让最底层的数据库高枕无忧。

    如果请求激增,还是有大量的查询压力到MySQL怎么办呢?

    这时候,集群出现了。在后端与数据库中我们可以利用类似mycat的负载均衡实现mysql集群,提高mysql的总体性能。(可用组合很多,如LVS+keepalived组合、haproxy+keepalived组合)

    最后的总结:

    mysql的问题其实是由于一系列的软肋决定的,所以不得不利用中间件或者其它方案去解决,包括:

    在强制约束和事务与全文索引之间做出选择(InnoDb vs MyISAM)

    在客户机代码中“模拟”事务是不容易的

    如果不执行约束,就很容易得到不一致的db状态

    如果没有全文搜索,会变得疯狂,比如% y %

    必须在更新触发器之前创建检查约束的错误

    当数据变得太大时,Mysql的承受能力就不妙了

    Mysql创建的执行计划效率低下

    Mysql有超过多个连接的问题(最好说多个连接)

    但是! Oracle是所有这些问题的解决方案,它是一个完整的DBMS:事务、检查合同、视图的很多选项、全文搜索…

    所以问题的本质是:成本!解决大部分问题,换个Oracle就行了。

    【mysql优化专题】到这里就算完美结束了,掌握这些,mysql部分你基本就可以。如果还想要更深入,我可以再继续深入,看情况吧,人多就继续深入,算是另一个层次。


    已完结专题(关注后查看):

    【mysql优化专题】【多线程/池专题】【架构技术专题】

    更新中专题(关注后查看):

    【dubbo专题】【dubbo源码专题】【JVM专题】【HTTP协议专题】【设计模式专题】

    【高并发专题】【架构技术专题】【netty专题】【数据结构专题】【redis专题】

    相关文章

      网友评论

        本文标题:「mysql优化专题」本专题总结终章(13)

        本文链接:https://www.haomeiwen.com/subject/qfprnxtx.html