情况是这样的
我正在尝试从CF获取大约10k个密钥。集群规模: 10节点节点数据: 250 GB堆分配: 12 GB告密者使用:属性告密者2个机架在同一数据中心。不是的。每个节点的cf的稳定数:大约8到10
我是超列approach.Each行包含大约300个超列,在术语中包含5-10列。我正在使用10k行键和1个超列发射multiget。
当第一次触发调用时,大约需要30到50秒才能返回卡桑德拉为key cache.Then提供数据的result.After,它会在2-4秒内返回结果。
所以cassandra的读取性能阻碍了我们的项目。我正在使用phpcassa.Is,有什么方法可以调整cassandra服务器,以便我可以更快地获得结果?
超列方法是否会影响读取性能?
发布于 2012-05-25 17:07:49
超级列的使用最适合子列数量相对较少的用例。点击此处阅读更多信息:http://www.datastax.com/docs/0.8/ddl/column_family
发布于 2012-06-02 00:44:37
如果您还没有这样做,因为您正在使用phpcassa库,请确保您已经编译了Thrift库。根据phpcassa库文件夹中的“正在安装”文本文件:
使用C扩展
C扩展对phpcassa的性能至关重要。
您需要配置和make才能使用C扩展。
cd thrift/ext/thrift_protocol
phpize
./configure
make
sudo make install
将以下行添加到php.ini文件中:
extension=thrift_protocol.so
发布于 2012-11-01 12:53:05
在做了很多关于这个东西的RND之后,我们发现你没有办法让它以最优的方式工作。当cassandra第一次获取这10k行时,这将需要时间,并且没有办法对其进行优化。
1)然而,在实际中,人们访问相同记录的概率是more.So的,我们最大限度地利用密钥缓存的密钥cache.Default设置为2MB。所以我们可以将它增加到128MB,而不会出现内存问题。在数据加载之后,运行预期的查询来预热键缓存。
2) JVM在8-10 GB最好(没有数字来证明it.Just的观察结果)。
3)最重要的是,如果你使用的是物理机(不是云或虚拟机),那么一定要检查磁盘调度程序you are using.Set it NOOP,这对cassandra是有好处的,因为它从一个部分读取所有密钥,减少了磁盘头的移动。
上述更改有助于在可接受的范围内缩短查询所需的时间。
除了上述更改之外,如果您有大小较小但经常访问的CFs,请为其启用行缓存。
希望上面的信息是有用的。
https://stackoverflow.com/questions/10751490
复制相似问题