在MongoDB上使用UUID而不是字符串表示为_id的性能提升?

时间:2017-09-20 16:17:07

标签: mongodb performance key uuid

在REST应用程序中,我需要将UUID字符串表示形式(在json中收到)转换为UUID Object,以将其存储在MongoDB的_id字段中。我这样做是因为我听说在使用UUID vs String时,查找/插入时间会有性能提升。

在MongoDB上使用UUID作为_id而不是字符串表示时,是否真的有性能提升? (即使是小的性能提升也会对我产生很大的影响)

PS:我看到this post表示ObjectID的效果更好(不完全相同,不确定是否适用于UUID),但唯一的原因似乎是潜力ObjectIDString的较小尺寸。

1 个答案:

答案 0 :(得分:3)

我正在使用PyMongoUUID编码为BSON::Binary

我们可以从MongoDB doc看到:

  

为了更有效地存储集合中的UUID值   在_id索引中,将UUID存储为BSON BinData类型的值。   BinData类型的索引键可以更有效地存储   索引if:二进制子类型值在0-7或0的范围内   128-135,字节数组的长度为:0,1,2,3,4,5,6,7,   8,10,12,14,16,20,24或32。

我的UUID在此范围内,因此性能会比String表示增加。