QPS 即每秒查询率
TPS 即秒事務處理量

影响数据库的因素

  1. sql 查询速度
  2. 服务器硬件
  3. 磁盘IO
  4. 网卡流量

超高的QPS和TPS
风险:效率低下的sql

大量的并发和超高的CPU使用率
风险:
大量的并发: 数据库连接数倍占满 (max_connections默认100)
超高的cpu使用率: 因CUP资源耗尽而出现宕机

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

网卡流量
风险:网卡IO被占满 (1000mb/s ~ 100mb)
如何避免无法连接数据库情况:

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

大表带来的问题

大表:
记录条数超过千万行
表数据文件巨大,表数据文件超过10g

慢查询:很难在一定时间内过滤出所需要的数据

对DDL操作(就是对数据库内部的对象进行创建、删除、修改的操作语言)的影响: 建立索引需要很长的时间
风险:
mysql < 5.5 建立索引会锁表
mysql >=5.5 虽然不会锁表但会引起主从延迟

修改表结构需要长时间锁表
风险:
会造成长时间的主从延迟
影响正常的数据操作(因为堵塞,很容易会使连接数占满)

解决方法:

  1. 分库分表把一张表分成多个小表
    难点:
    分表主键的选择
    分表后跨分区数据的查询和统计

  2. 大表的历史数据归档 减少对前后端业务的影响
    难点:
    归档时间点的选择
    如何进行归档操作

什么是大事物

运行时间比较长,操作的数据比较多的事物
风险:

  1. 锁定太多的数据,造成大量的阻塞和锁超时
  2. 回滚时所需时间比较长
  3. 执行时间长,容易造成主从延迟

如何处理大事务

  1. 避免一次处理太多的数据
  2. 移除不必要在事物中的 SELECT操作

影响性能的几个方面

  1. 服务器硬件
  2. 服务器操作系统
  3. 数据库存储引擎的选择 myisam、innodb
  4. 数据库参数配置 【影响最大】
  5. 数据库机构设计和sql语句 (尽力屏蔽慢查询)

cup资源和可用内存大小

当我们热数据(指访问频率高、对业务和应用关键的数据。这些数据通常需要快速、高效地访问和处理,因此需要存储在高性能、低延迟的存储设备上,如SSD固态硬盘、内存等) 远远超过可用内存大小时IO系统就会成为瓶颈

如果选择cup

  1. 我们系统是否是cup密集型(指应用程序大部分时间都使用CPU来做计算),如果是,就需要cup越多越好
  2. 如果我们系统的并发量多或吞吐量多,就需要cup越多越好
  3. mysql版: 如果是5.6以上对多核cup (16或32核cup)优化有很大的改善

注意:
64位cup使用32位的服务器版本,32位操作系统就对mysql性能造成影响

常用mysql存储引擎中
MyISAM -> 索引 -> 内存
MyISAM -> 数据 -> os

innodb -> 索引 -> 内存
innodb -> 数据 -> 内存

注意:
内存不是越多越好,对性能的影响也是有限的,并不能无限啊增加性能
内存的主频,频率越高速度越快,主板支持的最大内存频率

总结

cup

  1. 64位cpu一定要工作在64位系统下
  2. 对于并发较高的场景cpu的数量比频率重要
  3. 对于CPU密集性场景和复杂sql则频率越高越好

内存

  1. 选择主板所能使用的最高频率的内存
  2. 内存的大小对性能很重要,所以尽可能大

硬盘
IO子系统 pcie->ssd->raid10->磁盘->san

avatar
懒觉猫先生
欢迎你们的到来!
关注我吧
最新文章
最新评论
正在加载中...
网站资讯
文章数目 :
176
已运行时间 :
本站总字数 :
119.7k
本站访客数 :
本站总访问量 :
最后更新时间 :