我想知道在每次创建或更改某些记录时调用用C编写的UDF(用户定义函数)时我应该期待的性能影响(使用假设,UDF 代码本身不花时间 - 我会自己优化它。
假设我的硬件能够在200k写入/ s上运行SSD持久命名空间,我是否可以预期每次运行UDF时至少有50k写入/秒?
子问题:什么可能限制UDF的性能(上下文切换?)
询问的原因是Aerospike正在使用这些UDF,例如对于大型数据类型,但根据AS员工(与KVS-Ops相比),这些数据类型的性能不高。我的用例是使用UDF在Redis群集中保持最广泛的二级索引,从而允许更丰富的实时查询(例如,5-10个二级索引的交叉点/联合)。
答案 0 :(得分:3)
最好的办法是亲自运行测试。很难预测。但我相信你应该能够做到50k tps。
主要是由于在调用UDF之前在引擎盖下发生的内存分配,UDF的性能受到影响。如果你使用简单的数据类型,如int / string / blob,那么你最好。如果在UDF中使用list / map,它将执行更多内存分配,这将影响性能。