影响数据库的因素

  • 服务器硬件
  • 磁盘IO
  • sql查询速度
  • 网卡流量

磁盘IO

  • 不要在主库上数据库备份,大型活动前取消这类计划

大量并发和超高的CPU使用率

  • 大量的并发会使数据库的连接数占满
  • 超高的CPU使用率会导致资源耗尽而宕机

网卡流量

如何避免无法连接数据库的情况

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

大表

记录行数巨大,单表超过千万行;表数据文件巨大,表数据文件超过10G;

分库分表把一张大表分成多个小表

  • 分表主键的选择
  • 分表后跨分区数据的查询和统计

如何处理数据库中的大表:大表的历史数据归档(减少对前后端业务的影响),以下难点:

  • 归档时间点的选择
  • 如果进行归档

事务

  • 原子性:整个事务的所有操作要么全部提交成功,要么全部失败回滚
  • 一致性:指事务将数据库从一种一致性状态转换到另外一种一致性状态,在事务开始之前和事务结束后数据库中的完整性没有被破坏
  • 隔离性:要求一个事务对数据库中数据修改,在未提交完成前对其他事务是不可见的
  • 持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,已经提交的修改数据也不会丢失。

大事务

运行时间比较长,操作的数据比较多的事务

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

如何处理大事务:

  • 避免一次处理太多的数据
  • 移出不必要在事务中的select操作