新一波不会的题目。
但是我没有都给出答案是啥,一方面我也不知道,另一方面我实在精力有限,只能先记下来。
1.讲一下乐观锁版本号控制
使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一。
当我们提交更新的时候,判断数据库表对应记录 的当前版本信息与第一次取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新,否则认为是过期数据。
下一步应该会问我乐观锁版本号控制和悲观锁版本号控制的区别。
2.说一下二阶段锁的优劣
整个事务分为两个阶段,前一个阶段为加锁,后一个阶段为解锁。在加锁阶段,事务只能加锁,也可以操作数据,但不能解锁,直到事务释放第一个锁,就进入解锁阶段,此过程中事务只能解锁,也可以操作数据,不能再加锁。两阶段锁协议使得事务具有较高的并发度,因为解锁不必发生在事务结尾。它的不足是没有解决死锁的问题,因为它在加锁阶段没有顺序要求。如两个事务分别申请了A, B锁,接着又申请对方的锁,此时进入死锁状态。
3.进程/线程/协程 调度开销是什么级别的?几kb还是几十kb?时间呢?
进程切换分两步:
1.切换

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

被折叠的 条评论
为什么被折叠?



