Overview
crdb内部分为五层架构.
- SQL Layer: 负责SQL的语法解析,计划的生成与执行。
- Transaction Layer: 负责实现分布式事务,提供SI和SSI两种隔离级别。
- Distribution Layer: 实现全局排序的map,负责数据的分布规则。
- Replication Layer: 通过raft实现数据副本的强一致性。
- Storage Layer: 使用RocksDB作为底层存储,包括raft log以及user data的存储。
天桥扛把子
crdb内部分为五层架构.
Processlist是DBA排查问题的主要线索,而state就是processlist的心脏指标。
|
|
针对memory/sql/TABLE
进行举例。
首先从all_server_memory
找到对应的NAME名称"TABLE",
|
|
正常所说的snapshot isolation只对冲突写进行约束,由于会有write skew一些问题,到不了serialization级别。
DBMS的本质是事务,缺少事务支持的只能成为data stores
,比如hbase,bigtable等。Google的bigtable缺少跨行事务,导致应用开发负担很大,因此percolator系统在bigtable的基础上实现了分布式事务。
由于crdb不兼容benchmarksql,只能使用crdb官方的tpcc测试程序loadgen进行测试。
|
|
针对100warehouse进行不同并发的测试,测试程序和pg在一台机器上。
|
|
两种方式导入100warehouse数据到crdbv1.1.0:
pg_dump
导出copy语句,crdb执行copy语句数据可以通过csv或者insert语句或者pg_dump的COPY语句导入到crdb,数据导入后,
执行如下命令进行测试:
|
|