性能是数据库世界中历史上的热门话题之一!作为一组数据库管理员或开发人员用来测试数据库或将其与某些标准进行比较的活动,基准通常与性能平行。本文是Memgraph的两者。
以前,我们已经在Memgraph上发表了一些基准运行,该基准已被社区备受关注,并引起了更广泛的图形数据库社区的一些评论。反馈包含一些关于我们如何改善基准方法的重要建议,以确保结果遵循基准委员会的标准程序。
为了提供与其他数据库的最合理比较,我们将这些课程考虑在内并开发了Benchgraph,您可以在自己的工作量上运行基准测试。紧随其后的是community call,我们自己的MarkoBudiseliä和Ante Javor回答了社区提出的一些常见问题。为了节省您的时间,我们将讨论的关键主题重新应用于博客文章。毫无疑问,让我们跳进去。
行业标准与特定于供应商的基准
“我们社区所提出的事情之一是供应商会建立自己的基准,以在自己的数据集和行为上表现出色。而由理事会或委员会构建的行业标准基准倾向于创建不同数据库之间的更公平的比较。 Memgraph对此反馈有何看法?
行业标准和特定于供应商的基准测试在评估数据库性能中起着重要作用,并且它们与项目的相关性取决于您的特定用例和优先级。在图形数据库空间中,链接的数据基准委员会(LDBC)是一个著名的行业标准组织。 LDBC定义了特定的工作负载,这些工作负载是展示性能的基准。
包括LDBC在内的行业标准标准基准通常采用通用方法来满足各种数据库供应商,并支持任何数据库应处理的常见工作负载。它们为跨不同系统的比较提供了基线。另一方面,特定于供应商的基准测试基于特定用例采用更量身定制的方法。例如,Memgraph的基础图专注于特定于供应商的基准测试,用于诸如可变遍历,读取版比率及其变化之类的任务,使用户可以观察到特定供应商数据库中的执行差异。
> >行业标准和特定于供应商的基准同样重要,因为用户面临不同的工作负载方案并具有不同的数据优先级。
阅读与写操作如何影响性能?
- 我们社区提出的另一点是,根据不同情况下的架构实现,其中一些数据库的行为会有所不同,其中一种情况可能是您的查询兑现程度,例如您对查询的兑现程度,结果,索引等。因此,当必须将缓存无效时,诸如权利之类的事物会如何影响那些人,或者您的索引和内存不再完全有效?换句话说,如何阅读与写作影响性能?
读取操作对数据库性能的影响很大程度上取决于数据库和基础系统的体系结构。写入数据后,需要使关联的缓存无效,并且此无效的成本在不同系统之间变化。在某些工作负载(例如流式传输)中,可能会在短时间内发生大量写入,从而使缓存无效。
,缓存性能不仅受缓存本身的行为的影响,而且还受到缓存的影响。例如,缓存可能对仅阅读工作负载非常有益,但是在写入密集型方案中的查询性能会对查询性能产生负面影响。在Memgraph,为了彻底评估数据库性能,我们测试了读取和写入较重的工作量,以及两者的组合。
因此,要点是在处理每秒大量更新时,缓存效率大大降低。如果这些缓存的维护成本很高,则可能会导致整体性能较低。
长与短运行基准
- 我们的社区还提出了比较长期与短期的主题。从某种意义上说,这与上一个数据库,索引等的观点有关。
memgraph的速度来自其内存架构。因此,无需长时间的热身期或耗时的基准。传统的长期基准测试可以有很多时间来缓存查询,索引和其他优化,这可以展示数据库可实现的最佳性能。另一方面,由于持续时间有限,短期跑步的基准通常突出了性能的潜力最差。这就是为什么这两种类型的基准类似于两个极端,您的决定应取决于您项目的特定要求和优先级。 卡桑德拉(Cassandra)以每隔一段时间有一些垃圾收集问题而闻名,这意味着突然查询可以花费几秒钟而不是毫秒。而且,如果您有一个响应时间很重要的应用程序,它可以为最终用户真正酸化体验。因此,平均延迟很重要,但尾随潜伏期也很重要。对此有什么意见? 评估绩效时,人们通常会依靠均值或中位延迟,因为它们很容易获得。但是,为了全面了解现实世界的情况,尾部潜伏期提供了更广泛的观点。想象一下,您可以有效地计划和做出明智的决定,考虑到潜在的异常值和极端情况,而不是纯粹依靠平均查询执行时间。当处理快速写入的快速变化或流数据环境时,这变得尤为重要。 memgraph通过实施三层垃圾收集,使系统无缝运行并保持清洁的环境,从而增加了额外的英里。因此,总的来说,尾部潜伏期同样至关重要,因为它可以更深入地了解垃圾收集如何影响最终用户体验。 我们社区提出的最后一个话题是您是否应该在这些运行之间重新启动数据库服务器。 在生产中使用数据库时,除非存在维护问题或故障,否则通常将其设置并运行很长时间而不重新启动。但是,这种方法在进行基准时会引入挑战,因为不同的测试可能会影响彼此的结果。 为了确保准确的性能评估,重要的是在每个测试之前重新启动数据库。这样,您可以模拟最坏的情况,并避免结果中的任何偏见。在实际生产环境中,无法保证执行测试或查询的顺序,这使得在每个测试之间重新启动数据库以捕获全面的性能方案更为重要。 奖金:How to run Benchgraph on your own workload? 您是否已经在工作负载上测试过台式图?我们喜欢收到社区的反馈,因为它可以帮助我们改善和更好地为用户服务。因此,请不要犹豫在我们的Discord channel上分享您的结果,并告诉我们您希望看到什么!
尾部潜伏期与平均值
您应该在运行之间重新启动数据库吗?
结束语