Селективно попасть в Кассандру быстрее обычного?

Я хотел бы знать, если это:

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

Чем быстрее, тем более гибким я получаю сейчас:

$column_family->get('row_key');

Конечно, метод 1 сложнее реализовать, но даст ли он меньшую нагрузку / пропускную способность / задержку?

2 ответа

Решение

Первый - быстрее, особенно если вы работаете с большими таблицами, которые содержат много столбцов.

Даже у вас есть только две колонки под названием name1 а также name2указав их имена, следует избегать извлечения имен столбцов из структуры таблицы на стороне MySQL. Так что это должно быть быстрее, чем при использовании * селектор.

Тем не менее, проверьте свои результаты с помощью microtime() в PHP на больших таблицах, и вы поймете, о чем я говорю. Конечно, если у вас есть более 20 столбцов в таблице, и вы хотите извлечь их все, их легче поместить * чем перечислять все эти имена столбцов, но с точки зрения скорости, перечисление столбцов немного быстрее.

Лучший способ проверить этот вывод, это проверить его самостоятельно.

Кассандра не MySQL, поэтому не удивительно, что некоторые вещи там другие.:)

В этом случае модель хранения разреженных строк в Cassandra означает, что для небольшого числа столбцов полная версия будет быстрее, поскольку Cassandra не нужно десериализовывать и проверять записи столбцов на уровне строк.

Конечно, для большего количества столбцов дополнительная работа по десериализации больше, чем вам нужно, снова будет доминировать.

Итог: беспокоиться об этом - почти наверняка преждевременная оптимизация. Когда это не так, проверьте.

Другие вопросы по тегам