行缓存堆需求(Cassandra 1.0)

时间:2011-11-02 11:38:57

标签: cassandra

我测试了行缓存,并发现它需要大量的堆 - 我想验证这个理论。

这是我的测试密钥空间: {      TestCF:{

    row_key_1: {
        { clientKey: "MyTestCluientKey" },
        { tokenSecret: "kd94hf93k423kf44" },
        { verifier: "hfdp7dh39dks9884" },
        { callbackUrl: "http%3A%2F%2Fprinter.test.com%2Fready" },
        { accountId: "234567876545"},
        { mytestResourceId: "ADB112"},
        { dataTimestamp: "1308903420400" },
        { dataType: "ACCESS_PERMANENT"}
    },
    row_key_2: {
        { clientKey: "MyTestCluientKey" },
        { tokenSecret: "qdqergvhetyhvetyh" },
        { verifier: "wtrgvebyjnrnuiucewrqxcc" },
        { callbackUrl: "http%3A%2F%2Fprinter.test.com%2Fready" },
        { accountId: "23456789746534"},
        { mytestResourceId: "DQERGCWRTHB"},
        { dataTimestamp: "130890342333200" },
        { dataType: "ACCESS_LIMITED"}
    },

...         row_key_x:{     ....         },

}

}

CF中的每一行:TestCF包含8列。行缓存已启用,密钥缓存已禁用。行命中率0.99 - 这是只读测试。

我的测试将1.500.000行加载到缓存中 - 这会分配大约3.5GB的堆 - 这大约是2KB的单行 - 这很多......

是否有可能,单行(8列)可以分配大约2KB的堆?

谢谢你, 马切伊

1 个答案:

答案 0 :(得分:5)

是的,经验法则是memtable或行缓存中的一行将占用序列化大小的8倍到12倍。如果您安装了JNA,这就是堆外缓存是1.0中的默认值的一个原因:off-heap以序列化形式存储行。