随着数据量的增大,数据库的性能问题也是个值得关注的问题,很多公司对mysql性能方面没有太过重视,导致服务浪费过多资源、mysql服务性能差从而直接影响用户体验,这里我们简单的先来聊聊什么影响了mysql性能,从而能关注这些问题。

影响性能的几个方面
  • 服务器硬件
  • 服务器系统
  • 数据库存储引擎的选择(插件形式的)
    • MyISAM: 不支持事务,表级锁
    • InnoDB: 事务级存储引擎,完美支持行级锁,事务ACID特性
  • 数据库参数配置
  • 数据库结构设计和SQL语句
    • 慢查询(数据库表结构设计)
    • SQL语句的编写和优化

硬件资源方面的影响有哪些?

CPU资源和可用内存大小
  • 我们的CPU是不是密集型的,如果是就需要更好的CPU
  • 不支持多CPU对同一SQL并发
  • 我们的系统并发量如何?
    • 如果是大并发场景下,CPU数量比频率更重要
    • MYSQL版本决定多核CPU支持(尽量用最新版)
      • 高版本的mysql更支持多核
  • 选择32位还是64位的CPU?
    • 64位使用32位的服务器版本(不能忽视这个问题,测试/开发环境可能会遇到系统版本问题)
    • 32位对性能有限制
  • 内存大小影响性能

    内存的影响不过多解释,大当然不是说内存越大性能越好,这里有一片博客介绍参数写的听全,感兴趣可以参考https://www.cnblogs.com/xuan52rock/p/4569835.html
磁盘的配置和选择
  • 使用传统机器硬盘

    • 存储容量
    • 传输速度
    • 访问时间
    • 主轴转速(7200转/15000转)
    • 物理尺寸
  • RAID增加传统机器硬盘的性能

    • RAID 0(不担心数据丢失)

      • 没有提供冗余或错误修复能里
      • 成本低
    • RAID 1(可利用率低,可以提高好的读操作)
      • 在写入一个磁盘同时,往另外一个镜像硬盘写入
    • RAID 5(读操作多的应用,从数据库上)
    • RAID 10(分片镜像,重要的选择)
      • 一块磁盘损坏性能会下降
  • 固态存储(SSD闪存)

    • 相比机械磁盘固态磁盘有更好的随机读写
    • 有更好的支持并发
    • 相对机械磁盘固态磁盘更容易损坏(缺点)
      • SSD(固态硬盘)

        • 使用SATA接口
        • SATA接口的SSD同样支持RAID技术
        • 使用场景
          • 适合于大量随机IO
          • 解决单线程负载IO的瓶颈
          • 只有一块固态存储设备,应该放在从服务器上
            • 主服务器上多线程,从服务器单线程
      • PCI-E SSD(Fusion-io)
        • 无法使用SATA接口
        • 价格相对贵(还要占用服务器内存和CPU)
  • 网络存储SAN和NAS

    • 网络存储使用的场景(并不适合)

      • 数据库备份
    • 网络性能的限制

      • 延迟

      • 带宽

      • 网络质量

        建议

        • 采用高性能和高带宽的网络接口和交换机
        • 对多个网卡进行绑定,增强可用性和带宽
        • 网络隔离

    总结:

    • CPU

      • 64位的CPU一定要工作在64位系统
      • 对于并发比较高的场景CPU的数量比频率重要
      • 对于CPU密集性场景和复杂SQL则频率越高越好
    • 内存
      • 选择主板所能使用最高频率的内存
      • 内存大小越大越好
    • I/O子系统
      • PCIe卡-》SSD-〉-》Raid10〉磁盘-》SAN
操作系统对性能的影响
  • centos系统参数优化

    • 内核相关参数(/etc/sysctl.conf)

      # net.core.somaxconn是Linux中的一个kernel参数,表示socket监听(listen)的backlog上限。什么是backlog呢?backlog就是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝
      net.core.somaxconn = 65535
      net.core.netdex_max_backlog = 65535
      net.ipv4.tcp_max_syn_backlog = 65535
      加快TCP连接,快速回收TCP连接资源
      net.ipv4.tcp_fun_timeout = 10
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_te_recycle = 1
      加快资源回收效率
      net.ipv4.tcp_keepalive_time = 120
      net.ipv4.tcp_keepalive_intvl = 30
      net.ipv4.tcp_keepalive_probes = 3
      kernel.shmmax = 4294967295
      这个参数应该设置的足够大,以便能在一个共享内存段下容纳下整个innodb缓冲池的大小 vm.swappiness = 0
      MYsql上保留内存交换分区还是有必要的
      增加资源限制(/etc/security/limit.conf)
      * soft nofile 65535
      * hard nofile 65535
      * 表示对所有用户有效
      soft 指的是当前系统生效的配置
      hard 表明系统中所能设定的最大值
      nofile 表示所限制的资源是打开文件的最大数目
      65535 就是限制的数量
      磁盘调度策略(/sys/block/devname/queue/scheduler)
      
      cat /sys/block/sda/queue/scheduler
      noop anticipatory deadline [cfq] noop(电梯式调度策略)
      deadline(截止时间调度策略) 对数据库最好选择
      anticipatory(预料I/O) 改变磁盘调度策略(/sys/block/devname/queue/scheduler)
      echo deadline > /sys/block/devname/queue/scheduler
  • 文件系统对性能的影响

    • XFS对性能最好

      data = writeback | ordered | journal
      常用的文件系统的配置
      /dev/sda1/ext4 noatime,nodiratime,data=writeback 1 1

什么影响了mysql的性能-硬件资源及系统方面优化的更多相关文章

  1. 什么影响了mysql的性能-存储引擎层

    5.6版本以前默认是MyISam存储引擎,5.6版本之后默认支持的Innodb存储引擎,这两种也是最常用的. 存储引擎层 MyISAM 5.5之前版本默认存储引擎 存储引擎表由MYD和MYI组成 特性 ...

  2. MYSQL开发性能研究——批量插入的优化措施

    一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1);   很显然,在MYSQL中,这样的方 ...

  3. 第6章 影响 MySQL Server 性能的相关因素

    前言: 大部分人都一致认为一个数据库应用系统(这里的数据库应用系统概指所有使用数据库的系统)的性能瓶颈最容易出现在数据的操作方面,而数据库应用系统的大部分数据操作都是通过数据库管理软件所提供的相关接口 ...

  4. 影响 MySQL Server 性能的相关因素

    MySQL 最多的使用场景是WEB 应用,那么我们就以一个WEB 应用系统为例,逐个分析其系统构成,进行经验总结,分析出数据库应用系统中各个环境对性能的影响. 商业需求对性能的影响 这里我们就拿一个看 ...

  5. MySql(六):影响 MySQL Server 性能的相关因素

    MySQL 最多的使用场景是WEB 应用,那么我们就以一个WEB 应用系统为例,逐个分析其系统构成,进行经验总结,分析出数据库应用系统中各个环境对性能的影响. 一.商业需求对性能的影响 这里我们就拿一 ...

  6. 影响MySQL的性能(一)磁盘的选择

    一.磁盘的选择也是影响MySQL的性能的重大因素之一 1.使用传统的机器硬盘读取数据的过程 2.如何选择传统机器硬盘的因素 二.使用RAID增加传统机器硬盘的性能 1.什么是RAID技术 2.常见的R ...

  7. 经验:什么影响了数据库查询速度、什么影响了MySQL性能 (转)

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定 ...

  8. MySQL性能管理及架构设计:第2章 什么影响了MySQL性能

    第2章 什么影响了MySQL性能 2-1 影响性能的几个方面 1.服务器的硬件 2.服务器的操作系统 3.数据库的存储引擎 4.数据库的参数配置 5.数据库表结构设计和SQL语句的编写和优化 2-2 ...

  9. 第 10 章 MySQL Server 性能优化

    前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的 ...

随机推荐

  1. HDFS java API TROUBLESHOOTING

    官方文档:https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/SingleCluster.html 配置免密 ...

  2. djang-celery使用带密码的redis

    前言: 网上很多django-celery使用redis(使用不带密码的redis)的用法都是千篇一律,那带密码的redis该怎么使用了呢,没有看到一篇有帮助的,在官网搜了下,发现以下用法,请看下面 ...

  3. Springboot中IDE支持两种打包方式,即jar包和war包

    Springboot中IDE支持两种打包方式,即jar包和war包 打包之前修改pom.xml中的packaging节点,改为jar或者war    在项目的根目录执行maven 命令clean pa ...

  4. element ui + sortablejs实现表格的行列拖拽

    <template> <div class="container"> <el-table :data="tableData" bo ...

  5. Linux下将.Asp Core 部署到 Docker容器中

    我们来部署一个简单的例子: 将一个简单的.Aps Core项目部署到Docker容器中并被外网访问 说明: 下面的步骤都是建立在宿主服务器系统已经安装配置过Docker容器,安装Docker相对比较简 ...

  6. [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)

    期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...

  7. 嵌入式02 STM32 实验03 时钟系统

    时钟系统是处理器的核心,所以认真学习时钟系统是必要的,有助于深入理解STM32. 由于STM32的外设很多,有的外设不需要太高的时钟频率,同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也越弱,所以对 ...

  8. UOJ424 Count 生成函数、多项式求逆、矩阵快速幂

    传送门 两个序列相同当且仅当它们的笛卡尔树相同,于是变成笛卡尔树计数. 然后注意到每一个点的权值一定会比其左儿子的权值大,所以笛卡尔树上还不能够存在一条从根到某个节点的路径满足向左走的次数\(> ...

  9. JVM与并发

    1.jvm内存模型 硬件内存模型 处理器-->高速缓存-->缓存一致性协议-->主存 java内存模型 线程<-->工作内存<-->save和load < ...

  10. kafka学习笔记(二)——基础入门

    1.集群规划 从官网下载jar包 http://kafka.apache.org/downloads.html,我选择的是kafka_2.11-0.11.0.0.tgz版本 规划一下集群环境先~ ha ...