注意事项
10.1 id 范围
理论上支持 0~2^64-1,但是超过2^63后,会有些问题,比如bitmap_to_array,当前我们只支持array<bigint>
,这时候会转成负数
10.2 内存和空间占用
ID 范围越大,内存和磁盘空间占用一般越大。
内存和磁盘空间占用,还与 ID 的稀疏程度有关。下面是一些模拟测试。
设计 Bitmap 需要考虑这个因素。
random_value_count | start | end | mem usage | disk size (v1) |
---|---|---|---|---|
10000 | 1 | 5000000000 | 350K | 94K |
100000 | 1 | 5000000000 | 2.1M | 647K |
1000000 | 1 | 5000000000 | 4.9M | 2.6M |
10000 | 1 | 200000000 | 104K | 43K |
100000 | 1 | 200000000 | 377K | 224K |
1000000 | 1 | 200000000 | 2.8M | 2M |
10000 | 1 | 100000000 | 63K | 32K |
100000 | 1 | 100000000 | 293K | 212K |
1000000 | 1 | 100000000 | 2.3M | 2M |
10000 | 1 | 10000000 | 20K | 21K |
100000 | 1 | 10000000 | 230K | 200K |
1000000 | 1 | 10000000 | 1.2M | 1.2M |
10.3 bitmap 导出问题
大Bitmap直接导出有可能触发Mysql包的限制,最好是使用 subdivide_bitmap 将大 Bitmap 拆成100万1个小Bitmap再导出