Cassandra 内存配置

标签 cassandra

我们目前正在评估 Apache Cassandra 1.2 作为大规模数据处理解决方案的使用。由于我们的应用程序是读取密集型的,并且为了向用户提供尽可能快的响应时间,我们希望配置 Apache Cassandra 以将所有数据保存在内存中。

在所有列族上将存储选项缓存设置为 rows_only 并为每个 Cassandra 节点提供足够的内存来保存其数据部分是否足够?或者 Cassandra 是否还有其他可能性?

最佳答案

读性能调优比写复杂得多。根据我的经验,您可以考虑一些因素。有些观点与内存无关,但它们也有助于提高读取性能。

1. 行缓存 : 避免磁盘命中,但仅当行不经常更新时才启用它。您还可以启用堆外行缓存以减少 JVM 堆使用。

2. key 缓存 : 默认开启,无需关闭。它避免在行缓存未命中时进行磁盘搜索。

3. 降低memtable刷新频率 : 调整 memtable_total_space_in_mb、commitlog_total_space_in_mb、flush_largest_memtables_at

4. 使用 LeveledCompactionStrategy : 避免跨多个 SSTable 分布一行。

关于Cassandra 内存配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320438/

相关文章:

java - 未找到请求的操作的编解码器 : [map<varchar, int> <-> java.util.Map];问题 Apache Cassandra

mongodb - NoSQL 数据库之间有什么区别,它们与传统关系数据库有何不同?

java - 通过程序或命令获取mesospehere dcos下运行的服务IP端口

database - Solandra/Elastic Search - 全文搜索(使用 Cassandra)

dictionary - Cassandra 映射可以保留 null 值

python - Flask:导入错误:无法导入名称 'db'

postgresql - 用于大数据导入和快速查找的 SQL 或 noSQL 数据库?

java - 如何创建 Cassandra ITrigger 析构函数?

java - 用于获取删除的行和列值的 Cassandra 示例触发器

docker - 如何为包含模式的 cassandra(或任何数据库)创建 Dockerfile?