• 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干了,我们也很难去搞定。

  • 相关阅读:
    docker基础命令
    oracle 控制文件损坏处理
    mongodb 分片技术
    replcation set (复制集)配置过程 --mongodb
    redis API ---python
    MHA 高可用架构部署
    innoback 参数及使用说明
    Windows服务创建及发布
    DevOps 什么是 CI/CD?
    .NETReflectorVisualStudioExtension
  • 原文地址:https://www.cnblogs.com/aoximin/p/12991970.html
Copyright © 2020-2023  润新知