Селективно попасть в Кассандру быстрее обычного?
Я хотел бы знать, если это:
$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 не нужно десериализовывать и проверять записи столбцов на уровне строк.
Конечно, для большего количества столбцов дополнительная работа по десериализации больше, чем вам нужно, снова будет доминировать.
Итог: беспокоиться об этом - почти наверняка преждевременная оптимизация. Когда это не так, проверьте.