我试图找到cassandra键空间占用的总物理大小.
我有一个msg生成器,它将很多消息转储到cassandra.我想找出cassandra表中消息的总物理大小.
当我做du -h /mnt/data/keyspacelinux时只说12kb.我确信数据大小远大于此.数据的其余部分必须要么是memtables 还是应该在压实.
如何找到该密钥空间中cassandra占用的总空间?
我试过了
nodetool cfstats <keyspace>
Run Code Online (Sandbox Code Playgroud)
但它只给我那个特定的节点.并且字节存在于memtable中.我实际上想要在群集中的所有节点上实际写入磁盘的键空间的总大小.有没有命令找到这个?
谢谢您的帮助.
SStables是不可变的 - 一旦memtable被刷新到磁盘,它将被删除,直到它被删除(过期)或压缩.压缩是将sstables组合在一起的过程.当您的工作负载更新时,这很重要,并且您可能在SSTable中存储了多个CQL行实例(请参阅每次读入的sstables nodetool cfhistograms).当您去读取该行时,您可能必须扫描多个sstables以查找最新版本的数据(在c*last write wins中).当我们压缩时,我们可能占用磁盘上的额外空间(特别是大小分层压缩,这可能需要达到 - 这是理论上的最大值 - 压缩时数据大小的50%)因此保持可用磁盘空间非常重要.但是,压缩不会从密钥空间目录中获取数据.这不是您的数据所在.
您怀疑尚未刷新到磁盘的数据必须位于memtables中.一旦你的提交日志填满(2.1中的默认1gb或2.1中的8gb)或者memtables变得太大,这个数据就会变成磁盘 - memtable_total_space_in_mb.
如果您想在sstables中查看数据,可以手动刷新它:
nodetool flush
并且您的memtables将以SSTables的形式放入您的KS目录中.或者只是耐心等待,直到你达到commitlog或memtable阈值.
是的,您的可记忆数据也存储在commitlog中.如果您的计算机断电等,已写入的数据仍会保留到磁盘,并且启动时将重播提交日志数据!
| 归档时间: |
|
| 查看次数: |
11365 次 |
| 最近记录: |