Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Cassandra中删除表或截断表,哪个更好_Cassandra - Fatal编程技术网

在Cassandra中删除表或截断表,哪个更好

在Cassandra中删除表或截断表,哪个更好,cassandra,Cassandra,我们有一个用例,需要每天用Cassandra中的当前数据重新创建一个表。为此,我们应该使用drop table还是truncate table,哪种方法更有效?我们不希望备份数据等 谢谢 Ankur我认为在几乎所有情况下,截断操作都比丢弃操作更安全。过去在删除/重新创建重影数据、模式不一致等方面存在一些问题。。。尽管已经有很多修复程序试图使drop/recreate更稳定,但如果您每天都在执行Truncate操作,那么Truncate应该更便宜、更稳定 Drop table删除表格和所有数据。T

我们有一个用例,需要每天用Cassandra中的当前数据重新创建一个表。为此,我们应该使用drop table还是truncate table,哪种方法更有效?我们不希望备份数据等

谢谢
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修复。