影响数据库的因素:(大多数可以优化sql)
1.sql查询速度
2.服务器硬件
3.网卡流量
4.磁盘IO
qps:每秒处理的sql数量
磁盘IO性能突然下降:使用更快的磁盘设备
减少从服务器的数量
进行分级缓存
避免使用select
大表带来的影响
表中记录的数超过千万行
数据文件巨大,数据文件超过10G
大表对查询的影响:
慢查询:很难在一定的时间内过滤出所需要的数据
达标对DDL操作的影响
建立索引需要很长的时间
修改表结构需要长时间锁表(会造成长时间的主从延迟)
处理数据库中的大表
分库分表把一张大表分成多个小表
难点:分别主键的选择
分表后跨分区数据的查询和统计
大表的历史数据归档,减少对前后端业务的影响
难点:
归档时间点的选择
如何进行归档操作
大事务带来的影响
事务:
原子性:要么全部成功,要么全部失败
一致性:在事务开始之前和事务结束后数据库中要保持一致性
持久性一旦数据提交,就会哟弄个就保存
隔离性:一个书屋对数据库中的数据修改,在未提交时其它时不可见的
4种隔离级别:隔离性由低到高,并发性,由高到底
未提交读,脏读
已提交读
可重复读
可串行化
大事务:运行时间比较长,操作的数据比较多的事务
风险:
锁定太多的数据,造成大量的阻塞和锁超时
回滚时所需时间比较长
执行时间长,容易造成主从延迟
将如何处理大事务
1.避免一次处理太多的数据
2.移除不必要在事务中的select操作