数据库和存储领域一些容易混淆的概念和术语

Keywords: TPS/QPS, tpmC/tpm, Raft/Paxos, Distributed Transaction, Write Amplification, OLAP/HTAP, Commodity Hardware/High-end Storage

  1. TPS/QPS

    TPS = Transactions Per Second QPS = Queries Per Second 互联网行业常常指的是每秒钟处理的语句事务(增删改)或查询的个数,而且增删改和查询语句大多 比较简单。如果是测试 MySQL,很多时候指的的是 sysbench 测试的结果,当然不同版本的 sysbench 也不完全一样。 经典数据库常常指的是 TPC-C、TPC-H 等标准测试集中的事务数或查询数,事务往往是比较复杂的 多语句事务,查询则更为复杂。更规范的术语是 tpmC 等标准定义的指标。 此外,互联网行业中指的往往不是单个数据库实例或单机的处理能力,而是整个 SHARD 集群的处理 能力。 最后,不同组织或个人、不同测试方法下的具体事务或查询也很不一样。 因此,要对比不同的 TPS 或 QPS 数据时一定要先搞清楚它们的具体含义,尽可能换算成单实例的 能力进行对比。否则就是 apple to orange 了。

  2. tpmC/tpm

    tpmC = Transactions Per Minute defined in TPC-C tpm = Transactions Per Minute TPC-C 标准对事务的组成和比例等有非常严格的定义。但是很多网上的 TPC-C 测试实际上都做过 不同程度的简化或修改,因此测试出来的指标也不能直接用于对比。tpmC 是 TPC-C 标准中计算 每分钟处理的 New-order 事务的指标,该类型的事务大约占比 45%;而且事务之间有个时间间隔, 作为 thinking time,很多简化的测试工具是没有这个等待时间的。此外,TPC-C 的表还有主键、 外键等约束,对检查点的个数、系统运行时间、存储容量等都有细致的规定。 tpm 一般代表每分钟处理的事务数,在不同的测试场景中很可能具有不同的含义。

  3. Raft/Paxos

    Paxos 论文并没有给出具体的工程实现细节,而 Raft 论文则给出了很多细节。因此,不排除号称 Paxos 的实现,实际上也借鉴了很多 Raft 的思想甚至概念。如果考虑带 Leader 和租约的场景 (这也是它们被用到数据库中来写事务日志的典型场景),它们最典型的一个差别在于是否限制日志 的顺序性,即是否允许在写日志时,某些日志副本中是否可以有逻辑上的“空洞”。

  4. 分布式事务

    完全依赖数据库实现的分布式事务在业务中并不常见,但是分布式事务从业务角度看却非常普遍。 业务涉及的分布式事务常常不仅是单一的一个数据库实例,而是很多个不同的数据库实例,这些实例 还往往不是同一种数据库产品;有时还会有消息队列等非数据库类的参与者。因此经典数据库中发展 出了很多事务处理中间件产品,数据库、队列等都被称为资源管理器。 很多具体的业务在开发中也发展出了各种处理分布式事务的中间层,而不是依靠数据库系统。但是如果 一个数据库产品设计时就不是一个单机系统,分布式事务也应该是它的必选特性。 分布式事务不可避免的会带来额外的延迟等代价,因此追求高吞吐、低延迟的业务中要尽量避免分布式 事务。

  5. 写放大

    数据库因为要写事务日志来保证事务的持久化,就必然存在写放大。传统的磁盘数据库因为是页面结构, 在随机写入时会因为改动一个字段而读入整个页面,也会在刷出时写出整个页面。但数据库不会傻到每 更新一个页面就立即刷出,因此数据页面造成的实际的写放大并不一定很大。MySQL 因为要写 double write buffer 以及 binlog,确实会有更多的 IO 产生。RocksDB 等 LSM tree 结构的存储引擎 虽然在写入数据时减少了 IO,但是查询以及后台的合并和压缩等也会产生大量额外的 IO。因此,衡量 写放大最好的办法还是拿具体的场景去验证。

  6. OLAP/HTAP

    OLAP 也是一个被广泛使用但是又有不同含义的词语。一个系统可能只支持聚集函数和初步的 JOIN 就号称支持 OLAP 了。在评价一个系统的实际能力时需要列出具体的每个特性去做分析。类似的, HTAP 这个词出现得相对更晚,不同产品对它的定义差别更大。如果可能的话,采用业界的标准测试 集合 TPC-H、TPC-DS 等去对比会客观一些。

  7. 廉价 PC/高端存储

    GFS 等论文提到的 inexpensive commodity hardware 确实比较便宜,特别是相对于小型机而言。 PC 是 PC 服务器,而不是家用 PC。但是,不同公司和不同业务采用的机型不同,有些高配的服务器 并不那么廉价。 高端存储通常指的是大型机上的专用存储,互联网公司几乎不会采用。多数采用高配 PC 服务器配合 “高端存储”使用的数据库场景中,用的实际是中低端的外置存储,严格来说,它既不高端也不昂贵。

[ DBMS ]
Written on January 18, 2019