哪个在mongodb中消耗更多的内存布尔值或整数?

时间:2015-06-24 06:48:22

标签: mongodb

您好我有一个应用程序,我们以整数形式发送警报状态,可以是1或0.我使用Mongodb来存储警报状态。 Mongodb使用一种称为整数的类型,它可以存储32位或64位整数值。它还有一个名为boolean的数据类型,它存储一个True或False值。我有2,00,000条记录,警报状态为2,00,000个不同的设备。我的问题是mongo如何在其中存储布尔值(基本上是内部机制)?还在mongodb数据库中消耗较少的内存(布尔或整数)?

3 个答案:

答案 0 :(得分:1)

当您对mongodb的低级应用程序详细信息感兴趣时,我总是建议BSON specification作为参考点。

布尔值是两个字节(一个用于类型信息'boolean',一个用于值0x00 for false0x01 for true。 32位整数占用5个字节,64位整数占用9个字节,其中第一个字节用于类型,其余用于信息。

如果更改类型,性能不太可能改变,因为一旦在整个查询中CPU比较很少。

答案 1 :(得分:0)

你不会喜欢这个答案,但没关系。如果您的属性本质上是布尔值,则使用boolean,无论内部表示如何,除非您遇到一些需要优化的严重性能问题。

在内部我相信Mongo会将布尔值存储为字节或整数。

答案 2 :(得分:-1)

在MongoDB中,布尔值的大小为2个字节,而您可以选择32位整数数据类型或64位(4字节或8个字节)。

您可以在此处查看完整的数据类型列表:http://docs.mongodb.org/manual/reference/bson-types/