Architecture of a Database System阅读

第1章 概述

  • DBMS处理客户端sql请求的一般流程:
    • 客户端调用API与DBMS的客户通信管理器建立网络连接。不管是"two-tier",还是"three-tier","four-tier",DBMS负责对多种协议的管理器基本运行机制是一致的:为DBMS的客户端建立连接地址,对于客户端的sql语句做出回应,在适当的时候返回数据以及控制信息
    • DBMS收到客户端的一个请求,DBMS为其分配一个计算线程,DBMS需要确保该线程的数据以及控制输出是通过通信管理器与客户端连接。这些工作交由进程管理器来完成,这一部分DBMS做的是准入控制?也即系统是否应该立即处理该查村,或是等待系统有足够的资源是再处理该查询?
    • 关系查询处理器处理查询。这个模块检查用户是否有权查询,然后将用户的sql查询语句解析为中间查询计划
    • DBMS的存储管理器,在生成了physical plan之后,就可以底层去通过(call)去对物理磁盘中的数据执行实际的操作了,存储管理器在磁盘中取得数据后,会去执行一个展开栈的过程?
    • 存储管理器将数据数据传到关系查询处理器,关系查询处理器将数据以tuple的方式返回给客户通信管理器
    • TiDB架构

第2章 进程模型

  • 描述的是,一个客户端连接建立之后,为其分配怎样的进程模型每有一个客户端建立连接,都会有一个DBMS worker
    • Process per DBMS worker
    • Thread Per DBMS worker,用一个大的进程中很多的线程来负责所有请求连接的工作
      由于W/M/L中实现的线程差别较大,所以该模型移植性较差
    • thread/process pool这种模型利用率高
  • 进程管理模块还具有addmission control的功能,高并发请求会导致负载上的极大压力。有两种准入控制,1.用户请求到达时的准入控制2.执行查询计划的时候进行准入控制,根据三种信息来执行控制:I/O,CPU负载,内存使用

并行架构(或者是说分布式架构?)

  • shared memory
    • UMA(均衡访问模型),所有的处理器核心共享相同的内存地址空间,但是总线的带宽会称为瓶颈
    • NUMA(非均衡访问模型),QPI的延迟要远远高于IMC Bus,NUMA架构中,访问本地的内存很快,但是访问远程的内存慢,相较于shared-nothing,更容易编程,相较于shared-memory,有更大规模的处理器
  • shared-disk
  • shared-nothing,该模型将数据水平分区,那么应该hash区分还是水平区分;如果一个节点经常被读写,那么需要做负载均衡,打散热点。优点是,可扩展性好,成本低,之前的架构需要特有的大型机器

Relational Query Processor

Query Parsing and Authorization

Query Rewrite

Query Optimizer

  • query plan就是非常具体的知道DBMS应该执行怎样的逻辑
  • 预处理是一种查询优化,
  • 缓存也是一种查询优化

Query Executor

  • 查询器的常用模型是迭代器模型,它只需要单一的DBMS线程来执行一个完整的查询图
  • 迭代器预分配了固定数量的元组表述符,通过迭代器的输入输出传递,被引用的真实元组存储装载内存的什么地方 ??

数据仓库

  • 数据仓库的出现原因是,需要分析历史数据,通过ETL(Extract, Transform, Load)系统分析数据列存适合OLAP

Storage Management

  • DBMS有两种与磁盘交互的方式
    • 直接与底层面向磁盘的块模式设备驱动程序进行交互
    • DBMS与标准的OS文件系统设施交互
  • 空间控制,是指控制数据存放在磁盘什么位置将数据直接存储在原始的磁盘设备中,不同过OS的文件系统
  • 时间控制:缓存,是指数据是么时候被写入磁盘OS的缓存机制并不适合DBMS
  • 缓存管理,也就是buffer poolLRU-2方案

Transctions:Concurrency, Control and Recovery

  • 事务存储器需要用到4个模块,用于并发控制的Lock Manager;用于错误恢复的Log Manager;用于分离I/O的Buffer Pool;在底层磁盘上管理数据的Access Methods(DBMS底层存储的索引可以是hash表,可以是B+树,或者LSM tree)

并发控制

  • ss2PL
  • MVCC
  • OCC

事务隔离级别

日志管理模块

  • 用于:保持已提交的事务的持久性;协助终止事务的回滚确保原子性;在系统崩溃或者非正常关机时使系统恢复。raft-log用于解决分布式的日志的恢复管理
  • 单机数据库的日志恢复机制就是WAL协议这里存在着一种权衡,也就是事务恢复希望很快,但是又要保障事务提交,回滚和中止要高效(也就是希望读写日志快一点)
  • 一些提高WAL性能的方法

公共组件

参考

论文地址
[PingCAP的视频](https://www.bilibili.com/video/BV1tE411B7Q2?from=search&seid=17121324929538604309&spm_id_from=333.337.0.0

posted @ 2022-04-20 08:10  抿了抿嘴丶  阅读(54)  评论(0编辑  收藏  举报