6

我想知道这是否:

$column_family->get('row_key', $columns=array('name1', 'name2'));

比我现在使用的更灵活的速度更快:

$column_family->get('row_key');

方法1当然更难实现,但它会减少负载/带宽/延迟吗?

4

2 回答 2

3

Cassandra 不是 mysql,因此那里有些东西有所不同也就不足为奇了。:)

在这种情况下,Cassandra 的稀疏行存储模型意味着对于少量列,全行版本会更快,因为 Cassandra 不需要反序列化和检查其行级列条目。

当然,对于大量列,反序列化的额外工作将再次占主导地位。

底线:担心这一点几乎可以肯定是过早的优化。如果不是,请测试。

于 2011-05-07T02:19:15.050 回答
2

第一个更快,尤其是在处理包含大量列的大型表时。

即使您只有两个名为name1and的列name2,指定它们的名称也应避免从 MySQL 端的表结构中提取列名。所以它应该比使用*选择器更快。

但是,使用PHP 中的microtime()对大型表测试您的结果,您就会明白我在说什么。当然,如果表中有 20 多列并且想要全部提取它们,则放置*比列出所有这些列名更容易,但就速度而言,列出列要快一些。

检验这个结论的最好方法是自己测试。

于 2011-05-06T17:47:30.770 回答