美文网首页
mysql 航行日志(三): 大事务的作死操作影响

mysql 航行日志(三): 大事务的作死操作影响

作者: NiceYu | 来源:发表于2019-03-25 14:18 被阅读0次

什么是事务
1,原子性 - ATOMICITY
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作
2,一致性 - CONSISTENCY
一致性是指事务将数据库从一种一致性状态转换到另外一种一致性状态,在事务开始之前和事务结束后数据库中的数据完整性没有被破坏
3,隔离性 - ISOLATION
隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其他事务是不可见的
SQL标准中定义的四种隔离级别 (show variables like ‘%iso%’)
1,未提交读 - READ UNCOMMITED
(未提交完成,对其他事务也是可见的)(简单来说就是脏读)
2,已提交读 - READ COMMITED
(对事务是可见的)(简单来说就是不可重复读)
3,可重复读 - REPEATABLE READ (innerDB默认)
(其他事务在已提交读后,同事务中读取同数据是一致的)
4,可串行化 - SERIALIZABLE
(最高级别 - 会在读取的每一行数据中加锁,然后导致锁超时等问题)
(很少使用,除非是特别严格)
4,持久性
一旦事务提交,则其是所做的修改就会永久保存到数据库中
此时即使文件系统崩溃,已经提交的修改数据也不会丢失

什么是大事务
定义:
运行时间比较长,操作的数据比较多的事务
风险:
锁定太多的时间,造成大量的阻塞和锁超时
回滚所需时间比较长(当前无法操作已锁数据)
执行时间长,容易造成主从延迟(从库复制日志文件时,执行时间还未完成,或者需要十几分钟,那么从库延迟时间即等于此时间)
解决:
1,避免一次处理太多的数据(CURL),分批次操作较为合理
2,移出不必要在事务中的SELECT操作(事务中保留增删改即可)

相关文章

网友评论

      本文标题:mysql 航行日志(三): 大事务的作死操作影响

      本文链接:https://www.haomeiwen.com/subject/iajmvqtx.html