1、影响MySql性能的几个因素(笔记)

影响MySql性能的几大因素

  1. SQL语句执行效率低;
  2. 配置未优化;
  3. 表设计不合理;
  4. CPU或内存瓶颈;
  5. 磁盘I/O瓶颈;
  6. 网卡流量瓶颈;
  7. 大型事务操做;

SQL语句执行效率低下

效率的指标是QPS和TPS。数据库

若是一条查询的SQL语句执行一次耗时是10ms的话,那么理论上每秒能执行100次,这时理论上应该是QPS≤100的。缓存

若是一条查询的SQL语句执行一次耗时是100ms的话,那么理论上每秒能执行10次,这时理论上应该是QPS≤10的。服务器

MySql默认的链接数是100个,若是查询的请求过多,执行速度慢的话(QPS≤10),会形成链接数耗尽,缘由在于大量的链接在等待。网络

配置未优化

配置的优化这里,就像上面提到的默认的链接数,根据软件的需求来合理的调整配置是很是重要的。性能

表设计不合理

就一些大公司的经验来看,单表大于一千万行,或者大于10G都属于大表范围,大表会带来的问题以下:优化

  1. 慢查询;
  2. 执行DDL等操做,或添加索引等耗时很长;
  3. 修改表结构会形成锁表,从而致使主从延迟,若是主库请求阻塞会形成链接数猛增,致使没法获取数据库链接;

解决方法:spa

  1. 能够选择分库分表,可是要选择好分片的主键,而且准备好分区查询和统计带来的复杂度;
  2. 能够选择将大表的历史数据归档到历史表,业务表中只保存短时间内的业务数据;

CPU或内存瓶颈

若是不是由于异常状况致使CPU使用率耗尽,或者内存空间不足,则须要考虑提高服务器的硬件配置。设计

磁盘I/O瓶颈

要谨慎的在数据库服务器上执行复杂的计划任务,复杂的计划任务可能会带来大量的磁盘I/O操做,从而致使磁盘I/O打到瓶颈。例如在某些大量用户线上活动时,最好先暂停那些耗费性能的计划任务(统计,备份,清理等等)。索引

网卡流量瓶颈

目前服务器的网卡大小大可能是千兆网卡,千兆指的是小b,若是换算成大B能够约等于100MB,在数据库服务器上要减小带来大量网络传输的事件,例如:事件

  1. 减小从服务器的数量,变量减小了数据同步带来的网络传输消耗;
  2. 减小select *这种SQL查询操做;
  3. 能够加入分级缓存机制,避免单级缓存雪崩,形成大量的读操做,占满带宽;

大型事务操做

事务的特性是A(原子性)C(一致性)I(隔离性)D(持久性)。

其中,隔离性有几种隔离级别:

  1. 读未提交,会形成脏读;
  2. 读已提交,会形成不可重复度;
  3. 可重复读,会形成幻读,MySql默认的隔离界别;
  4. 序列化;

大事务是指,运行时间长的,操做事务较多的执行任务,这会带来一些风险:

  1. 事务会形成锁定数据,有可能形成大量链接阻塞或执行超时;
  2. 若是事务失败,回滚的时间会很是长;
  3. 会形成主从延迟的同步;

对于这种状况,也有一些解决方法:

  1. 对于大量的数据,能够分批次执行数据处理;
  2. 检查事务中的SQL语句,看看是否有没必要要的SELECT操做;
相关文章
相关标签/搜索