行缓存堆需求(Cassandra 1.0)

Mac*_*las 4 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"}
    },
Run Code Online (Sandbox Code Playgroud)

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

}
Run Code Online (Sandbox Code Playgroud)

}

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

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

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

谢谢,Maciej

jbe*_*lis 5

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