![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
菜鸟不想菜
这个作者很懒,什么都没留下…
展开
-
MySQL事务隔离级别+四大特性+脏读幻读不可重复读更新丢失
四大特性我们都知道,提到事务,就不能不提事务的四大特性,ACID,即原子性,一致性,隔离性,持久性。原子性(Atom):事务的一组操作是原子的不可再分割的,这组操作要么同时完成要么同时不完成。一致性(Consistency): 事务在执行前后数据的完整性保持不变。数据库在某个状态下符合所有的完整性约束的状态叫做数据库具有完整性。在解散一个部门时应该同时处理员工表中的员工保证这个事务结束后,仍然保证所有的员工能找到对应的部门,满足外键约束。隔离性(Isolation):当多个事务同时操作一个数据库时原创 2020-10-06 00:34:08 · 1313 阅读 · 0 评论 -
MySQL两阶段提交(Redo.log binlog.log)
两阶段提交 MySQL中经常说的WAL技术,WAL的全称是Write- Ahead Logging,它的关键点就是先写日志,再写磁盘。即当有一条记录需要更新时,InnoDB引擎就会先把记录写到redo log里,并更新内存,这个时候更新就完成了。因为如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程IO成本、查找成本都很高。在执行一条update语句时候,通过连接器、分析器、优化器之后,调用操作引擎,将新行写入内存,写入redo log,状态为prepare-&原创 2020-10-06 00:31:56 · 2730 阅读 · 0 评论 -
MySQL两阶段加锁
两阶段加锁参考文章:MySql-两阶段加锁协议2PL,两阶段加锁协议:主要用于单机事务中的一致性与隔离性。2PC,两阶段提交协议:主要用于分布式事务。什么时候会加锁 在对记录更新操作或者(select for update、lock in share model)时,会对记录加锁(有共享锁、排它锁、意向锁、gap锁、nextkey锁等等),本文为了简单考虑,不考虑锁的种类。什么是两阶段加锁在一个事务里面,分为加锁(lock)阶段和解锁(unlock)阶段,也即所有的lock操作都在unl原创 2020-10-06 00:30:58 · 1068 阅读 · 1 评论 -
MySQL主从复制(binlog、relay.log)
复制步骤:在主库上把数据更改记录到二进制日志(Binary Log)中。从库将主库上的日志复制到自己的中继日志(Relay Log)中。从库读取中继日志的事件,将其重放到从库数据之上。详细过程: 第一步是在主库上记录二进制日志。在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中。MySQL会按事务提交的顺序而非每条语句执行的顺序来记录二进制日志。在记录二进制日志后,主库会告诉存储引擎可以提交事务了。 下一步,从库将主库的二进制日志复制到其本地的中继日志中。首先,原创 2020-10-06 00:30:10 · 436 阅读 · 1 评论