【问题标题】:Issues with Cassandra Read PerformanceCassandra 读取性能问题
【发布时间】:2020-01-26 04:21:55
【问题描述】:

我有一个专注于 Casandra 数据检索的 C# 应用程序(Datastax 驱动程序)。这样做的主要问题之一是随着容量的增加,异步读取需要超过 60 秒的时间来响应,这会导致应用程序超时。由于这是一个数据检索请求,所以我必须等待异步执行调用完成。这有时会导致应用程序中的 TCP 套接字连接丢失。非常感谢任何解决此问题的建议。

【问题讨论】:

  • 您提供的调试信息非常少。您是否尝试过在 cqlsh 中跟踪查询?该表的 nodetool tablestats 和 tablehistograms 的输出是什么?什么是数据模型?对工作量的简要描述也会有所帮助。现代硬件上设计良好的架构应该具有个位数毫秒的响应时间。
  • 代码示例也会有所帮助
  • 如果您的查询需要 60 秒才能响应,则说明某处存在严重问题。考虑到 5 或 10 秒内的读取超时,我什至不确定这会如何发生(除非您的节点完全不堪重负,甚至无法响应 Cassandra 超时)。
  • 很可能是您没有使用按分区键读取,而是使用select * from table,或select ... from table where ... ALLOW FILTERING...
  • @AlexOtt 是的,我对所有查询都使用了 ALLOW FILTERING。为什么你认为它会成为瓶颈?

标签: c# cassandra datastax


【解决方案1】:

Cassandra 使用 Log-structured_merge-tree,它针对写入同谋进行了优化,而不是针对读取进行了优化

Read O(N) 
delete O(n) 
Write O(1)

因此,随着数据的增长,读取性能开始下降

【讨论】:

    猜你喜欢
    • 2018-03-20
    • 2016-11-29
    • 2023-03-27
    • 2016-02-10
    • 2016-08-16
    • 2017-04-23
    • 2015-09-03
    • 2012-05-31
    • 2016-01-05
    相关资源
    最近更新 更多