2

我使用了 TPC-C 基准测试的开源 Java 实现(称为 TCJ - TPC-C via JDBC(由 MMatejka 去年创建))来比较 Oracle 和 2 OSS DBMS 的性能。

TPC-C 是专有领域的标准,我的问题是:

OSS数据库系统没有系统地进行性能测试的主要原因是什么?

4

1 回答 1

0

首先,我不确定您的问题是否非常适合 SO,因为它已接近征求意见,因此我的所有回答都是意见多于事实。这些年来我读过的大部分内容,但将很难再找到参考/证据。我不是 TPC 成员,但我确实进行了大量调查,试图在 TPC-H 套件下测试分布式列存储数据库。

基准

它们非常适合测试单个功能并进行比较,不幸的是,这并不像听起来那么容易。公司将花费大量精力来获得更好的结果,有时(我听说过)在源代码中实现特定功能以作为基准。关于基准测试结果的整体可靠性有很多讨论。此外,基准可能非常适合某些产品,但不适用于另一种产品。

您的示例使用 Jdbc,但并非每个数据库都有 jdbc,或者更糟糕的是,它可能只是为了启用该类应用程序而进行的“次要螺栓”。因此,当所有主要用途都将嵌入 sql 时,通过 jdbc 执行基准测试可能会不公平/糟糕地描述某些解决方案。

有一些争论认为基准会分散供应商的真正优先级,他们只为基准而付出努力并实现功能。

基准测试也很容易被误解,即使 TPC 是一套不同的基准测试,您也需要根据需要选择正确的基准测试(tpc-c 用于 oltp,tpc-h 用于 dss 等)

TPC

如果这对 tpc 不利,请原谅我,我是 pro tpc。

Tpc 定义了一组非常严格的测试要求。你必须按照这些来写信。对于 tpc-h,这是你必须做的一个例子

  1. 进行多次运行,一些并行,一些单个用户
  2. 完全使用提供的 sql,您根本不能更改它。如果您需要因为您的系统使用稍微不同的语法,但必须获得豁免。
  3. 您必须使用外部审计员。
  4. 您可能无法索引超出指定范围的 colmns 等。
  5. 对于 tpch,您必须以指定的方式进行编写(这消除了“单一作者”风格的数据库)

以上确保了阅读结果的人可以信任结果的完整性,这对企业买家来说非常有用。

Tpc 是一个非营利组织,任何人都可以加入。有费用,但这不是主要障碍,除了 OSS。如果您认为自己可以取得非常好的结果,或者您需要公布的结果来竞标政府合同等,您实际上只会支付这笔费用。

我看到 tpc for oss 的最大问题是它严重偏向于关系型供应商,很少有 oss 解决方案能够满足其产品的准入标准,或者如果它们满足,它们可能无法在每次测试中表现得足够好。做基准测试也可能会分散一些团队的注意力。

tpc的替代品

当然,tpc 的替代品是存在的,但据我所知,目前还没有一个真正获得牵引力。主要供应商经常规定您不能对他们的产品进行基准测试并发布结果。因此,任何新的基准都需要在政治上精明才能让他们参与进来。我同意供应商的立场,我讨厌有人错误地实施基准测试并糟糕地报告我的产品。

自 tpc 开始以来,数据库格局已经发生了很大变化,但许多“打赌你的企业”应用程序仍然运行在“经典”数据库上,因此它们仍然占有一席之地。然而,随着 nosql 等的兴起,有一个新的基准测试的地方,但真正的问题是要测量什么 - 甚至选择 xyz 像 '%kitten%'。或 xyz 之类的 'kitten%'。将对不同的解决方案产生巨大的影响。如果你解决了这个问题,你允许使用哪些通用接口(odbc、jdbc、http/ajax、嵌入式 sql 等)这些接口中的每一个都会极大地影响性能。实际模型怎么样,例如关系模型与最终一致性模型的 ACID?使用专门设计的硬件的硬件/软件解决方案呢?

每个数据库都针对不同的需求进行了设计权衡,并且基准测试试图平衡竞争环境,这只有在您有共同点或报告许多不同的指标时才真正可能。

尝试创建替代方案的问题之一是“谁来买单”?您需要就要执行的测试类型达成共识,然后您需要审核结果以使它们有意义。这都是要花钱的。

于 2013-06-22T21:47:06.373 回答