前言

什么是性能下降?

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

比如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 重新整理——性能下降的原因[四]的更多相关文章

  1. MySQL索引及性能优化分析

    一.SQL性能下降的原因 查询语句问题,各种连接.子查询 索引失效(单值索引.复合索引) 服务器调优及各个参数设置(缓冲.线程池等) 二.索引 排好序的快速查找数据结构 1. 索引分类 单值索引 一个 ...

  2. MySQL 5.7 分区表性能下降的案例分析

    转载自:https://mp.weixin.qq.com/s/K3RpSBAIWFwGCIWyfF0QPA 前言:希望通过本文,使MySQL5.7.18的使用者知晓分区表使用中存在的陷阱,避免在该版本 ...

  3. 一个MySQL 5.7 分区表性能下降的案例分析

    告知MySQL5.7.18的使用者分区表使用中存在的陷阱,避免在该版本上继续踩坑.同时通过对源码的讲解,升级MySQL5.7.18时分区表性能下降的根本原因,向MySQL源码爱好者展示分区表实现中锁的 ...

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

    一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓 ...

  5. Oracle迁移到MySQL性能下降的注意点(转)

    背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障.在我的记忆里面淘宝最初从Oracle ...

  6. MySQL字符集不一致导致性能下降25%,你敢信?

    故事是这样的: 我在对MySQL进行性能测试时,发现CPU使用率接近100%,其中80%us, 16%sys,3%wa,iostat发现磁盘iops2000以下,avgqu-sz不超过3,%util最 ...

  7. 4.性能下降原因和常见的Join查询

    性能下降 SQL慢,执行时间长,等待时间长 1.查询语句写的烂 2.索引失效 单值索引失效 和 复合索引失效 3.关联查询太多join(设计缺陷或不得已的需求) 4.服务器调优及各个参数设置(缓冲.线 ...

  8. mysql监控、性能调优及三范式理解

    原文:mysql监控.性能调优及三范式理解 1监控 工具:sp on mysql     sp系列可监控各种数据库 2调优 2.1 DB层操作与调优 2.1.1.开启慢查询 在My.cnf文件中添加如 ...

  9. 【MySQL】Got fatal error 1236原因和解决方法

    一 前言  MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主从复制数据库集群的时候,作为专职的MySQL DBA,笔者相信大多数人都会遇到“Got fatal error ...

  10. MySQL Innodb数据库性能实践——热点数据性能

    摘要: 对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据. 常见的热点数据有“最新的新闻”.“最热门的新闻”.“下载量最大”的电影等. 为了了解MySQ ...

随机推荐

  1. Java //数组的反转

    1 //数组的反转 2 //方式一 3 System.out.println("数组的反转"); 4 5 // for(int i = 0; i <arr.length/2; ...

  2. APP限制录屏怎么办?如何绕过APP录屏限制和截图限制-支持安卓和IOS

    简要:互联网越来越发达,衍生了很多形形色色的app,商家为了防止app资源被传播,因此在用户截取屏幕操作或者录屏操作时会警告用户并前会禁止用户的这一操作行为. 那么有没有办法解决呢?有人说可以用投屏. ...

  3. https://pengchenggang.github.io/vuejsdev-com-github 备份发布

    https://pengchenggang.github.io/vuejsdev-com-github 备份发布 现在还没有解决的就是 开clash,代码提交不上去,只能关了提,但是关了提交,也得赶运 ...

  4. 什么是docker的多阶段构建

    Docker多阶段构建是一种技术,允许在不同的构建阶段中使用不同的基础镜像,并只复制构建所需的文件和依赖项.这种技术旨在减少最终生成的Docker镜像的大小和运行时的资源消耗. 多阶段构建的一般工作流 ...

  5. SqlServer复制和订阅(实现主从同步)

    SqlServer复制和订阅 注意: 1.登录必须是服务器名称不能是ip 2.订阅服务器不需要提前创建数据库 复制 1.展开要发布的数据库节点,找到复制下的本地发布 2.右击本地发布,选择本地发布 3 ...

  6. Python使用os模块创建带时间戳的文件夹

    直接上源码: # 导入os模块 import os import time # 创建文件夹函数 def mkdir(path): # os.path.exists 函数判断文件夹是否存在 folder ...

  7. dotNet8 全局异常处理

    前言 异常的处理在我们应用程序中是至关重要的,在 dotNet 中有很多异常处理的机制,比如MVC的异常筛选器, 管道中间件定义try catch捕获异常处理亦或者第三方的解决方案Hellang.Mi ...

  8. C++小细节

    cin不仅遇到EOF会返回无效状态(通常用来终止循环),遇到无效输入的时候也会返回无效状态,比如向整型变量输入字符. char类型的大小和机器有关,最小8位,大多数机器字节(byte)是8位,byte ...

  9. 新浪Linux 运维工程师面试真题

    新浪Linux 运维工程师面试真题 首先我们来看下新浪 Linux 运维工程师招聘岗位要求: [岗位定义]运维工程师 [岗位薪资]10K-20K [基本要求]经验 1-3 年 / 本科及以上 / 全职 ...

  10. 建民的JAVA课堂

    import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { String ...