ITPub博客

首页 > 数据库 > 数据库开发技术 > 【数据库设计与实现】第六章:并发控制

【数据库设计与实现】第六章:并发控制

原创 数据库开发技术 作者:joshua81 时间:2020-10-08 19:32:35 0 删除 编辑

6 并发控制

6.1 设计原则

    事务的并发控制首先要保证并发执行的正确性,满足可序列化要求,即并发执行的结果和某种串行执行的结果是一致的,然后在满足正确性的前提下尽可能地获得最高的并发度。当然在某些业务场景下,可以适当牺牲部分正确性(即接受某些异常),从而获得更高的并发性能。并发控制大体分为悲观算法和乐观算法,为了尽可能深入了解各种算法的优缺点,本章在Oracle、MySQL的基础上增加了PostgreSQL、CockroachDB和VoltDB。Oracle、MySQL、PostgreSQL采用了悲观控制策略,同时通过MVCC进一步提高并发性,而PostgreSQL在此基础上实现了Serializable Snapshot Isolation。CockroachDB完全采用了乐观控制,是乐观控制的开源和商业化实现。VoltDB在并发控制策略上做了突破新创新,舍弃了悲观控制和乐观控制,采用了全串行化的执行策略。在设计和实现并发控制时,有如下节点需要考虑:

  • 并发控制算法的用户友好度和正确性,与ANSI SQL隔离级别的匹配度;

  • 并发控制算法的效率;

  • 并发控制算法的死锁策略;

6.2 Oracle设计原理

    6.2.1 事务

    6.2.2 记录锁

    6.2.3 表锁

    6.2.4 Enqueue

    6.2.5 死锁

6.3 MySQL设计原理

    6.3.1 事务

    6.3.2 记录锁

    6.3.3 表锁

    6.3.4 聚集索引和辅助索引

    6.3.5 隐式锁与显式锁

    6.3.6 记录锁的维护

    6.3.7 死锁

6.4 PostgreSQL设计原理

    6.4.1 事务

    6.4.2 记录锁

    6.4.3 表锁与记录锁

    6.4.4 死锁

    6.4.5 SIREAD锁和RW-Conflicts

6.5 CockroachDB设计原理

    6.5.1 设计思路

    6.5.2 可序列化图

    6.5.3 WR冲突与MVCC

    6.5.4 RW冲突与时间戳缓存

    6.5.5 WW冲突与只写最新版本

    6.5.6 严格调度与可恢复性

6.6 VoltDB设计原理

    6.6.1 传统数据库的成本

    6.6.2 并发控制

    6.6.3 事务

6.7 总结与分析

附件:博客布局不利于展示表格等内容,本章节详细内容见附件

数据库设计与实现 (第六章).pdf


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69912723/viewspace-2725664/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-10

  • 博文量
    12
  • 访问量
    6090