我在狼蛛中有一个空间,其中有两个 64 位数字组成的抽头:uint64,uint64
我想从两个字段对它们建立一个树索引:
s:create_index('primary', {unique = true, parts = { {field = 1, type = 'unsigned'}, {field = 2, type = 'unsigned'}} })
在这样的空间中,索引会占据相当大的一部分内存。我怎样才能尽可能准确地计算出它需要多少?有公式吗?
我在狼蛛中有一个空间,其中有两个 64 位数字组成的抽头:uint64,uint64
我想从两个字段对它们建立一个树索引:
s:create_index('primary', {unique = true, parts = { {field = 1, type = 'unsigned'}, {field = 2, type = 'unsigned'}} })
在这样的空间中,索引会占据相当大的一部分内存。我怎样才能尽可能准确地计算出它需要多少?有公式吗?
我在这里看到了两个不同的问题。
每个抽头大约 18 个字节,但不少于 48kB。TREE 索引的内存成本不取决于它建立在哪些字段上。
此类字段的索引不会在标签本身中产生额外的成本。因此,只剩下直接成本 - 标头(14 个字节)+ 由 msgpack 以数字形式打包的数组 + 舍入。由于 msgpack 的性质,它的大小可能会根据它存储的数量而有所不同,但在本示例中,它最多为 19 个字节。四舍五入 36 字节应该可以工作。这是tapla本身的大小。
狼蛛分别存储水龙头和索引。总的来说,每个条目大约需要 36 + 18 = 54 个字节。
这里有关于狼蛛消耗内存的详细信息。