随着数据量的增大,数据库的性能问题也是个值得关注的问题,很多公司对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. matlab学习笔记13_2匿名函数

    一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...

  2. windows下ffmpeg批量转码

    以mp4转mp3为例 for %%i in (*.mp4) do ffmpeg -i "%%i" "%%i.mp3" 将当前文件夹下的mp4文件全部转码为mp3

  3. XT交易所API

    HTTPAPI xt为用户提供了一个简单的而又强大的API,旨在帮助用户快速高效的将xt交易功能整合到自己应用当中. API地址域名地址 域名地址:https://www.xt.com/ 使用说明 使 ...

  4. 工具分享:excel2json,将Excel表格转换为JSON

    此次分享的是github上的一个开源小工具:excel2json,用于把Excel表转换成json对象,并保存到一个文本文件. 项目地址:https://github.com/neil3d/excel ...

  5. Zabbix 3.0 配置企业微信报警(注册---测试)

    一.申请企业微信 1.登录企业微信官网,点击企业注册 二.配置企业微信 1.邀请管理员使用企业微信,如果有多个人直接添加新成员 2.管理员收到邀请,下载手机版企业微信,使用微信号登陆即可 3.创建应用 ...

  6. 【Spring Cloud学习之二】服务注册和发现

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 Spring Cloud 1.2 一.EurekaEureka是Netflix开源的一个RESTful服务,主要用于服 ...

  7. Windows 10 多用户同时远程登录

    win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016. Win10 正常情况下是不允许用户同时远程的,即一个用户远程进来会把另一个用 ...

  8. 构建C1000K的服务器(2) – 实现百万连接的comet服务器

    转自:http://www.ideawu.net/blog/archives/742.html 这是关于 C1000K 序列文章的第二篇, 在前一篇文章 构建C1000K的服务器(1) – 基础 中, ...

  9. shoshana-摄影文集

    20190331 冬宫之油画 20190427 [遇见•梦露]画展 20190428 [三极探索之旅]公益摄影 20190504  赏美-第[000]期 20190505 赏美-第[001]期 201 ...

  10. 【题解】Luogu P5304 [GXOI/GZOI2019]旅行者

    原题传送门 题意:给你k个点,让你求两两最短路之间的最小值 我们考虑二进制拆分,使得每两个点都有机会分在不同的组\((A:0,B:1)\)中,从源点\(S\)向\(A/B\)中的点连边权为0的边,从\ ...