2015-05-24 5 views
1

Я хотел бы знать, какое влияние на производительность я должен ожидать при вызове UDF (пользовательской функции), написанной на C каждый раз, когда создается или изменяется какая-либо запись (с предположением , что сам код UDFне занимает времени - Я буду оптимизировать это самостоятельно).Эффективность воздействия аэрокосмических UDF?

Предположим, у меня есть аппаратное обеспечение, способное использовать пространство имен с SSD-устойчивостью на 200k write/s, могу ли я ожидать, что по крайней мере 50 тыс. Записей с UDF запускаются каждый раз?

подвопрос: (? Переключение контекста), что может ограничить производительность пользовательских функций

Причина в том, что спрашивать Aerospike использует эти UDF, например, для больших типов данных, но они не очень эффективны в соответствии с персоналом AS (по сравнению с KVS-Ops). Мое использование - использовать UDF для поддержания широкого диапазона вторичных индексов в обновленном кластере Redis, что позволяет использовать гораздо более богатые запросы в реальном времени (например, пересечения/объединения из 5-10 вторичных индексов).

ответ

3

Лучше всего запустить тест самостоятельно. Его трудно предсказать. Но я считаю, что вы должны иметь возможность делать 50 тыс. Т/с.

Главным образом производительность UDF осуществляется из-за распределения памяти, которое происходит под капотом, перед вызовом UDF. Если вы используете простые типы данных, такие как int/string/blob, вам лучше. Если вы используете список/карту в UDF, он будет делать больше выделения памяти, что повлияет на производительность.

Смежные вопросы