0 batch-processing readwritelock cassandra
我正在做一个我们使用Cassandra的项目,而且我已经陷入了优化点.我们想要改变数据库结构,因为读取操作对Cassandra来说是一个相当大的负载.
我搜索了文档和论坛的答案,但我找不到下面问题的明确答案.
目前我们小批量写入Cassandra,阅读将不断发生.我们希望使批次更大,所以我们可能每10-15分钟左右改变一半.据我所知,Cassandra只在应用写入操作时锁定行.但这是真的吗?或者在写入时锁定整个表格.并且(可能有点愚蠢的问题)你可以在有写锁时阅读吗?(因为当只有一个写锁定权时你有可能仍然可以阅读吗?).
文档没有显示这种流程,这个问题似乎从未被问过.提前致谢!
卡桑德拉没有锁定行
在Cassandra中,批次用于实现原子性.原子意味着如果批次中的任何一个成功,则所有批次都将成功.
为了实现原子性,默认情况下,Cassandra首先将序列化批处理写入批处理系统表,该表使用序列化批处理作为blob数据.成功编写并保留(或提示)批处理中的行后,将删除批处理日志数据
虽然原子批次保证了原子性.没有批次隔离.客户端能够从批处理中读取第一个更新的行,而其他行仍在服务器上更新.但是,分区键中的事务行更新是隔离的:客户端无法读取部分更新.
资料来源:http://docs.datastax.com/en/cql/3.1/cql/cql_reference/batch_r.html
另一件事建议批量大小必须小.有两个配置属性cassandra.yaml,不建议更改 batch_size_warn_threshold_in_kb和batch_size_fail_threshold_in_kb
默认值 :
batch_size_warn_threshold_in_kb: 5
batch_size_fail_threshold_in_kb: 50
Run Code Online (Sandbox Code Playgroud)
因此,当您的批量大小为5k时,将记录一个警告,当批量大小为50k或更大时,您的批次将失败.
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |