我想了解在Cassandra(v1.2)中获取大量顺序存储在磁盘中的行时涉及的开销。为Cassandra中的partitionID提取许多(500K)行的开销
下面的模式:
- 时间戳
- 设备ID
- 设备名称
- 设备所有者
- 设备颜色
PKEY(时间戳的DeviceID)。
每个记录是80个字节。
我想获取特定TimeStamp(partitionID)的所有行。
SELECT * FROM模式其中timestamp =“...”
有每个时间戳500K这样的行。我已经发现,分页处理的吞吐量要比试图一次性读取所有数据的吞吐量要好得多。因此,要获取500 K行(40 MB),使用1000/10000的页面大小,需要大约25-30秒(我正在使用Astyanax)。我有以下问题:
(A)我查询的所有数据是否会按顺序存储在磁盘中,用于特定的TimeStamp(并且是的,我已经运行了compact命令)? (B)如果对第一个qn的回答是肯定的,那么为什么我无法获得与磁盘相同的吞吐量(40 MB/s)?请注意,我能够在25-30秒内检索到40 MB的数据,这相当于1.5 MB/s。 (C)如果对上述第一个问题的回答是肯定的,那么我可以进一步加快回应吗? (D)序列化/反序列化是缓慢吞吐量的罪魁祸首吗?如果是这样,可以做些什么来完全避免它?