我面临从表中删除所有记录的问题。
我可以使用截断表。但是截断会创建数据的快照,这在我的场景中会浪费存储空间。
如果任何节点关闭,截断也会失败。
所以我想知道是否有任何方法可以删除表中的所有记录,而无需创建在节点关闭时有效的快照。
我面临从表中删除所有记录的问题。
我可以使用截断表。但是截断会创建数据的快照,这在我的场景中会浪费存储空间。
如果任何节点关闭,截断也会失败。
所以我想知道是否有任何方法可以删除表中的所有记录,而无需创建在节点关闭时有效的快照。
要在截断之前更改创建快照的行为,您可以更改 cassandra.yaml
# Whether or not a snapshot is taken of the data before keyspace truncation
# or dropping of column families. The STRONGLY advised default of true
# should be used to provide data safety. If you set this flag to false, you will
# lose data on truncation or drop.
auto_snapshot: true
此值默认设置为 true。如果你不想要这个,你可以简单地将它设置为 false。这里只是一个小警告,这个标志是为了确保在删除或截断后,您的数据不会不假思索地丢失。因此,如果您真的想禁用该功能,请仔细考虑。
像这样简单的使用
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
public class Truncate_Table {
public static void main(String args[]){
//Query
String query = "Truncate student;";
//Creating Cluster object
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
//Creating Session object
Session session = cluster.connect("tp");
//Executing the query
session.execute(query);
System.out.println("Table truncated");
}
}
我想这会对你有所帮助