数据库内核面试中我不会的问题(5)

本文列举了数据库内核面试中遇到的一些问题,包括乐观锁版本号控制、二阶段锁的优劣、进程/线程/协程调度开销、虚拟内存、缓存一致性实现、CPU中断类型以及线程池和分布式事务的解决方案。这些问题涵盖了数据库并发控制、系统调度、内存管理和并发理论等多个方面。
摘要由CSDN通过智能技术生成

新一波不会的题目。

但是我没有都给出答案是啥,一方面我也不知道,另一方面我实在精力有限,只能先记下来。

 

1.讲一下乐观锁版本号控制

使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一。
当我们提交更新的时候,判断数据库表对应记录 的当前版本信息与第一次取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新,否则认为是过期数据。

下一步应该会问我乐观锁版本号控制和悲观锁版本号控制的区别。

2.说一下二阶段锁的优劣

整个事务分为两个阶段,前一个阶段为加锁,后一个阶段为解锁。在加锁阶段,事务只能加锁,也可以操作数据,但不能解锁,直到事务释放第一个锁,就进入解锁阶段,此过程中事务只能解锁,也可以操作数据,不能再加锁。两阶段锁协议使得事务具有较高的并发度,因为解锁不必发生在事务结尾。它的不足是没有解决死锁的问题,因为它在加锁阶段没有顺序要求。如两个事务分别申请了A, B锁,接着又申请对方的锁,此时进入死锁状态。

3.进程/线程/协程 调度开销是什么级别的?几kb还是几十kb?时间呢?

进程切换分两步:

1.切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aiky哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值