首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scylla读路径和cassandra读路径有什么不同?

scylla读路径和cassandra读路径有什么不同?
EN

Stack Overflow用户
提问于 2020-01-10 16:31:58
回答 5查看 688关注 0票数 5

Scylla读路径和Cassandra读路径有什么不同?当我强调Cassandra和Scylla时,Scylla的读取性能比使用16核和普通硬盘的Cassandra差5倍。

我希望与使用普通硬盘的Cassandra相比,在Scylla上的阅读性能更好,因为我的公司不提供SSD。

有没有人能确认一下,有没有可能用普通硬盘实现更好的读取性能?

如果是,需要对scylla配置进行哪些更改?请给我指引!

EN

回答 5

Stack Overflow用户

发布于 2020-01-23 21:11:50

其他一些回答集中在写性能上,但这不是你所问的--你问的是读。

在硬盘上的非缓存读取性能在Cassandra和Scylla中肯定会很差,因为从磁盘读取每个都需要在硬盘上执行多次寻道,而且即使是最好的硬盘也不能超过每秒200次寻道。即使有几个这样的磁盘的RAID,您也很少能够做超过每秒1000个请求。由于现代多核可以完成比每秒1000个请求多几个数量级的CPU工作,因此在Scylla和Cassandra的情况下,您可能会看到空闲的CPU。因此,当磁盘成为性能瓶颈时,Scylla的主要优势,即每次请求使用的CPU要少得多,甚至都无关紧要。在这种情况下,我期望Scylla和Cassandra的性能(我假设您在谈论性能时是在测量吞吐量?)应该大致相同。

但是,如果您看到Cassandra的吞吐量比Scylla更好,那么除了其他响应中提出的一般客户端错误配置问题之外,还有几个细节可以解释原因:

Cassandra

  • 如果你的数据量很小,可以放在内存中,那么Cassandra的缓存策略更适合你的工作负载。Cassandra使用操作系统的页面缓存,它读取整个磁盘页面,并可能在一次读取中缓存多个项目,以及多个索引项。而Scylla的工作方式不同,并且有一个行缓存-只缓存特定的数据读取。Scylla的缓存对于不能放入内存的大量数据更好,但当数据可以放入内存时更糟糕,直到整个数据集都被缓存(缓存所有内容之后,它又变得非常高效)。

  • On HDD,压缩的细节对于读取性能非常重要-如果在一个设置中有更多的稳定数据要读取,它可能会增加读取次数并降低性能。这可以根据您的压缩配置进行更改,甚至可以随机更改(取决于上次运行压缩的时间)。您可以通过在两个系统上执行主要压缩("nodetool compact")并在之后检查读取性能来检查这是否解释了您的性能问题。您可以将压缩策略切换到LCS,以确保随机访问读取性能更好,但代价是更多的写入工作(在HDD上,这可能是一个值得您测量扫描性能(读取整个表)的compromise).

  • If ),而不是读取单个行,其他问题变得相关:正如您可能听说过的,Scylla将每个节点细分为分片(每个分片是一个单独的CPU)。这对于CPU有限的工作来说是非常棒的,但是对于扫描不是很大的表来说可能更糟,因为现在每个sstable都更小了,在需要再次查找之前可以读取的连续数据量也更少了。

我不知道这些差异中的哪一个-或其他什么-导致你的用例在Scylla中的性能较低,但我请记住,无论你修复什么,你的性能在硬盘上总是不好的。使用SDDs,我们在过去测量了单个节点上每秒超过一百万个随机访问读请求。硬盘不能与之接近。如果您确实需要最佳的性能或性价比,SDDs确实是最佳选择。

票数 5
EN

Stack Overflow用户

发布于 2020-01-11 03:21:41

你不能从你的Scylla集群中获得最大收益的原因可能有很多。

  1. 来自客户端/加载器的并发连接数不够高,或者您没有使用足够数量的加载器。在这种情况下,一些分片将完成所有工作,而其他分片将大部分处于空闲状态。
  2. Scylla likes的每个分片至少有2个连接(您可以在/etc/scylla.d/cpuset.conf)
  3. What's中查看分片的数量和数据集的大小?您是否正在读取大量分区,还是只读取了几个分区?你可能遇到了一个热分区的情况

我强烈建议您阅读以下文档,它们将为您提供更多的见解:

票数 3
EN

Stack Overflow用户

发布于 2020-01-11 17:25:46

@Sateesh,我想补充@TomerSan的答案,即Cassandra和ScyllaDB使用相同的磁盘存储架构(LSM)。这意味着它们具有相对相同的磁盘访问模式,因为算法基本相同。LSM树的构建思想是,没有必要进行即时就地更新。它由不可变的数据桶组成,这些数据桶是磁盘上的大型连续数据片段。这意味着更少的随机IO,更多的顺序IO,对于HDD来说工作得很好(不包括现代数据库实现所利用的并行性)。

所有上述情况意味着,您看到的差异不是由这些数据库如何使用磁盘的差异引起的。它必须与配置差异和下面发生的事情有关。也许ScyllaDB试图利用更多的并行性,或者更积极地进行压缩。那得看情况。

为了能够说出任何具体的东西,请分享您的测试、环境和配置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59677972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档