scylla读取路径和cassandra读取路径有什么区别?

2023-11-27

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 更好,那么除了其他响应中提出的一般客户端错误配置问题之外,还有几个细节可以解释原因:

  1. 如果你有少量对于可以放入内存的数据,Cassandra 的缓存策略更适合您的工作负载。 Cassandra 使用操作系统的页面缓存,它会读取整个磁盘页面,并可能在一次读取中缓存多个项目以及多个索引条目。而 Scylla 的工作方式不同,并且具有行缓存 - 仅缓存读取的特定数据。 Scylla 的缓存对于内存装不下的大量数据来说比较好,但当数据可以装进内存时就差很多,直到整个数据集都被缓存了(所有东西都被缓存之后,它又变得非常高效)。

  2. 在 HDD 上,压缩的细节对于读取性能非常重要 - 如果在一种设置中需要读取更多 sstable,则可能会增加读取次数并降低性能。这可能会根据您的压缩配置而变化,甚至会随机变化(取决于上次运行压缩的时间)。您可以通过在两个系统上进行主要压缩(“nodetoolcompact”)并随后检查读取性能来检查这是否可以解释您的性能问题。您可以将压缩策略切换为 LCS,以确保随机访问读取性能更好,但代价是更多的写入工作(在 HDD 上,这可能是一个值得的妥协)。

  3. 如果您正在测量扫描性能(读取整个表)而不是读取单个行,则其他问题就会变得相关:正如您可能听说过的那样,Scylla 将每个节点细分为分片(每个分片是一个 CPU)。这对于受 CPU 限制的工作来说非常棒,但对于扫描不太大的表可能会更糟,因为每个 sstable 现在更小,并且在需要再次查找之前可以读取的连续数据量也更少。

我不知道这些差异中的哪一个(或其他原因)导致 Scylla 中用例的性能降低,但我请记住,无论您修复什么,HDD 的性能总是会很差。通过 SDD,我们过去在单个节点上测量了每秒超过一百万个随机访问读取请求。 HDD 无法与之相媲美。如果您确实需要最佳性能或性价比,那么 SDD 确实是您的最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scylla读取路径和cassandra读取路径有什么区别? 的相关文章

随机推荐

  • Microsoft Bot Framework - 机器人进入睡眠状态。有办法预防吗?

    我的基于机器人框架的机器人运行得很好 但是 当我在一段时间不活动 假设一天 后首次与机器人交互时 机器人似乎需要很长时间 大约 10 45 秒 才能发回其第一个回复 回复之后 回复时间又恢复得很好了 对我来说 后端服务似乎进入某种睡眠模式
  • 如何在不使用 setter 的情况下为类变量设置值

    我想插入一个值到Object变量而不使用设置器 如果可以的话怎么可能 这是一个例子 Class X String variableName getters and setters 现在我有一个函数 其中包含variable name the
  • FileProvider.getUriForFile 返回 NullPointerException

    我正在尝试编写我的第一个 Android 应用程序 其中涉及拍照并用它做一些事情 在查看了几个在线教程后 我整理了一些代码 但每当单击按钮时都会收到以下 NullPointerException 10 03 14 48 00 284 263
  • 如何在C89中获得SIZE_MAX

    我想得到SIZE MAX in C89 我想到了下面的方法来查找SIZE MAX const size t SIZE MAX 1 由于标准 6 2 1 2 ANSI C 规定 当有符号整数转换为相同或更大大小的无符号整数时 如果有符号整数的
  • 条件检查:if(x==0) 与 if(!x)

    有什么区别if x 0 vs if x 或者它们总是等价的 对于不同的 C 内置类型x bool int char pointer iostream 假设存在从类型到支持的类型的转换if x or if x 那么只要没有不同的转换opera
  • 有没有办法在 Spring Webflux 和 Spring Data React 中实现分页

    我试图理解 spring 5 的反应部分 我创建了简单的休息端点来使用 spring 查找所有实体web flux和 spring data reactive mongo 但没有看到任何如何实现分页的方法 这是我在 Kotlin 中的简单示
  • Hibernate:无法访问 TransactionManager 或 UserTransaction 来进行物理事务委托

    我使用 Servlet PostgreSQL 和 Hibernate 以及 EntityManager 来构建 Web 应用程序 一切正常 直到我将项目移动到基于 Maven 的项目 现在 每次我尝试从 EntityManagerFacto
  • 如何将sql DATE映射到LocalDate

    我想存储一个LocalDate in a DATE列并按原样检索它 两个都DATE and LocalDate根据定义 它们是 本地 类型 因此 概念timezone不应以任何方式干涉 下面的代码是一个最小的示例 它创建一个带有DATE内存
  • 生成随机唯一数字的性能问题

    我遇到一种情况 我需要创建数以万计的唯一数字 但是这些数字必须是 9 位数字并且不能包含任何 0 我当前的方法是生成 9 个数字 1 9 并将它们连接在一起 如果该数字尚未在列表中 则将其添加到列表中 例如 public void gene
  • 使用 Unity IoC 注册和解析 SignalR 集线器

    我想我错过了一些非常简单的东西 也许只是需要一双新的眼睛 我有一个 ASP NET MVC 应用程序 在该应用程序中 我使用 Unity 作为 IoC 来处理依赖项注入 我的每个存储库都需要注入一个数据库工厂 并且每个数据库工厂都需要注入一
  • 如何缓存来自 Web 服务器的 okHTTP 响应?

    我想知道如何缓存来自Web服务器的okHTTP响应 返回json数据 我希望我的应用程序下载 RecycleView 所需的所有数据 并在用户第一次运行该应用程序时对其进行缓存 如果数据未更改 则避免从 Web 服务器重新下载和解析所有相同
  • 更好的解决方案而不是 Java 中的嵌套同步块?

    我有一个Bank类有一个列表Account 该银行有一个transfer 将价值从一个帐户转移到另一个帐户的方法 这个想法是锁定两个from and to转账内的账户 为了解决这个问题 我有以下代码 请记住 这是一个非常简单的示例 因为它只
  • React Native - 渲染没有返回任何内容

    我的应用程序存储在 src index js 中 但我还有一个 App js 和一个 index js 我不知道它们之间的区别 我认为这就是我收到此错误的原因 index js import AppRegistry from react n
  • Restful API认证推荐?

    我正在开发几个 RESTful API 供第三方调用 这些 API 需要身份验证 基于 apikey 和密钥 和授权 基于 HTTP 方法和 URI 是否有任何我们可以重用的现有软件会阻止我推出我们自己的安全层实现 HTTP 为您提供了对此
  • Python 中的小数模块和复数

    有没有办法使用 python 以超过浮点精度的方式操作复数 例如 为了获得更好的实数精度 我可以轻松使用Decimal模块 但它似乎不适用于复数 免责声明 我维护 gmpy2 gmpy2支持扩展精度整数 有理数 实数和复数 它还支持多种科学
  • 如何通过谷歌日历API“添加访客”到活动?

    您能给我一个关于如何通过 google calendar api 共享单个事件的提示吗 That is I d like to invite other users to see the event programmatically wit
  • 哈希键中的 JavaScript 关键字

    In V8基于 JS 引擎 您可以在属性键中使用不带引号的关键字 例如 delete 1 而在Rhino或其他JS引擎中 它会抛出错误 这怎么可能 正确的行为应该是什么 spaceman spaceman laptop rhino Rhin
  • 使用 JavaScript 创建 Instagram 式的过滤器?

    我可以使用 JavaScript 创建 Instagram 风格的过滤器吗 图像可以在客户端或服务器端 node js 进行处理 我可以用 css 覆盖一些 png 和 box shadows 以获得有限数量的类似效果 但我想知道是否有任何
  • Firebase 云消息传递 click_action 格式是否特定于平台?

    我正在使用 Firebase Cloud Messaging 向我的应用程序的客户端发送通知 客户端可以是三个受支持平台 ios android web 中的任何一个 我希望用户能够单击通知来启动应用程序 为此 我必须在通知中指定 clic
  • scylla读取路径和cassandra读取路径有什么区别?

    Scylla 读取路径和 Cassandra 读取路径有什么区别 当我强调 Cassandra 和 Scylla 时 Scylla 的读取性能比使用 16 核和普通 HDD 的 Cassandra 差 5 倍 与使用普通 HDD 的 Cas