美文网首页
Mysql高性能-是什么影响了数据库

Mysql高性能-是什么影响了数据库

作者: 一颗懒能 | 来源:发表于2017-12-18 23:43 被阅读0次

    Mysql高性能笔记

    影响数据库的因素

    • sql查询速度
    • 服务器硬件
    • 网卡流量
    • 磁盘IO

    超高的QPS(每秒查询速度)和TPS(每秒事务量)

    • 风险:效率底下的SQL

    假设只有一个CPU,让我们来看下面这张图:

    image.png

    可以看到对比,100ms的低效率的慢查询看似不大,但是对数据库压力很大。提高数据库性能之一就是优化那些效率低下的sql,提高性能,提高QPS。

    大量的并发和超高的CPU使用率

    风险:

    • 大量的并发:数据库连接数被沾满(max_connections默认是100,在实际生产中我们要修改变大)
    • 超高的CPU使用率:因为CPU资源耗尽而出现宕机。

    磁盘IO

    风险:

    • 磁盘IO性能突然下降(使用更快的磁盘设备)
    • 其他大量消耗磁盘性能的计划任务(调整计划任务,做好磁盘维护)。

    网卡流量

    风险:

    • 网卡IO被沾满(1000Mb/8约等于100MB)

    如何避免:

    1. 减少从服务器的数量
    2. 进行分级缓存
    3. 避免使用’select *‘
    4. 分离业务网络和服务器网络

    还有什么会影响数据库性能?

    什么样的表可以被称为大表:

    • 记录行数巨大,单表超过千万行
    • 表数据文件巨大,表数据文件超过10G
    • 还是要灵活运用

    大表对查询的影响:

    • 慢查询:很难在一定的时间内过滤出所需要的数据。
    • 大表建立索引需要很长的时间。Mysql < 5.5 建立索引会锁表。Mysql > 5.5 不会锁表,但是会主从延迟。


      image.png

      订单来源有四家,那么查询的时候会产生慢查询。
      因为我们查询的时候,订单来源比较少,区分度比较低,会产生大量的磁盘IO,进而降低磁盘效率,导致大量的慢查询。 这个时候如果把订单来源进行分表的话对减少数据库的IO压力,增强QPS。

    大表对DDL操作的影响:

    • 修改表结构需要长时间锁表
    • 会影响正常的数据操作

    风险:会造成长时间的主从延迟。

    如何处理数据库中的大表:

    • 分库分表把一张大表分成多个小表。

    难点:

    1. 分表主键的选择
    2. 分表后跨区数据的查询和统计
    • 对大表进行历史数据归档 减少对前后端业务的影响

    难点:

    • 归档时间点的选择
    • 如何进行归档

    什么是事务?

    1. 事务的数据库系统区别于其他一切文件系统的重特性之一。
    2. 事务是一组具有原子性的SQL语句,或是一个独立的工作单元。

    事务的四个特性:

    • 原子性
    • 一致性
    • 隔离性
    • 持久性

    什么是大事务?

    定义:运行的时间比较长,操作的数据比较多的事务。
    风险:锁定太多的数据,造成大量的阻塞和锁超市,回滚时所需要的时间比较长,执行时间长,太容易造成主从延迟。

    所以我们要避免一次处理太多的数据。移出不必要在事物中的SELECT操作。

    相关文章

      网友评论

          本文标题:Mysql高性能-是什么影响了数据库

          本文链接:https://www.haomeiwen.com/subject/eypvwxtx.html