码迷,mamicode.com
首页 > 数据库 > 详细

mysql性能优化总结

时间:2020-07-06 10:59:13      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:分离   事务   情况下   区别   最好   cti   连接   数据库备份   解决办法   

一.什么决定双11大促的成败?

场景:原数据库架构为1M15S,M服务器性能很好,64核512G内存,IO采用fashion IO,比一般磁盘的读写能力高很多.

缺点:

  1.只有一个主库,没有主从切换中间件,每次如果主库挂了,需要运维人员手动进行切换,然后同步给其他从库,耗时高(超过半小时不可用)

  2.双十一凌晨2点半数据库磁盘IO达到峰值,造成恐慌,担心性能为急剧下降.经检查,发现是数据库远程备份定时任务在跑,总结:最好不要在主库上进行数据库备份,大型活动前取消这类计划.

 

对数据库性能影响比较大的因素:

  (1)sql性能

 

  (2)网卡流量

  (3)服务器硬件

  (4)磁盘IO

  (5)大表

  (6)大事务

 

数据库面临的风险:

  (1)超高的qps和tps

    根据经验,数据库性能80%都是由慢查询导致的.大多数据数据库问题都可以通过sql性能优化来解决.

    当前的mysql不支持单sql语句多cpu并发计算,一条sql只能由一个cpu去执行.10ms的sql和100ms的sql性能直接相差10倍.

  (2)大量的并发和超高的cpu使用率

    大量并发:数据库连接被占满.当并发数大于最大连接数时,用户请求会阻塞等待,超时就会出现500错误,对用户体验造成影响.

      PS:并发数和连接数的区别:并发是指同时请求mysql的数量,连接数是指mysql的连接数,通常连接数远大于并发数,因为大部分的连接都是出于sleep状态.类似于http长连接.

      数据库最大连接数:max_connections,默认值为100.所以需要把这个参数改的大一些.

    超高的cpu使用率:可能导致cpu资源耗尽而宕机

  (3)磁盘

    1.IO性能突然下降

      常发生在热数据量远远大于服务器可用内存的情况下(使用更快的磁盘设备来解决.比如fashion io,SSD,更好的read卡)

    2.其他大量损耗磁盘性能的计划任务(调整计划任务,做好磁盘维护)

  (4)网卡流量(1000Mb/8≈100MB)

    流量高峰期,千兆网卡多次被跑满,其他请求会出现无法连接数据库. 

    解决办法:

      1.减少从数据库的数量   

      2.进行分级缓存,避免大量的请求突然对数据库形成冲击

      3.避免使用SELECT * 进行查询,查询出没有必要的列会浪费网络流量

      4.分离业务网络和服务器网络,避免主从同步或者备份等作业影响网络性能.

 

什么是大表:

  1.记录行数巨大,单表达到千万行

    根据场景灵活应用,比如日志表,只有insert操作和少量的select操作,几乎没有update操作和delete操作,这样的表就算超过了千万行,也不会对业务产生什么影响.实际工作中有遇到过,日志表的行数已经超过10个亿了,一直很稳定.但是在增加列的时候,会非常痛苦(为什么?)

  2.数据文件巨大,表数据文件超过10G

 

大表的查询的影响:

  1.慢查询:大表意味着很难在一定的时间内,过滤出所需要的的数据

    

 

mysql性能优化总结

标签:分离   事务   情况下   区别   最好   cti   连接   数据库备份   解决办法   

原文地址:https://www.cnblogs.com/hongzuiliyu/p/13253281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!