mysql数据库分析优化

首先我们来说一说数据库架构:
对于大多数数据库架构,大家都是主从结构的,Master —–>Slave
影响数据库性能:
1.sql查询速度
2. 服务器硬件
3.网卡流量
4.磁盘IO
这些因素造成的影响:
1.超高的QPS和TPS
QPS:每秒钟处理的查询量
10ms 处理 1个sql
1s 处理 100个sql
QPS <=100
也就是我们的慢查询
2.大量的并发和超高的CPU使用率:
风险:
大量的并发:
数据库连接数被占满(MAX_CONNTECTION:100)
超高的CPU使用率:
因CPU资源耗尽出现宕机
3.磁盘IO性能突然下降:
风险:磁盘IO性能突然下降(使用更快的磁盘设备)
其它大量消耗磁盘性能的计划任务(调整计划任务,做好磁盘
维护)
4:网卡流量:
分险:网卡IO被沾满(1000Mb/8≈100MB)
如何避免无法连接数据库的情况:
1.减少从服务器的数量,因为从服务器要在主服务器复制日志,消耗网络流量
2.进行分级缓存
3.避免使用“select *”进行查询
4.分离业务网络和服务网络

大表带来的问题:
什么样的表可以称为大表:
▶ 记录行数巨大,单表超过千万行
▶ 表数据文件巨大,表数据文件超过10G
大表的影响:
慢查询:很难再一定时间内过滤出所需要的数据
建立索引需要很长时间
Mysql<5.5建立索引会引起锁表
Mysql>=5.5 虽然不会锁表但会引起主从延迟
修改表结构需要长时间锁表
影响正常的数据操作

如何处理数据库中的大表
▶分库分表:把一张大表分成多个小表(要消耗大量的人力物力)
难点:
分表主键的选择
分表后跨分区数据的查询和统计
▶大表的历史数据归档减少对前端业务的影响
难点:
归档时间点的选择(归档数据:很少使用的数据)
如:订单列表 可以归档一年前的数据,也可以选择一个月前的数据
日志:归档前一周的数据
如何进行归档操作

大事务带来的问题:
定义:运行时间比较长,操作的数据比较多的事物
风险:
锁定太多的数据,造成大量的阻塞和锁超时
回滚时间所需时间比较长
执行时间长,容易造成主从延迟
如何处理大事物:
♢避免一次处理太多的数据
♢移出不必要在事务中的select操作

未完,待续……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章