美文网首页
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