导入后,CloudSQL实例的存储使用量较少

时间:2018-07-11 03:39:46

标签: postgresql google-cloud-platform google-cloud-sql

我有一个CloudSQL实例(PostgreSQL),其中包含112.7 GB数据:

enter image description here

我想将此实例中的数据传输到另一个。

我先导出,然后创建另一个实例,然后将数据导入那里。

一切顺利。但是,生成的实例的存储使用量较少,只有102 GB:

enter image description here

在日志中找不到错误。我想知道10GB数据去了哪里。

这是预期的吗?

1 个答案:

答案 0 :(得分:0)

这是由于表中的碎片导致的。对于MySQL

  

碎片的一个症状是表占用的空间比它大   “应该采取。到底有多少是很难确定的。   所有的InnoDB数据和索引都存储在B树中,并填充它们   系数可能从50%到100%不等。碎片化的另一个症状是   这样的表扫描比“应该”花费更多的时间   拿......

PostgreSQL docs中(请参见 23.1.2。恢复磁盘空间部分),说明以下内容:

  

在PostgreSQL中,行的UPDATE或DELETE不会立即   删除该行的旧版本。这种方法对于获得   多版本并发控制的优点(MVCC,请参见Chapter 13):行版本仍然可能删除时,不能删除   其他交易可见。但是最终,过时或删除了   行版本不再对任何交易有意义。空间吧   然后必须将占用的资源回收以供新行重用,以避免   磁盘空间需求无限增长。这是通过运行来完成的   真空。

还请阅读Vacuum the Dirt out of Your Database文档,以查看克服此问题的步骤。

希望这会有所帮助。