1、最好不要在主库上数据库备份、大型活动前取消这类计划
2、影响数据库的因素:SQL查询速度,服务器硬件、网卡流量、磁盘IO
QPS:每秒钟处理的查询量
TPS:
大量的并发:数据库链接数被占满(max_connections默认是100)
超高的CPU使用率:因CPU资源耗尽而出现宕机
磁盘IO:性能下降,使用SSD等更快的设备
网卡IO:被占满
如何避免无法连接数据库的情况:
1、减少从服务器的数量
2、进行分级缓存
3、避免使用“select *”进行查询
4、分离业务网络和服务器网络
大表对DDL操作的影响
修改表结构需要长时间锁表:mysql<5.5建立索引会锁表
会造成长时间的主从延迟:mysql>= 5.5
分库分表难点:分表主键的选择、分表后,跨分区数据的查询和统计
大表的历史数据归档:减少对前后端业务的影响
难点:归档时间点的选择、 如何进行归档操作
事务:
原子性:必须视为一个不可分割的最小工作单位,要么全部成功,要么全部失败
一致性:事务将数据从一种一致性状态转换到另外一种一致性状态,在事务开始之前和事务开始结束之后数据库中数据的完整性没有被破坏
隔离性:一个事务对数据库中数据的修改,在未提交完成前对于其它事务是不可见的
未提交读(READ UNCOMMITED)
已提交读(READ COMMITED)
可重复读(REPEATATLE READ)
可串行化(SERIALIZABLE)
从上到下:隔离性越来越高,并发性越来越低
持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中,即使系统崩溃,已经提交的修改数据也不会丢失
大事务:运行时间比较长,操作的数据比较多的事务
风险:
锁定太多的数据,造成大量的阻塞和锁超时
回滚时所需时间比较长
执行时间长,容易造成主从延迟
如何处理大事务
1、避免一次性处理太多的数据
2、移出不必要中事务中的SELECT操作