cassandra - 如何通过跟踪查询来解释 cassandra 的一致性
问题描述
即使我的查询没有选项 IF EXISTS 和 IF NOT EXISTS,您能否提出建议。仍在查询跟踪结果中显示了我们想要的一致性级别“QUORUM”
但它也显示'serial_consistency_level':'SERIAL',这是什么行为
session_id | client | command | coordinator | duration | parameters | request | started_at
--------------------------------------+-------------+---------+-------------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+---------------------------------
278a2000-3dfb-11e9-b459-9775e6c46fc6 | 10.244.*.* | QUERY | 10.244.*.* | 3338 |
`
`{'bound_var_0_stream_id': '''3c17230d-ea24-4ff7-9599-352fef883b31''',
'bound_var_1_property_name': '''Location:rxRSSI''',
'bound_var_2_shard_date': '2019-03-03T00:00:00.000Z',
'bound_var_3_time': '2019-03-03T21:27:30.749Z',
'bound_var_4_source_id': '''fe30653c-467f-401a-9646-67b10378e1c9''',
'bound_var_5_time_lag': '1328',
'bound_var_6_property_class': '''java.lang.Integer''',
'bound_var_7_property_type': '''ByteType''',
'bound_var_8_property_value': '''-44''',
'consistency_level': 'LOCAL_QUORUM',
'page_size': '5000',
'query': 'INSERT INTO "cloudleaf"."stream_48" ("stream_id", "property_name", "shard_date", "time", "source_id", "time_lag", "property_class", "property_type", "property_value")
VALUES (:"stream_id", :"property_name", :"shard_date", :"time", :"source_id", :"time_lag", :"property_class", :"property_type", :"property_value")
USING TTL 432000',
'serial_consistency_level': 'SERIAL'}
解决方案
IF EXISTS
并IF NOT EXISTS
触发轻量级事务,该事务可以具有两个一致性级别之一SERIAL
或LOCAL_SERIAL
. 这些定义如下:
SERIAL
:通过防止无条件更新实现轻量级事务的线性化一致性。此一致性级别仅用于轻量级事务。相当于法定人数。
LOCAL_SERIAL
: 与 SERIAL 相同,但仅限于数据中心。必须将条件写入写入同一数据中心内的法定副本节点上的提交日志和内存表。与 SERIAL 相同,但用于在本地(在单个数据中心内)保持一致性。等效于 LOCAL_QUORUM。
请参阅:https ://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlConfigSerialConsistency.html
推荐阅读
- python - 连接两个数据框的问题。两者都具有相同的行数,但它们不能完美地合并
- kubernetes-helm - 嵌套在 helm 图表表达式中
- r - 在数字字段的每个级别上回归的线性模型
- linux - 为什么 jq 有时需要过滤器表达式,有时不需要?
- c++ - C++:如何实现唯一所有权但非唯一线程安全弱访问
- javascript - 问题从服务器获取错误 - 而不是从 axios 获取一般错误
- vue.js - Vue 滚动到组件之间的锚点
- firebase - 使用streambuilder(flutter)从firestore中删除文档时显示错误
- amazon-s3 - 将大小为 8TB 的本地 Oracle 数据库迁移到 AWS RDS Oracle
- javascript - Mongoose 不验证嵌套数组模式