我有一些关于cassandra memtable的问题.我将非常感谢你的帮助.
关于记忆的事实:
1)放入RAM;
2)per-ColumnFamily结构;
3)单个列族可能存在多个memtable;
问题:
1)何时创建列族的附加记忆?需要什么条件?我假设在创建其他提交日志文件后会创建其他memtables.这是真的?
2)达到提交日志大小阈值后会发生什么?我假设将开始将memtables放入队列; 队列填充之后将开始将memtable刷新到sstable,然后删除旧的提交日志(在hdd上)和相应的memtable s(在ram中).在这种情况下,memtable内存的某些部分将一直为空,并且提交日志总是会被填充到90-100%?
3)达到记忆大小阈值时会发生什么?像以前的情况一样会开始冲到sstable吗?提交日志的某些部分也将始终为空,可记忆内存将填充高达90-100%?
4)关于memtable_allocation_type:在官方资源中 - "offheap_buffers将单元名称和值移动到DirectBuffer对象.这对读取的影响最小 - 值仍然是"实时"Java缓冲区 - 但是只有在存储大字符串时才会显着减少堆或者是blob." .DirectBuffer是什么意思?它放在java堆中?你能给出有关它的信息的网站链接吗?
非常感谢你!
G Q*_*ana 11
我建议你观看https://academy.datastax.com/courses/learning-cassandra-write-path