2013-01-14 71 views
5

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

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

回答

9

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

1. 行高速缓存:避免磁盘命中,但只有在行未经常更新时才启用。您还可以启用堆外行缓存来减少JVM堆的使用量。

2. 密钥缓存:默认启用,不需要禁用它。当行缓存未被命中时,它避免磁盘搜索。

3. 减少的memTable平齐的频率:调整memtable_total_space_in_mb,commitlog_total_space_in_mb,flush_largest_memtables_at

4. 使用LeveledCompactionStrategy:避免在多个SSTables传播的行。

+2

+1很好的回答,悲伤,看它是不能接受的。 – Jonathan

1

DataStax在基于Apache Cassandra的NoSQL数据库的最新版本中增加了内存计算功能,作为提高在线应用程序性能的驱动器的一部分。

参考:

http://www.datastax.com/2014/02/welcome-to-datastax-enterprise-4-0-and-opscenter-4-1

+0

DataStax是否已将该功能提供给Apache项目? – matt2000

+0

看起来像是通过datastax企业可用。但是,对于多个工作负载而言,这是不可取的。 http://t.co/JJG1SLEajl –