一般情况下(非只记录日志等)大表指:
1.记录行数单表超过千万行
2.表数据文件超过10G
大表的影响:
1.慢查询
2.建立索引需要很长的时间:可能引起锁表或主从延迟
3.修改表结构需要长时间锁表:主从延迟; 影响正常的数据操作
如何处理大表:
1.分库分表(不好操作):选择合适的分表主键;如何处理分表后跨分区数据的查询和统计
2.历史数据归档:注意归档时间点的选择;如何进行归档操作。
可以减少对前后端业务的影响。例如日志表或者订单表,归档表还可以放在别的服务器上。
事务:指关系型数据库系统区别其他一切基于文件系统的重要特性之一。原子性,一致性,隔离性,持久性。
SQL四种隔离级别:隔离性顺序增高,并发性顺序降低
1.未提交读(READ UNCOMMITED):事物可以读取未提交的数据(脏读)
2.已提交读(READ COMMITED):一个事物开始时只能看到已提交的事物的修改,简单的说就是一个事物从开始到提交前对数据所做的修改对其他事物不可见
3.可重复读(REPEATABLE READ)(innodb默认)
4.可串行化(SERIALIZABLE):会在读取的每一行上都加锁
大事务:运行时间比较长,操作数据比较多的事务
大事务的影响:
1.锁定太多的数据,会造成大量的阻塞和锁超时
2.回滚时所需时间比较长
3.执行时间长,容易主从延迟
如何处理大事务:
1.避免一次处理太多数据
2.移出不必要在事务中的SELECT操作,尽量保证只有写操作
小贴士:本人觉得学习是一个过程,如果暂时没有到达哪个地步就不要过早去学习,把目前自己最需要的学好,一步一个脚印。慢慢的你要的层级都出来了。