mysql 重新整理——性能下降的原因[四]

Posted 你永远想象不到,一个光鲜亮丽的Application,有多么

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 重新整理——性能下降的原因[四]相关的知识,希望对你有一定的参考价值。

前言

什么是性能下降?

其实就是代码运行的环境变了,那么环境变化是什么?

比如cpu上升了,内存满了。有或者表中数量增加了,量变了。

其实这些是dba干的,但是呢,我们也需要去了解下,并且优化我们的code。

正文

简单介绍一个量大的情况,那么这个时候我们可能会建立索引,其实也不是量大去建立索引,而是量大且查询数据多,修改少。

在此举个栗子:

SELECT * from employees where first_name=\'Martial\' 

我在一张30w的employees 中做查询。

查询出来的结果为:

受影响的行: 0
时间: 0.645s

通过查询发现索引只有主键:

show index from employees

然后这是就想,如果要是在first_name中建立主键,那么是否能提升。

create INDEX idx_first_name on employees(first_name)

看下效果继续运行查询:

[SQL] SELECT * from employees where first_name=\'Martial\' 

受影响的行: 0
时间: 0.216s

效果明显哈。

当然这很简单,现在复杂一点点,这样子。

怎么说呢,就是要有first_name 和 last_name 一起。

这时候就要创建复合索引。

create INDEX idx_first_name on employees(first_name,last_name )

在下就在次执行重复操作了。

同样我们可以看到我使用了*,这时候问题同样来了,你想想看,这个语句性能就不好了。

同样如果性能下降了,还要从语句下手。

在我进公司的时候,有一个专门搞数据库的部门,设计师设计数据库的时候,我们查一条要join好几张表,这就是设计问题,后来改了表结构,但是代价有多大可以自己想到。

最后性能不强的还有一些配置,如线程数量,这个和硬件有关,专业dba干了,我们也很难去搞定。

以上是关于mysql 重新整理——性能下降的原因[四]的主要内容,如果未能解决你的问题,请参考以下文章

(转)一个MySQL 5.7 分区表性能下降的案例分析

重新整理 mysql 基础篇————— 事务隔离级别[四]

mysql的分析

iOS设备中的C++代码性能下降[关闭]

记一次对以redis做缓存,异步写mysql的系统做性能测试经验

代码管理工具 --- git的学习笔记四《重新整理git》