Skip to content

Latest commit

 

History

History
115 lines (60 loc) · 4.68 KB

2021-10-29-数据库事务.md

File metadata and controls

115 lines (60 loc) · 4.68 KB

2021.10.29 分享纪要

  • 分享人:时昕
  • 关键词:事务、ACID、分布式事务、2PC、共识算法
  • Keywords: Transaction, ACID, Distributed Transaction, 2PC, Consensus Algorithm
  • 分享PPT: 2021-10-29-数据库事务

分享内容

问题描述

本次分享对比单机场景和分布式场景下事务的异同,对事务ACID基本的实现方法和优化方向进行分析。

解决思路

一、单机事务

  1. 原子性与持久性

    • 使用WAL日志,在宕机恢复时重做已提交事务的修改并撤销未提交事务所做的修改

      ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging. pdf

  2. 对并发控制协议的优化

    • 检测写写冲突 Snapshot Isolation:

      A Critique of ANSI SQL Isolation Levels. pdf

    • 检测DSG中是否存在环 Serializable Snapshot Isolation:

      Serializable Isolation for Snapshot Databases. pdf

    • 检测读写冲突 Write Snapshot Isolation:

      A critique of snapshot isolation. pdf

    • 悲观并发控制:2PL提前释放锁

      Releasing Locks As Early As You Can: Reducing Contention of Hotspots by Violating Two-Phase Locking. pdf

    • 协议组合使用:不同类型负载使用不同的并发控制协议

      Adaptive Optimistic Concurrency Control for Heterogeneous Workloads. pdf

    • 从协议带来的副作用入手:优化MVCC垃圾回收机制

      Scalable Garbage Collection for In-Memory MVCC Systems. pdf

  3. 采用新硬件

    • 基于NVM,对当前Buffer+WAL架构进行改进

      Write-behind logging. pdf

      Zen: a high-throughput log-free OLTP engine for non-volatile main memory. pdf

二、分布式事务

  1. 时戳问题

    • 使用全局时戳服务器:TiDB

      TiDB中的TSO. ref

    • 硬件支持:原子钟 Spanner

      Spanner: Google’s Globally-Distributed Database. pdf

    • 混合逻辑时钟:CockroachDB

      CockroachDB: The Resilient Geo-Distributed SQL Database. pdf

  2. 提交协议

    基本思路:使用两阶段提交协议(2PC),但网络通信开销大,事务延迟高

    • 异步提交:Prepare阶段后便返回事务执行结果,Commit阶段异步执行,降低一半的提交等待时间。 Carousel: Low-Latency Transaction Processing for Globally-Distributed Data. pdf

      TiDB Async Commit. ref

      CockroachDB Parallel Commits. ref

  3. 优化数据分布

    • 将经常访问的数据集中到一台server,减少分布式事务的数量

      Clay: Fine-Grained Adaptive Partitioning for General Database Schemas. pdf

  4. 确定性事务

    • 在事务执行前对事务进行排序,所有server按照全局序列执行,避免2PC。需要提前知道事务的读写集和。

      Calvin: Fast Distributed Transactions for Partitioned Database Systems. pdf

      Ocean vista: gossip-based visibility control for speedy geo-distributed transactions. pdf

  5. 从共识算法入手

    分布式场景下,各节点通过多副本保证可用性。而分布式数据库中,副本之前通常使用Paxos/Raft算法保证线性一致。

    • 数据库的正确性由并发控制算法保证,因此Raft不需要保证Raft Log的线性Commit和Apply。

      PolarFS: an ultra-low latency and failure resilient distributed file system for shared storage cloud database. pdf

  6. 基于新硬件

    • RDMA

      Chiller: Contention-centric Transaction Execution and Data Partitioning for Modern Networks. pdf

FAQ