在Cassandra中删除表或截断表,哪个更好
我们有一个用例,需要每天用Cassandra中的当前数据重新创建一个表。为此,我们应该使用drop table还是truncate table,哪种方法更有效?我们不希望备份数据等 谢谢在Cassandra中删除表或截断表,哪个更好,cassandra,Cassandra,我们有一个用例,需要每天用Cassandra中的当前数据重新创建一个表。为此,我们应该使用drop table还是truncate table,哪种方法更有效?我们不希望备份数据等 谢谢 Ankur我认为在几乎所有情况下,截断操作都比丢弃操作更安全。过去在删除/重新创建重影数据、模式不一致等方面存在一些问题。。。尽管已经有很多修复程序试图使drop/recreate更稳定,但如果您每天都在执行Truncate操作,那么Truncate应该更便宜、更稳定 Drop table删除表格和所有数据。T
Ankur我认为在几乎所有情况下,截断操作都比丢弃操作更安全。过去在删除/重新创建重影数据、模式不一致等方面存在一些问题。。。尽管已经有很多修复程序试图使drop/recreate更稳定,但如果您每天都在执行Truncate操作,那么Truncate应该更便宜、更稳定 Drop table删除表格和所有数据。Truncate清除表中的所有数据,默认情况下创建数据的快照(但不创建架构)。就效率而言,它们很接近——尽管truncate将创建快照。您可以通过在cassandra yaml配置中将auto_snapshot设置为false来禁用此功能,但它是服务器范围的。如果不太麻烦的话,我会删除并重新创建表-但如果您在删除后不等待一段时间再重新创建,我会看到一些问题。来源: 注意:默认情况下,删除或截断表时会创建快照。这需要手动清除以回收磁盘空间 手动测试也是如此
Truncate将保留模式,drop将不会。小心强> 从税务文件: 注意:TRUNCATE向所有节点发送一个JMX命令,告诉它们删除包含指定表中数据的SSTables。如果这些节点中的任何一个关闭或没有响应,该命令将失败并输出如下消息: 截断cycling.user_活动; 无法完成请求:一个或多个节点不可用
不幸的是,文档中没有说明如果
DROP
表现不同非常感谢RussS!我的一个问题是,如果我们使用truncate,它会立即创建墓碑还是删除数据?它是立即的。没有墓碑,非常感谢!正如您所提到的,我们也面临着这样一个问题,即即使在我们尝试重新创建表格时删除了表格,也不会让我们在相当长的时间内(大约5分钟)这样做。我建议您删除表格,因为这是一天一次的操作,我想您可能能够承受删除和创建之间的长时间延迟。如果没有,请执行截断,但请记住清除快照,除非禁用自动快照。谢谢Ashic。我尝试使用truncate table,但即使在cql成功完成之后,我仍然能够看到表中的记录。然后我试着放下桌子,正如你们提到的,即使在一个小时后也没有效果。我愿意使用truncate,但它似乎不能立即使用。您正在丢弃多少数据?截断应该是立即的。是否有记录,比如截短后五分钟?当你说drop无效时,你是什么意思?我们有将近40亿行,但上次运行没有成功,所以我不确定文件中有多少行。我已经等了15-20分钟,然后才开始运行升降台。还有吊床,我的意思是它不是立即太。在运行drop table之后,我等待了30分钟,仍然无法创建表,所以我运行了nodetool修复。