表id何时更改

7cjasjjr  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(256)

system\ schema.tables和data目录中记录的表id何时更改?cassandra如何读取目录以获取最新的模式
查看数据目录cd$cassandra\u data/keyspace/我看到两个目录
drwxr-xr-x 4 cassandra用户4096 6月27日20:47设备数据-c31406e0eda011e88cce75b7a7f02232
drwxr-xr-x 3 cassandra用户4096 6月30日15:22设备数据-a0ba3490f28511e88cce75b7a7f02232
在查询表模式时,我看到

select keyspace_name, table_name, id from system_schema.tables where keyspace_name='devices' ;

keyspace_name | table_name | id
------------------------------------------------------------------------------
devices | deviceData | a0ba3490f28511e88cce75b7a7f02232

所以我的问题是:是什么导致id改变(是alter语句)以及c*如何决定使用哪个结构。

hyrbngr7

hyrbngr71#

应该只有一个表,但是如果删除表并重新创建它,将有第二个表id。
如果你打电话,也有比赛条件 CREATE TABLE 在不同的节点上并发地创建一个表id,然后与集群架构的其余部分聚合并切换到新的表id。如果在日志中看到任何cfid不匹配错误,跳转集群将解决此问题。有计划在未来的版本中修复这个问题,但是3.x仍然像这样。

camsedfj

camsedfj2#

一个表在其整个生命周期中只有一个uuid(和一个tablename uuid目录)。在执行表创建语句时,在协调器节点上分配uuid。目录是在副本处理架构更改通知时在副本上创建的。
删除表并用相同名称重新创建后,可以获得不同的tablename uuid目录。一次只有一个具有给定名称的表处于活动状态。
如果您试图在两个不同的节点上同时创建一个具有给定名称的表,那么也可以得到两个目录。但你不应该这么做(https://github.com/scylladb/scylla/issues/420)
参考

相关问题