PCTA考前辅导

目录

TiDB功能与特点

TiDB Server功能

TiDB Server模块 

TiDB Server GC机制

TiDB Server缓存 

TiKV RocksDB 

TiKV RocksDB读写

TiKV MVCC

TiKV读写

TiKV Coprocessor

PD TSO

PD label

数据读取必须步骤

Online DDL

满足HTAP的场景

TiDB数据库的MPP功能特性


TiDB功能与特点

正确

具有同时支持OLTP与OLAP业务的能力(即支持HTAP) 

能够同时存储一份数据的行存版本(TiKV)和列存版本(TiFlash),并保证一致性读取 

不正确 

TiDB数据库需要通过数据复制的方式(搭建从库)才能保证数据的高可用性

只有在云原生模式下,TiDB 数据库能够实现水平扩容或者缩容

TiDB Server功能

正确

TiDB Server在开始执行SQL语句时,会从PD节点获取当前的TSO

不正确 

TiDB Server负责SQL的解析和编译,而PD负责(TiDB Server负责在关系型数把和KV存储间相互转换

TiKV的元数据,在数据库启动后会全部载入到TiDB Server的缓存中,加快查询效率

即使TiDB有information schema提供“非持久化”的对表元数据的访问和TiKV Client提供最近使用过的region数据【region cache】,但也不可能将其全部载入到TiDB Server缓存

TiDB Server的缓存中除了有表的元数据外还会存储Online DDL的job 队列(由TiKV负责存储

TiDB Server模块 

正确

Executor模块负责执行SQL执行计划

不正确 

PD Client模块只是负责TiDB Server向PD请求TSO,并接受返回的TSO(PD Client) 

PD不仅负责TiDB Server向PD请求并接受TSO,还具有批处理功能为多个事务或SQL分配TSO 

TiKV Client模块只负责执行Coprocessor request,比如,过滤,聚合或列投影等等,点查操作由KV模块直接发给TiKV

1.TiKV Client还负责缓存和提供TiKV region的元数据【region cache】,还负责与TiKV进行交互

2.必须通过TiKV Client与TiKV进行交互 

DistSQL模块负责将包含JOIN,SUBQUERY等复杂算子和涉及很多的表的SQL抽象为只涉及到单个表数据的多个操作,并将这些操作直接发给TiKV(必须通过TiKV Client与TiKV进行交互

TiDB Server将关系型数据(含有主键,并希望key中含有主键)转化为key-value数 

1.将主键(Primary Key)单独分离出来,与表的Table ID拼接,作为 key序列

2.主键(Primary Key)对应的单行数据作为value,形成key-value对

3.将这些 key-value存储在一个region中

4.如果region大小超过96 MB,则分裂为2个region大小范围96mb~144mb

TiDB Server GC机制

正确

GC会被自动触发,默认是10分钟一次

每次GC操作过后,修改时间在safe point之前的旧版本数据快照可能会被删除掉,之后的不会

不正确 

如果有多个TiDB Server,则这些TiDB Server可以并行来执行GC操作

只有作为GC leader的TiDB Server才能控制整个GC进行并行操作

GC life time是无法手工调整的,由系统根据数据库压力情况自动调整

可以通过GC_life_time参数设置保留多长时间的历史版本

TiDB Server缓存 

正确

复杂SQL的查询中间结果,往往会存储在TiDB Server的缓存中

通过tidb-mem-quota-query参数能够控制每个查询的缓存使用量

oom-action参数用来设置SQL语句超过内存使用阈值后的行为

不正确 

information schema和表的统计信息都是存储在TiDB Server的持久化存储中,启动后载入TiDBServer的缓存中TiDB Server不负责数据的“落地 ”,即持久化,而应在TiKV中

TiKV RocksDB 

正确

持久化机制,同时保证性能和安全性

性能随CPU数量线性提升

RocksDB使用LSM存储引擎

不正确 

支持key-value、jsonxml和图数据的存储仅支持key-value,图数据的存储

TiKV RocksDB读写

正确

写入操作(增删改)的数据最开始都是保存在内存中的

immutable MemTable不支持继续写入

Level 0层的SST文件是immutable MemTable的转储

Column Families共享WAL文件

(图a)  

不正确 

WAL的作用是为了加速磁盘的写入速度,将随机写变为顺序写

WAL预写日志是为了保证写入的原子性和持久性,即使系统宕机也能进行故障恢复 

读取时,内存中只读Block Cache,不会去读MemTable,目的是不会影响写的效率读取时,如果内存中没有找到的key一定不会出现在Level 0的SST文件中

1.读取时从Block Cache,至MemTable,在至immutable memTable和各级SST文件中

2.内存中未找到,不意味着磁盘中的各级SST文件中没有相应的数据

(图b) 

Column Families共享SST文件(Column Families共享WAL文件,而不是SST文件,如上图a

TiKV Raft日志复制 :Propose ->Append -> Replicate ->Committed -> Apply 

TiKV MVCC

正确

在TiDB 数据库中,一旦数据被修改并且事务被提交,新的读取(select操作并且tidb_snapshot="")则无法读取到修改之前的任何版本

不正确 

MVCC机制只存在于支持分布式事务的数据库中

MVCC多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段;而不是支持分布式事务的数据库中独有的

只有当隔离级别为snapshot isolation或者repeatable read时候,MVCC才会生效

MVCC只在read commited和repeatable read两个隔离级别下工作,与隔离级别snapshot isolation无关 

TiDB数据库中存储了数据从写入至当前的所有版本

由于垃圾回收GC的存在,生成的版本快照,每隔一段时间就会被清除,故不可能存储写入至当前的所有版本 

TiKV读写

正确

单条select语句读取到的任何数据都是已经从raft log日志中apply到 RocksDB KV中的

最开始从PD中读取到的路由信息中的leader所在TiKV节点,不一定是最终读取数据的节点 

TiKV有多种读取方式,ReadIndex Read,Lease Read均是从leader上读取数据;而Follower Read是从follower上读取数据

不正确 

follower read不可能比leader read先读到数据

大多数情况下,follower read往往比leader read先读到数据,因为leader要等待Replicate和Commited阶段

当集群中所有的follower节点都收到了这个日志( raft log ),我们才认为这个( raft log )是commited当大多数(超过一半的)follower将raft log持久化成功,才认为是commited

TiKV Coprocessor

正确

Coprocessor功能能够减少TiDB Server与TiKV节点间的网络开销 

表的统计信息收集可以借助Coprocessor由TiKV来完成

导入数据后的一致性校验可以借助Coprocessor由TiKV来完成

不正确 

将SQL的计算下推到TiKV节点,TiDB Server不再负责SQL的计算,从而降低CPU使用率

算子下推只是根据物理执行计划,将一部分计算下推至TiKV节点,并不意味着TiDB Server不负责任何计算

PD TSO

正确

TSO的组成为︰物理时钟+逻辑时钟

ps:TSO=物理时间 physical time + 逻辑时间 logical time (不能交换顺序) 

TSO的申请者是通过PD Client模块来向PD申请TSO的

SQL语句的解析和编译可以与TSO的获取异步执行

PD发出的 TSO只会递增不会递减

时间本身是不断累积的,即使身为leader的PD宕机,也只能等待下一个时间窗口

不正确 

当PD Client模块过于繁忙时,PD会直接将TSO返回给申请者

必须通过PD Client与PD的交互

PD label

正确

label的配置需要在PD和TiKV上进行操作

如果不使用label ,PD仅仅保证region的多个副本不会存储在同一个TiKV实例上

Label的作用之一是控制region副本的存放位置,比如 host,rack或者DC

不正确 

 Zone必须对应一个数据中心(DC),不能对应一个机柜

server.label与location-labels设置的层级对应,不意味着与现实中的设备相对应,如果愿意 Zone可以代表TiKV节点

数据读取必须步骤

正确

获取到当前SQL开始执行的TSO

进行PointGet检测点查的处理由TiDB Server的KV负责

不正确 

扫描RocksDB实例中所有SST文件

即使在内存中没找到数据,也不会扫描RocksDB中的所有SST,而是根据SST的储存层级至顶向下扫描直到找到最新的数据,详见TikV RocksDB读写-图b

扫描RocksDB实例中最新的WAL文件

WAL预写日志是为了保证写入的原子性和持久性并进行进行故障恢复,在查询中不会扫描描RocksDB实例中WAL文件

Online DDL

正确

Online DDL的job队列被持久化在TiKV中,不是TiDB Server中

详见TiDB Server功能关于DDL的内容

不正确 

Online DDL操作指的是DDL操作并不影响线上业务,对于性能监控也是无感知的

如果有多个TiDB Server,所有TiDB Server中的worker模块会并行处理添加索引的操作,加快进度

同一时刻只有一个身为owner的Tidb server处理DDL操作,但是index queue中的索引DDL和job queue中的job是可以被owner并行执行的

接收到DDL SQL的TiDB Server,会先启动自己的worker模块处理DDL,之后根据负载情况可能转移给owner角色的TiDB Server中的worker模块处理

当接收到DDL SQL时,TiDB Server会先尝试检测自己的worker模块是否是owner角色,若不是这只能放入jop queue中等待owner角色的TiDB Server中的worker模块处理

满足HTAP的场景

正确

同时支持OLTP和OLAP两种业务HTAP要求同时支持OLTP和OLAP

承担着实时数据写入的行存,并且能够实时将数据变化同步到列存储

不正确 

能够支持PB级数据分析(HTAP对高数据级别的数据分析没有要求

能够支持高并发的交易场景,且保证强一致性

HTAP不适用于高并发的场景,同时异步复制,无法保证强一致性

TiDB数据库的MPP功能特性

正确

聚合查询也可以通过MPP功能提速

TiFlash节点的内存承担了MPP中的计算功能

MPP功能对于大表连接有提高效率的作用

MPP架构实现在TiFlash上对于聚合和连接操作的加速且仅支持等值连接,但只限于TiFlash,而不能作用于TiKV 

不正确 

将行存数据转为列存由TiFlash的负责

  • 11
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值