为什么更新父表主键或删除父表行时可能被子表外键检查阻塞,涉及哪些锁?
为什么更新父表主键或删除父表行时可能被子表外键检查阻塞,涉及哪些锁? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 外键 锁 阻塞 KEY SHARE的工作方式、判断依据、项目边界和常见误区。
数据库面试题第 3 页,显示第 101–134 题,共找到 134 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
为什么更新父表主键或删除父表行时可能被子表外键检查阻塞,涉及哪些锁? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 外键 锁 阻塞 KEY SHARE的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中每条单语句自动成事务与显式 BEGIN 多语句事务在错误处理上有何差别? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 自动提交 显式事务 错误处理的工作方式、判断依据、项目边界和常见误区。
面对一个转账类业务,如何在 Read Committed、Repeatable Read、Serializable 之间做隔离级别选型? 本文先给出可直接复述的结论,再用最小代码说明转账业务隔离级别选型的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的 ACCESS SHARE、ROW EXCLUSIVE、ACCESS EXCLUSIVE 这些表锁模式哪些互相冲突? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 锁模式 冲突矩阵 ACCESS EXCLUSIVE的工作方式、判断依据、项目边界和常见误区。
设计多行更新事务时,为什么建议按固定顺序(如主键升序)加锁,如何落地? 本文先给出可直接复述的结论,再用最小代码说明事务 加锁顺序 避免死锁 设计的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的 lock_timeout 与 statement_timeout 分别在哪一阶段中断语句,如何配合使用? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL lock_timeout statement_timeout 区别的工作方式、判断依据、项目边界和常见误区。
长事务对 PostgreSQL 有哪些具体危害,为什么会让 VACUUM 无法回收死元组? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 长事务 危害 VACUUM 膨胀的工作方式、判断依据、项目边界和常见误区。
并发下的丢失更新是怎么产生的,数据库有哪些手段可以阻止它? 本文先给出可直接复述的结论,再用最小代码说明丢失更新 lost update 并发 解决方案的工作方式、判断依据、项目边界和常见误区。
MVCC 带来的表膨胀是怎么形成的,PostgreSQL 靠什么机制回收旧版本? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL MVCC 表膨胀 VACUUM的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 判断一个行版本对某事务是否可见时依据哪些信息? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 行版本可见性 xmin xmax的工作方式、判断依据、项目边界和常见误区。
不可重复读和幻读的区别是什么,分别需要哪个隔离级别才能避免? 本文先给出可直接复述的结论,再用最小代码说明不可重复读 幻读 区别 隔离级别的工作方式、判断依据、项目边界和常见误区。
乐观锁与悲观锁在数据库并发控制中的区别是什么,分别适合什么冲突频率的场景? 本文先给出可直接复述的结论,再用最小代码说明乐观锁 悲观锁 区别 适用场景的工作方式、判断依据、项目边界和常见误区。
线上出现大量慢查询怀疑锁等待时,如何用 pg_locks 与 pg_stat_activity 定位是谁在阻塞谁? 本文先给出可直接复述的结论,再用最小代码说明pg_locks pg_stat_activity 锁等待 排查的工作方式、判断依据、项目边界和常见误区。
Read Committed 下单条 SQL 语句执行期间,其他事务提交的修改对该语句可见吗? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Read Committed 语句级快照 可见性的工作方式、判断依据、项目边界和常见误区。
Read Committed 下 UPDATE 等待另一事务释放行锁后,为什么用最新版本重新评估 WHERE 条件? 本文先给出可直接复述的结论,再用最小代码说明Read Committed 下 UPDATE 锁等待后重评估条件的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中 Read Committed 与 Repeatable Read 在同一事务多次读同一行时结果有何不同? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Read Committed Repeatable Read 区别的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的只读可延迟事务(READ ONLY DEFERRABLE)在 Serializable 下能带来什么优化? 本文先给出可直接复述的结论,再用最小代码说明READ ONLY DEFERRABLE 只读可延迟事务的工作方式、判断依据、项目边界和常见误区。
设计数据库事务重试策略时,重试次数上限与退避间隔应该如何取舍? 本文先给出可直接复述的结论,再用最小代码说明事务重试 退避策略 指数退避的工作方式、判断依据、项目边界和常见误区。
为什么事务重试必须要求业务操作幂等,网络中断导致提交结果未知时会发生什么? 本文先给出可直接复述的结论,再用最小代码说明事务重试 幂等性 重复提交的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中行级锁和表级锁分别在什么操作下产生,如何互相影响? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 行锁 表锁 锁级别的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 保存点(SAVEPOINT)允许事务内部分回滚,它与重试整条语句的方案有何不同? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL SAVEPOINT 部分回滚 子事务的工作方式、判断依据、项目边界和常见误区。
高频冲突场景下用 SAVEPOINT 包住语句逐条处理,为什么会带来子事务性能问题? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 保存点 子事务 性能 开销的工作方式、判断依据、项目边界和常见误区。
PostgreSQL Serializable 隔离级别下事务可能因为什么失败,应用必须做什么? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL Serializable 序列化失败 40001 重试的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中 SET TRANSACTION 与 SET SESSION CHARACTERISTICS 的作用范围有何不同? 本文先给出可直接复述的结论,再用最小代码说明SET TRANSACTION 与会话级隔离级别区别的工作方式、判断依据、项目边界和常见误区。
用 SELECT FOR UPDATE SKIP LOCKED 实现数据库任务队列时如何保证同一任务不被两个 worker 重复领取? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL SKIP LOCKED 任务队列 实现的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 导出事务快照(pg_export_snapshot)解决的是什么一致性问题? 本文先给出可直接复述的结论,再用最小代码说明pg_export_snapshot 导出一致性快照的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的 snapshot_too_old 参数为什么会让长事务报错,解决了什么运维问题? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL snapshot_too_old 长事务的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 的事务 ID 回卷问题是怎么产生的,为什么要求定期 VACUUM FREEZE? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 事务ID 回卷 wraparound FREEZE的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 预备事务(PREPARE TRANSACTION)解决什么问题,为什么残留预备事务很危险? 本文先给出可直接复述的结论,再用最小代码说明PREPARE TRANSACTION 两阶段提交与残留风险的工作方式、判断依据、项目边界和常见误区。
高并发计数器更新同一行成为热点时,为什么性能会急剧下降,有哪些缓解手段? 本文先给出可直接复述的结论,再用最小代码说明热点行 更新 行锁 竞争 计数器的工作方式、判断依据、项目边界和常见误区。
INSERT ON CONFLICT DO UPDATE 相比先查再插为什么能避免并发下的重复键错误? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL upsert ON CONFLICT 并发安全的工作方式、判断依据、项目边界和常见误区。
用版本号列实现乐观并发控制时,UPDATE 语句应如何写,更新行数为 0 意味着什么? 本文先给出可直接复述的结论,再用最小代码说明乐观锁 版本号 UPDATE WHERE version的工作方式、判断依据、项目边界和常见误区。
什么是写偏序(write skew),为什么 Repeatable Read 下仍可能发生? 本文先给出可直接复述的结论,再用最小代码说明写偏序 write skew Repeatable Read的工作方式、判断依据、项目边界和常见误区。
PostgreSQL 中两个事务并发更新同一行时,后到的事务会经历什么过程? 本文先给出可直接复述的结论,再用最小代码说明PostgreSQL 写写冲突 行锁 等待的工作方式、判断依据、项目边界和常见误区。