影响MySQL服务器性能的几个因素 秒速五厘米 2022-03-01 00:46 425阅读 0赞 # 影响MySQL服务器性能的几个因素 # ## 1. 高流量时可能的重要原因. ## ### 1.1 超高的QPS和TPS ### 1. 风险:效率低下的SQL,mysql 很多版本并不支持多CPU并发运算 > QPS: 每秒钟支持的sql数量 1. 解决 :大多数问题都可以通过优化sql解决。 ### 1.2 大量的并发和超高的CPU使用率 ### 1. 大量的并发: * 数据库连接数被占满(max\_connections默认为100) 2. 超高的CPU使用率: * 因CPU资源耗尽而出现宕机. ### 1.3 磁盘I/O ### 1. 风险 * 磁盘IO性能突然下降(使用更快的磁盘设备) 2. 解决: * 使用更快的磁盘设备. * 调整日常的定时计划(如定时备份,做好磁盘维护) ### 1.4 网卡流量 ### 1. 风险: * 网卡IO被占满(大约100M) 2. 解决: * 减少从服务器的数量 * 进行分级缓存 * 避免使用“select \*”进行查询 * 分离业务网络和服务器网络. ## 2 大表带来的问题 ## ### 2.1. 大表简介 ### -------------------- * 记录行数巨大,单表超过千万行(相对) * 表数据文件巨大,表数据文件超过10G.(相对) ### 2.2 大表的影响 ### -------------------- 1. 慢查询:很难在一定的时间内过滤除所需要的数据. 2. 建立索引需要很长的时间 * 风险: MySQL版本 < 5.5 建立索引会锁表. * MySQL版本 >= 5.5 虽然不会锁表但会引起主从延迟. 3. 修改表结构需要长时间锁表 * 风险: 会造成长时间的主从延迟 * 影响正常的数据操作. ### 2.3 大表的处理方式 ### -------------------- 1. 分库分表 * 难点: 分表后主键的选择 * 分表后跨分区数据的查询和统计 * 使用大量的人力物力,冒着很大风险 2. 大表的历史数据归档 * 好处: 减少对前后端业务的影响. * 难点:归档时间点的选择. * 如何进行归档操作. ## 3. 大事务带来的问题. ## 事务级别: * 未提交读 * 已提交读 * 可重复读 * 可串行化 ### 3.1 大事务 ### 运行时间比较长,操作的数据比较多的事务. 风险: * 锁定太多的数据,造成大量的阻塞和锁超时. * 回滚所需的时间比较长 * 执行时间长,容易造成主从延迟. ### 3.2 处理方法 ### 1. 避免一次处理太多的数据 2. 移出不必要在事务中的SELECT操作. ## 1. 高流量时可能的重要原因. ## ### 1.1 超高的QPS和TPS ### 1. 风险:效率低下的SQL,mysql 很多版本并不支持多CPU并发运算 > QPS: 每秒钟支持的sql数量 1. 解决 :大多数问题都可以通过优化sql解决。 ### 1.2 大量的并发和超高的CPU使用率 ### 1. 大量的并发: * 数据库连接数被占满(max\_connections默认为100) 2. 超高的CPU使用率: * 因CPU资源耗尽而出现宕机. ### 1.3 磁盘I/O ### 1. 风险 * 磁盘IO性能突然下降(使用更快的磁盘设备) 2. 解决: * 使用更快的磁盘设备. * 调整日常的定时计划(如定时备份,做好磁盘维护) ### 1.4 网卡流量 ### 1. 风险: * 网卡IO被占满(大约100M) 2. 解决: * 减少从服务器的数量 * 进行分级缓存 * 避免使用“select \*”进行查询 * 分离业务网络和服务器网络. ## 2 大表带来的问题 ## ### 2.1. 大表简介 ### -------------------- * 记录行数巨大,单表超过千万行(相对) * 表数据文件巨大,表数据文件超过10G.(相对) ### 2.2 大表的影响 ### -------------------- 1. 慢查询:很难在一定的时间内过滤除所需要的数据. 2. 建立索引需要很长的时间 * 风险: MySQL版本 < 5.5 建立索引会锁表. * MySQL版本 >= 5.5 虽然不会锁表但会引起主从延迟. 3. 修改表结构需要长时间锁表 * 风险: 会造成长时间的主从延迟 * 影响正常的数据操作. ### 2.3 大表的处理方式 ### -------------------- 1. 分库分表 * 难点: 分表后主键的选择 * 分表后跨分区数据的查询和统计 * 使用大量的人力物力,冒着很大风险 2. 大表的历史数据归档 * 好处: 减少对前后端业务的影响. * 难点:归档时间点的选择. * 如何进行归档操作. ## 3. 大事务带来的问题. ## 事务级别: * 未提交读 * 已提交读 * 可重复读 * 可串行化 ### 3.1 大事务 ### 运行时间比较长,操作的数据比较多的事务. 风险: * 锁定太多的数据,造成大量的阻塞和锁超时. * 回滚所需的时间比较长 * 执行时间长,容易造成主从延迟. ### 3.2 处理方法 ### 1. 避免一次处理太多的数据 2. 移出不必要在事务中的SELECT操作.
还没有评论,来说两句吧...