摘要: https://blog.csdn.net/qq_16047373 阅读全文
posted @ 2020-08-26 23:59 Zyh_S 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 什么是回表查询? InnoDB使用聚集索引,数据根据主索引存储在叶子节点上,辅助索引的data域存储主键。 myisam使用非聚集索引,即主索引(B+树)的叶子节点存储数据的地址(需要回表),myisam可以没有主键,数据也不是存储在B+主索引的叶子节点上的。 设有表: t(id PK, name 阅读全文
posted @ 2020-07-10 10:13 Zyh_S 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 2PC(两阶段提交) 阶段1 在阶段1中,协调者发起一个提议,分别问询各参与者发送事务预处理请求(可不可以执行任务) 阶段2 在阶段2中,协调者根据参与者的反馈,提交或中止事务,如果参与者全部同意则提交,只要有一个参与者不同意就中止。 缺点 同步阻塞问题。执行过程中,所有参与节点都是事务阻塞型的。当 阅读全文
posted @ 2020-07-07 16:48 Zyh_S 阅读(867) 评论(0) 推荐(0) 编辑
摘要: Record Lock:记录锁,单个行记录上的锁。Gap Lock:间隙锁,锁定一个范围,但不包括记录本身。Next-Key Lock:临键锁,锁定一个范围,并且锁定记录本身。对于行的查询,都是采用该方法,可以解决幻读的问题。 什么是幻读? 事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等 阅读全文
posted @ 2020-07-06 10:53 Zyh_S 阅读(2777) 评论(0) 推荐(0) 编辑
摘要: 首先Condition维护了一个AQS单向链表,当调用await()时将当前线程加入到链表中,然后调用signal()会从链表头部拿出一个节点放到ReenTranLock维护的双向链表中,去抢锁, 如果抢锁成功就执行,如果调用signalAll就是把所有的Condition链表节点都加入到ReenT 阅读全文
posted @ 2020-07-06 10:52 Zyh_S 阅读(292) 评论(0) 推荐(0) 编辑
摘要: binlog 恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。 在主复制服务器上记录所有将发送给从服务器的语句。redolog 记录的是新数据的备份。在事务提交前,只要将redolog持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化, 但是redolog已经持 阅读全文
posted @ 2020-07-06 10:51 Zyh_S 阅读(123) 评论(0) 推荐(0) 编辑
摘要: MySql InnoDB 的事务隔离级别 未提交读(Read uncommitted)A事务修改了数据,但尚未提交,B事务中的select会读到这些未被提交的数据(脏读)。幻读,不可重复读和脏读均允许。 已提交读(Read committed) 本事务读取到的是其他事务提交后的的数据。允许幻读和不可 阅读全文
posted @ 2020-07-06 10:49 Zyh_S 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 先删缓存再删数据库:在高并发的情况下会导致缓存击穿(缓存没有线程全部访问数据库造成压力过大)。当第一个线程进来删除缓存,第二个线程进来缓存没有查询数据库然后更新缓存,第一个线程更新数据库,造成脏读。先删数据库再删缓存:当一个线程进来更新数据库,另一个线程进来读取缓存,然后第一个线程更新缓存,造成脏读 阅读全文
posted @ 2020-07-06 10:48 Zyh_S 阅读(606) 评论(0) 推荐(0) 编辑
摘要: B-树与B+树相同点: 都是多路非二叉树 B-树与B+树都是平衡树B-树与B+树不同点: B-树每个节点即保存索引也保存数据B+树只有叶子节点保存数据 B+树增加了相邻接点的指向指针,可以大大增加区间访问性可使用在范围查询等 B-树每个节点索引和数据 在一起,区间查找代价大。原因: 平衡树层数少相对 阅读全文
posted @ 2020-07-06 10:47 Zyh_S 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。 阅读全文
posted @ 2020-07-06 10:46 Zyh_S 阅读(1552) 评论(0) 推荐(0) 编辑