我已经测试了行缓存,并发现它需要大量的堆 - 我想验证这个理论.
这是我的测试密钥空间:{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
是的,经验法则是memtable或行缓存中的一行将占用序列化大小的8倍到12倍.如果您安装了JNA,这是默认情况下堆外缓存是1.0的一个原因:off-heap以序列化形式存储行.