Scylla 读取路径和 Cassandra 读取路径有什么区别?当我强调 Cassandra 和 Scylla 时,Scylla 的读取性能比使用 16 核和普通 HDD 的 Cassandra 差 5 倍。
与使用普通 HDD 的 Cassandra 相比,我预计 Scylla 的读取性能会更好,因为我的公司不提供 SSD。
有人可以确认一下,使用普通硬盘是否可以实现更好的读取性能?
如果是,需要对 scylla 配置进行哪些更改?请指导我!
其他一些回复侧重于写入性能,但这不是您询问的问题 - 您询问的是读取性能。
在 Cassandra 和 Scylla 中,HDD 上的未缓存读取性能必然很差,因为从磁盘读取都需要several在 HDD 上进行寻道,即使是最好的 HDD 每秒也只能进行 200 次寻道。即使使用多个此类磁盘组成的 RAID,您也很少能够执行每秒 1000 个以上的请求。由于现代多核可以比每秒 1000 个请求执行更多数量级的 CPU 工作,因此在 Scylla 和 Cassandra 情况下,您可能会看到空闲的 CPU。因此,Scylla 的主要优点是每个请求使用更少的 CPU,甚至当磁盘成为性能瓶颈时也不再重要。在这种情况下,我预计 Scylla 和 Cassandra 的性能(我假设您在谈论性能时正在测量吞吐量?)应该大致相同。
如果您仍然看到 Cassandra 的吞吐量比 Scylla 更好,那么除了其他响应中提出的一般客户端错误配置问题之外,还有几个细节可以解释原因:
如果你有少量对于可以放入内存的数据,Cassandra 的缓存策略更适合您的工作负载。 Cassandra 使用操作系统的页面缓存,它会读取整个磁盘页面,并可能在一次读取中缓存多个项目以及多个索引条目。而 Scylla 的工作方式不同,并且具有行缓存 - 仅缓存读取的特定数据。 Scylla 的缓存对于内存装不下的大量数据来说比较好,但当数据可以装进内存时就差很多,直到整个数据集都被缓存了(所有东西都被缓存之后,它又变得非常高效)。
在 HDD 上,压缩的细节对于读取性能非常重要 - 如果在一种设置中需要读取更多 sstable,则可能会增加读取次数并降低性能。这可能会根据您的压缩配置而变化,甚至会随机变化(取决于上次运行压缩的时间)。您可以通过在两个系统上进行主要压缩(“nodetoolcompact”)并随后检查读取性能来检查这是否可以解释您的性能问题。您可以将压缩策略切换为 LCS,以确保随机访问读取性能更好,但代价是更多的写入工作(在 HDD 上,这可能是一个值得的妥协)。
如果您正在测量扫描性能(读取整个表)而不是读取单个行,则其他问题就会变得相关:正如您可能听说过的那样,Scylla 将每个节点细分为分片(每个分片是一个 CPU)。这对于受 CPU 限制的工作来说非常棒,但对于扫描不太大的表可能会更糟,因为每个 sstable 现在更小,并且在需要再次查找之前可以读取的连续数据量也更少。
我不知道这些差异中的哪一个(或其他原因)导致 Scylla 中用例的性能降低,但我请记住,无论您修复什么,HDD 的性能总是会很差。通过 SDD,我们过去在单个节点上测量了每秒超过一百万个随机访问读取请求。 HDD 无法与之相媲美。如果您确实需要最佳性能或性价比,那么 SDD 确实是您的最佳选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)