我使用TPC-C基准测试的开源java实现(通过JDBC称为TCJ-TPC-C(去年由MMatejka创建))来比较Oracle和2 OSS DBMS的性能。
TPC-C是专有领域的标准,我的问题是:
OSS数据库系统没有系统地实施性能测试的主要原因是什么?
答案 0 :(得分:0)
首先,我不确定你的问题是否适合SO,因为它已经接近提出意见,所以我所有的答案都是更多的意见而不是事实。这些年我读过的大部分内容,但很难找到参考/证明。我不是TPC成员,但是他曾在TPC-H套件下测试了一个dsitributed柱存储数据库。
<强>基准强>
这些非常适合测试单个功能并且不幸地比较它们,这听起来很简单。公司将花费大量精力来获得更好的结果,有时(因此我听说)在源中实现特定功能以获得基准。关于可靠的基准测试结果总体上有很多讨论。此外,基准测试可能非常适合某些产品,但不适用于其他产品。
您的示例使用Jdbc,但并非每个数据库都有jdbc,或者更糟糕的是它可能只是启用该类应用程序的“小螺栓”。所以当嵌入所有主要用法时,通过jdbc执行基准测试sql可能会不公平/不良地描述一些解决方案。
有一些争论认为,基准测试会将供应商从实际优先事项中分散出来,他们会花费精力并仅为基准测试实现功能。
基准测试也很容易被误解,即使TPC是一套不同的基准测试,你需要根据需要选择正确的基准测试(tpc-c代表oltp,tpc -h代表dss等)
<强> TPC 强>
如果这对tpc显示为负面,请原谅我,我是专业人士。
Tpc定义了一组非常紧凑的测试要求。你必须遵循这些信件。对于tpc-h,这是你必须做的一个例子
以上内容确保阅读结果的人可以信任结果的完整性,这对公司买家来说非常有用。
Tpc是一个非盈利组织,任何人都可以加入。虽然收费,但它不是主要的障碍,除了OSS。如果你认为你可以取得非常好的成绩,或者你需要公布的结果来竞标政府合同等,你实际上只会支付这笔费用。
我看到tpc对于oss的最大问题在于它严重偏向于关系供应商,很少有oss解决方案可以满足其产品的入门标准,或者如果他们这样做,它们可能无法在每次测试中表现良好。做一个基准测试也可能会让一些团队分心。
替代tpc
当然,tpc存在替代方案,但是我所知道的还没有真正获得牵引力。主要供应商通常规定您不能对其产品进行基准测试并公布结果。所以任何新的基准都需要在政治上明确地让他们参与其中。我同意这里的供应商立场,我讨厌有人错误地实施基准测试并且报告我的产品很差。
自tpc开始以来,数据库格局已经发生了很多分裂,但许多“打赌你的业务”应用程序仍在“经典”数据库上运行,因此它们仍然占有一席之地。然而,随着nosql等的增加,有一个新的基准测试的地方,但真正的问题变成了测量 - 甚至选择xyz像'%kitten%'。或xyz喜欢'小猫%'。将对不同的解决方案产生巨大影响。如果你解决了这个问题,那么你允许(odbc,jdbc,http / ajax,嵌入式sql等)这些接口会影响性能。实际模型如关于关系模型与最终一致性模型的ACID怎么样?那些使用特定设计硬件的硬件/软件解决方案呢?
每个数据库都针对不同的需求进行了设计权衡,基准测试正在尝试平衡竞争环境,这只有在您有共同点或报告大量不同指标时才真正可行。
尝试创建替代方案的一个问题是“谁来支付”?您需要了解要执行的测试类型,然后您需要审核结果才能使其有意义。这一切都要花钱。