在postgresql中截断了一个表。如何恢复它?

时间:2016-05-16 14:50:39

标签: postgresql postgresql-9.1 postgresql-9.2

截断表tablename;

如何在dbeaver中恢复它

2 个答案:

答案 0 :(得分:1)

你做不到。请参阅doc:http://www.postgresql.org/docs/9.1/static/sql-truncate.html

  

它与每个表上的非限定DELETE具有相同的效果,但是   因为它实际上不扫描表格,所以它更快。此外,   它会立即回收磁盘空间,而不是需要后续磁盘空间   VACUUM操作。这对大型表格最有用。

空间返回操作系统,可能被新数据等占用。

答案 1 :(得分:0)

Tuncate使用文件级操作来删除数据,这有很多含义:

  1. 提交时无法恢复
  2. 这不是MVCC的安全。换句话说,其他并发事务将表视为空,尽管事务隔离级别应该让它们看到旧行。
  3. 这意味着您基本上必须从备份中恢复,这是一个很好的例子,用于警告备份不仅仅是硬件故障。如果出现管理员错误,它们也会出现(这也就是复制不是备份的原因)。

相关问题