属性设置 格式int8 int16 int32 int64 存储空间有没有差异?

  • nebula 版本:3.5.0
  • 部署方式:单机
  • 安装方式:Docker
  • 是否上生产环境:N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述
    有看到当使用 nGQL 语句读取 INT8 类型的属性时,获取到的值的类型为 INT64。那么请问相同的数字,如100,分别属性设为64 位整数(INT64)、32 位整数(INT32)、16 位整数(INT16)和 8 位整数(INT8)时,占据的内存空间会有差别吗,即数据会被补全吗?
1 个赞

下面是 3.x 版本在内存里面存储数据的代码,其中整形数都会被当作 int64_t 来存储,占据的空间都是 8 个 bytes。

  union Storage {
    NullType nVal;
    bool bVal;
    int64_t iVal;
    double fVal;
    std::unique_ptr<std::string> sVal;
    Date dVal;
    Time tVal;
    DateTime dtVal;
    Vertex* vVal;
    Edge* eVal;
    std::unique_ptr<Path> pVal;
    std::unique_ptr<List> lVal;
    std::unique_ptr<Map> mVal;
    std::unique_ptr<Set> uVal;
    std::unique_ptr<DataSet> gVal;
    std::unique_ptr<Geography> ggVal;
    std::unique_ptr<Duration> duVal;

    Storage() {}
    ~Storage() {}
  } value_;
2 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。