什么是 mvcc
mvcc,Multi-version Concurrency Control,即多版本并发控制。mvcc 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存
MVCC 在 mysql InnoDB 中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读
什么是当前读和快照读
1.当前读
raft 算法是一种简单易懂的共识算法,它依靠状态机和主从同步的方式,在各个节点之间实现数据的一致性
raft 的两个核心要点:
1.选取主节点
2.同步数据
raft 算法在选取主节点的过程,也是通过多个节点之间的投票竞争
为某个对象提供一个代理,以控制这个对象的访问;代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理
通过代理类,能有效控制对委托类对象的直接访问,也可以很好的隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性
静态代理要求委托类和代理类都实现同一个接口,代理对象的一个接口只服务于一种类型的对象
静态代理中代理类在编译期就已经确定,而动态代理则是运行期间动态生成
静态代理的效率相对来说更高一些,但是代码冗余大,一旦需要修改接口,代理类和委托类都需要修改
动态代理依靠反射来生成代理类
事务是访问数据库的一个操作序列,数据库应用系统通过事务来完成对数据库的存取。事务的正确执行使得数据库从一个状态转换为另一个状态
事务有 ACID 的原则:
原子性(atomicity):即不可分割,事务要么全部被执行,要么全部不被执行,如果事务中所有的子事务全部提交成功,则所有的数据库操作都被提交,数据库状态会发生变化;如果有子事务失败,则其他子事务的数据库操作全部被回滚,数据库回到执行事务之前的状态,不回发生状态变化
一致性(consistency):事务的执行使数据库从一种正确状态转换为另一种正确状态
隔离性(isolation):在事务正常提交之前,不允许把该事务对数据库数据的任何改变提供给其他事务,即在事务正确提交之前,它可能的结果对其他事务不可见
持久性(durability):事务正确提交之后,其结果将永远保存在数据库中,即使在事务提交之后有了其他故障,事务的处理结果也会得到保存