Let*_*SQL 2 cassandra nosql datastax scylla
现在我在我的 Cassandra system.log/debug.log 上观察到一些错误,并且节点在以下错误后突然关闭。
CorruptSSTableException 作为值长度超过最大值 287435456,这是通过 cassandra.yaml 中的 max_value_size_in_mb 设置的
在 Cassandra 文档中查看此值时发现:-
max_value_size_in_mb 该选项默认被注释掉。SSTables 中任何值的最大大小。早期检测 SSTable 损坏的安全措施。任何大于此阈值的值都会导致将 SSTable 标记为损坏。这应该是正数并且小于 2048。默认值:256
在我的情况下,这个值也是默认值,即 256。但我的问题是:-
1)这个值是什么意思?它是任何 SStables 的最大大小吗?2)为什么节点在超过此值或出现此错误后关闭?
提前致谢!
这个值是什么意思?
您的数据库文件(SSTable 之一)中的行大于允许的最大大小,或者 SSTable 文件已损坏,因为元数据包含超出合理限制的值(行大小)。
它是任何 SStables 的最大大小吗?
它是SSTable(表的一部分)中任何值(行)(单条数据)(键/值对)(元组)的最大允许大小。
注1:SSTable是数据库数据的一种存储格式。它只是对字符串(行)进行排序。通常,一个表由一组包含不同数据部分的 sstable 文件组成。
注 2:表格行在磁盘上的外观如何?:
Row [ Len: uint64_t, Data: char[Len] ]
Len must be < max_value_size_in_mb (256MB by default)
Run Code Online (Sandbox Code Playgroud)
为什么节点在超过此值或出现此错误后关闭?
如果发现 sstable 损坏,我不知道节点是否会关闭。从那时起,它可以将其标记为已损坏并忽略它。因此,它可能不相关。
基本上,如果有 1 个 sstables 损坏,那么您要么丢失数据,要么可能会看到以前的版本或已删除的行。因此,从一致性的角度来看,让客户端与损坏的表进行交互并不是一个很好的主意。但行为取决于数据库。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |