8.22面经

事务的持久性:重做日志
原子性:undo log回滚日志
mvcc:rc和rr下提高并发读写
快照读和当前读
mvcc在rr下读事务开始后的第一个快照。rc下读行最新的快照数据。(就记这个算了)
事务ID递增,每一行数据都有对应事务id。
事务第一次快照读生成一致性视图,包括活跃的事务id数组、低水位高水位。

线程池拒绝策略:直接丢弃,丢弃队列最老任务,抛异常,由提交任务的线程直接执行。
五层协议模型
加载链接初始化
g1和cmsg1没有空间碎片,控制gc时间达到消除长时间gc停顿。拆分成多个region,大对象可以放多个region,region分新老年代。
还有区别就是初始标记-并发标记-重新标记-回收,其中回收阶段g1是对回收成本排序然后按照时间制定计划回收。
分代回收
redis分布式锁:
1、setnx(lockkey, 1) 如果返回 0,则说明占位失败;如果返回 1,则说明占位成功

2、expire() 命令对 lockkey 设置超时时间,为的是避免死锁问题。
BlockingQueue
like可能使用索引

mvcc javaguide

mysql在rr隔离级别下一定程度上解决了幻读问题。 由于innodb引擎下存在当前读(更新操作要当前读)和快照读(普通读)的概念。

在当前读的情况下,mysql通过配置可以采用记录锁(Record Lock)+间隙锁(Gap Lock),让其他插入或删除事务死锁,达到解决幻读问题。

在快照读的情况下,mysql如果不更新插入记录,那么由于是读取的旧版本记录,对于其他事务插入数据不可见,从而达到了解决幻读问题。但是如果当前事务更新记录(包括不可见的),会去读取最新版本内容,从而看到了其他事务插入的数据,产生幻读。
SessionA读,sessionb更新,sessionA更新,sessionA的预期结果与实际得到的结果不一致。(A更新时使用最新数据,更新完以后将版本修改为当前版本)
间隙锁
间隙锁用在rr下mvcc解决当前读的幻读问题,上锁后就不允许更改了,自然可重复读了。
间隙锁
rr下mvcc当前读的时候,会锁定一个范围,确保这个范围里面不被做任何更改。

当一个事务开启的时候,会向系统申请一个新事务id
此时,可能还有多个正在进行的其他事务没有提交,因此在瞬时时刻,是有多个活跃的未提交事务id
将这些未提交的事务id组成一个数组,数组里面最小的事务id记录为低水位,当前系统创建过的事务id的最大值+1记录为高水位
这个数组array 和 高水位,就组成了“一致性视图”。

重点在rr下只在事务开始时生成一致性视图,并且快照读只读这个视图。
rc下每次读取都生成一致性视图,读这个快照时考虑哪些是已经提交的事务,不在列表中或者事务id小于低水位是已提交的事务,这些事务id对应的记录版本号可见。其余不可见。
mvcc

time-wait开始的时间为tcp四次挥手中主动关闭连接方发送完最后一次挥手,也就是ACK=1的信号结束后,主动关闭连接方所处的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值