Write-Ahead-Log会成为Cassandra的瓶颈吗?

Will the Write-Ahead-Log become the bottleneck of Cassandra?

在Cassandra数据库中,写入需要先记录在Write Ahead Log中,然后添加到内存中的memtable中。由于Write Ahead Log是在磁盘上,虽然是顺序写入(即append only),但会不会比内存访问慢很多,成为写入的性能瓶颈?

如果我理解正确,Cassandra 支持将预写日志存储在 OS 缓存中,然后每隔预先配置的时间(比如 10 秒)将其刷新到磁盘的机制。但是,这10秒内修改的数据是不是死机了就全部丢失了?

您可以使用 commitlog-sync 配置来控制提交日志是否同步。默认情况下,它是 periodic,并且每 10 秒同步到磁盘一次(由 commitlog_sync_period_in_ms 设置控制)。

是的,如果您失去权力,提交日志中的数据就有丢失的风险。但是 Cassandra 依赖于你有多个副本这一事实,如果你没有正确设置,每个副本应该在单独的机架中(至少,如果你有额外的数据中心,更好)具有单独的电源等。