0%

性能常见分析步骤

1、慢查询的开启并捕获

2、explain+慢 SQL 分析

3、show profile 查询 SQL 在 MySQL 服务器里面的执行细节和生命周期情况

4、SQL数据库服务器的参数调优。

这篇文章呢,其实也没必要非得用Markdown写,但是用习惯了哈,没办法都改不了。差点跑题,今天谈谈今年这几次比赛的心得体会之类的吧。

其实我也是看见了队友的感言,现在只能看到他之前的博客备份了。今天是2019的10月份,转眼就到2020年了。其实也就当时回顾了一下自己上半年的成长吧,算是一份小小的总结。比赛是从去年冬天开始筹划的吧,不能算是筹划(应该是去年冬天听说的有这个比赛,其实就是服务外包大赛)。今年上半年开始着手准备选题,记得是3-4月份期间的选的题目。然后就选了 “智慧教室“ 这个项目,当时我和其中一个队友判断这个题目稍微简单一点,其实就是Android+、JavaEE+前端、Python控制的硬件端,比赛之前就认识两个队友:村支书和大力,其他两个队友是最后才接触了才认识的。

本文主要向大家介绍了MySQL数据库之索引会失效的原因分析及解决索引失效的方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

最好是查找的值都是建立索引的字段,要遵守最佳左前缀匹配法则,第一个索引没用上其他的都用不上,中间的索引没用上后面的也用不上。索引字段不要函数计算、自动或手动的类型转换。凡是在范围条件之后的索引全部失效,like的百分号写在最后边,实在是需要两边都是百分号那么建立索引,并且别查找其他非索引字段,也就是尽量别写select * 。尽量不使用不等于、大于、小于等条件,尽量不要使用or进行连接,否则会导致索引失效。对于varchar类型的字段不要忘记写引号,避免发生隐式类型转换。

前提知识

Mysql中有专门负责优化 SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的 Query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的)

当客户端向 MySQL请求一条 Query,命令解析器模块完成请求分类,区别出是 SELECT并转发给 MySQL Query Optimizer时, MySQL Query Optimizer首先会对整条 Query进行优化,处理掉一些常量表达式的预算直接换算成常量值。并对 Query中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件、结构调整等。然后分析 Query中的Hint信息(如果有),看显示Hint信息是否可以完全确定该 Query的执行计划。如果没有Hint或Hint信息还不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据 Query进行写相应的计算分析,然后再得出最后的执行计划。

MySQL索引优化

本文主要讲述了索引的概念,索引的作用是什么,MySQL索引结构,哪些情况下需要建立索引,哪些情况下需要建立索引!MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

现在开始学习MySQL高级部分的知识,比如MySQL内核、SQL优化、SQL服务器的优化、各种参数常亮的设定、查询语句优化、主从复制、软硬件升级、容灾备份、SQL编程之类的东西。不过接下来学到的呢只是作为一个后台Java开发者应该掌握的知识,很完整的SQL优化需要很深的功底,大公司甚至有专门的DBA写上面这些东西,从IT时代到互联网时代,不断增长的是数据,所以学习一下MySQL优化还是很重要的!

再谈谈数据库优化

如图,MySQL优化呢无非就是从这几个方面入手,第一是数据库设计,第二是SQL优化!但是随着数据表的增长,数据会越来越多,通过MySQL优化是可以解决部分性能问题的,但是一台服务器的资源是有限的,无论怎么优化始终无法解决MySQL的性能瓶颈问题。