-
MVCC和undolog?
- MVCC:
- 依赖3个主要组件:
- 隐藏字段,trx_id和rollback_ptr
- trx_id记录当前操作这行数据的事务id
- rollback_ptr指向这行数据的上一个版本,依次连接,形成一个版本链
- undolog
- 记录着行数据的多个版本,依次相连
- readView
- readView定义了事务中能读取的数据的范围,包含几个字段
- 最小活跃事务id(up_limit_id)
- 最大活跃事务id(low_limit_id)
- 创建者事务id(createor_trx_id)
- 活跃事务列表(m_ids)
- 规则:
id < up_limit_id可见
id >= low_limit_id不可见
id = creator_trx_id可见
id in m_ids不可见,未提交
- readView定义了事务中能读取的数据的范围,包含几个字段
- 隐藏字段,trx_id和rollback_ptr
- 依赖3个主要组件:
- undolog:
- undolog里面存的是什么:
- 数据旧值
- 操作这条数据的事务id
- 数据所在位置,表明,行号,页号
- 操作类型,update还是insert
- 元数据,锁信息,时间戳
- undolog里面存的是什么:
- MVCC:
-
undolog什么时候存数据?
- 在事务内部进行写操作的时候不断存数据
-
undolog数据格式?
- 事务id
- 表id
- 行号
- 旧值
- 操作类型
- 锁信息,时间戳等
-
4种隔离级别?4种隔离级别怎么保证的,什么时候加锁,加的什么锁?
- 4种隔离级别:
- 读未提交
- 不加锁
- 读已提交
- 加锁和MVCC
- 加锁的话,修改操作上排它锁,直到事务回滚或者提交释放锁,读操作不上锁。
- MVCC的话,每次读取数据都生成一个readView
- 可重复读
- 加锁和MVCC
- 加锁,修改操作上排它锁,直到事务回滚或者提交释放锁,读操作不上锁
- MVCC控制读操作,在事务中第一次读取时生成一个readView,以后都沿用
- 串行化
- 使用范围锁和MVCC防止幻读
- 对修改的行上排它锁,对读取的行上范围锁,直到事务提交或回滚
- 读取操作使用MVCC机制,在第一次读取时生成readView,之后沿用
- 读未提交
- 4种隔离级别:
-
Redis实现延迟队列?
- 使用redis的keyspace notification
- 在redis配置文件中启用keyspace notification
- 设置延迟任务时set key ttl value key就是延时任务名,value就是延迟任务的具体信息,可以作为延迟任务的参数
- 利用redis的pub/sub机制
- 在配置类中设置当前订阅的topic,同时指定处理消息的类和方法
- 发送延时队列消息,只需要往对应的的topic中发送消息即可
- 使用redis的keyspace notification
-
RabbitMQ实现延迟队列?
- RabbitMQ的延时队列借助死信队列来实现,需要将一个业务队列绑定一个死信交换机,死信交换机绑定一个私信队列来实现
- 使用的话,在配置类里设置好对应的队列,交换机绑定关系,以及队列与死信交换机的绑定关系
- 只需要发送时将消息发送到业务队列,并设置ttl,当其在业务队列中未被消费,且达到ttl时,将会被转发到死信交换机,并路由到死信队列,延时任务的逻辑只需要监听这个死信交换机,利用@RabbitListener,里面写对应的队列名,完成延时队列的延时任务
- 其相较于redis的一个最大的优势是,redis一个项目下只能监听一个topic,而rabbitmq可以监听多个死信队列对应多个延时任务
-
Java中的八大原子操作?
- AtomicInteger
- AtomicLong
- AtomicReference
- AtomicBoolean
- AtomicLongArray
- AtomicReferenceArray
- AtomicStampedReference
-
Java中有序性实现?
- 通过volatile关键字来实现,volatile通过内存屏障来实现指令有序性,禁用指令重排序。
- 内存屏障包括读写屏障
- 对于volatile修饰的变量,对于写操作,禁止其他上面的读写操作重排序到这个写操作后面
- 对于读操作,禁止下面的读写操作重排序到这个读操作之前
- 还有通过互斥锁来实现
- 确保一段逻辑是原子性的,不会交替执行其他线程来对共享变量进行修改
- 还可以通过join操作来实现
- 底层实现就是让调用线程进入wait状态,等join的线程执行完后再去唤醒。
20240801面经背诵
最新推荐文章于 2024-09-15 09:47:04 发布